DNS 服务器与 DHCP 服务器详解及配置指南

文章目录

  • [DNS 服务器与 DHCP 服务器详解及配置指南](#DNS 服务器与 DHCP 服务器详解及配置指南)
    • [一、DNS 服务器](#一、DNS 服务器)
      • [1. DNS 服务基础](#1. DNS 服务基础)
        • [1.1 DNS 层次结构](#1.1 DNS 层次结构)
        • [1.2 DNS 资源记录](#1.2 DNS 资源记录)
      • [2. 配置权威名称服务器(BIND)](#2. 配置权威名称服务器(BIND))
        • [2.1 准备工作](#2.1 准备工作)
        • [2.2 配置 BIND 核心参数](#2.2 配置 BIND 核心参数)
          • [2.2.1 定义地址匹配列表(ACL)](#2.2.1 定义地址匹配列表(ACL))
          • [2.2.2 配置访问控制](#2.2.2 配置访问控制)
        • [2.3 配置正向区域文件(liujn.cloud.zone)](#2.3 配置正向区域文件(liujn.cloud.zone))
        • [2.4 配置反向区域文件(10.1.8.zone)](#2.4 配置反向区域文件(10.1.8.zone))
        • [2.5 启动并验证](#2.5 启动并验证)
    • [二、DHCP 服务器](#二、DHCP 服务器)
      • [1. DHCP 服务器部署(基于 dhcpd)](#1. DHCP 服务器部署(基于 dhcpd))
        • [1.1 安装与基础配置](#1.1 安装与基础配置)
        • [1.2 基于 MAC 地址预留 IP](#1.2 基于 MAC 地址预留 IP)

DNS 服务器与 DHCP 服务器详解及配置指南

一、DNS 服务器

DNS(Domain Name System,域名系统)是互联网的核心服务之一,用于将易于记忆的域名转换为计算机可识别的 IP 地址,同时也是存储网络主机和资源目录的分层命名系统。

1. DNS 服务基础

1.1 DNS 层次结构

DNS 采用分层结构,从上到下依次为:

  • 根域 :层次结构最顶层,用.表示;
  • 顶级域 :如.com.net.org等;
  • 二级域 :如liujn.cloudredhat.com,由组织或个人使用;
  • 子域 :二级域的子树,如lab.liujn.cloudliujn.cloud的子域。
1.2 DNS 资源记录

DNS 资源记录(RR)是 DNS 区域中存储信息的基本单位,格式为:

bash 复制代码
owner-name			TTL 	class 	type 	data
# 示例:server.liujn.cloud. 	300 	IN 		A 		192.168.1.10

各字段含义:

  • owner-name:资源记录对应的名称;
  • TTL:缓存时间(秒),表示记录在 DNS 解析器中缓存的时长;
  • class:几乎均为IN(互联网);
  • type:记录类型,常见类型如下:
记录类型 作用 示例
A 将主机名映射到 IPv4 地址 server.liujn.cloud. 86400 IN A 172.25.254.254
AAAA 将主机名映射到 IPv6 地址 a.root-servers.net. 604800 IN AAAA 2001:503:ba3e::2:30
CNAME 将一个名称别名到另一个规范名称(需最终解析为 A/AAAA 记录) www-dev.liujn.cloud. 30 IN CNAME lab.liujn.cloud.
MX 指定接收域名邮件的邮件服务器(优先级:数字越小越优先) liujn.cloud. 86400 IN MX 10 mail.liujn.cloud.
PTR 将 IP 地址反向映射到主机名(用于反向解析) 10.8.1.10.in-addr.arpa. 3600 IN PTR server.liujn.cloud.
SOA 起始授权机构记录,每个区域必须包含,定义区域基本信息 liujn.cloud. 86400 IN SOA dns.liujn.cloud. root.dns.liujn.cloud. (2024010101 3600 300 604800 60)
NS 指定区域的权威名称服务器 liujn.cloud. 86400 IN NS dns.liujn.cloud.

2. 配置权威名称服务器(BIND)

权威名称服务器负责存储并提供特定域名的 DNS 记录,以下以liujn.cloud域为例,基于 BIND 工具配置。

2.1 准备工作
  1. 安装 BIND:dnf install -y bind bind-utils
  2. 创建区域文件目录并设置权限:
bash 复制代码
touch /var/named/liujn.cloud.zone  # 正向区域文件(域名→IP)
touch /var/named/10.1.8.zone       # 反向区域文件(IP→域名)
chmod 640 /var/named/*.zone        # 权限设置
chown root:named /var/named/*.zone # 属主属组设置
chcon -t named_zone_t /var/named/*.zone  # SELinux标签(若启用)
2.2 配置 BIND 核心参数

BIND 主要配置文件为/etc/named.conf,需完成以下关键配置:

2.2.1 定义地址匹配列表(ACL)

在配置文件开头使用acl指令定义 IP 地址或网络列表,简化访问控制配置:

bash 复制代码
[root@server ~]# vim /etc/named.conf
#2.1 增加监听ip
        listen-on port 53 { 127.0.0.1;10.1.8.8; };

#2.2 放行客户端
        allow-query     { localhost;10.1.8.0/24; };
     // allow-query     { localhost;any; };

#2.3 关闭安全认证
        dnssec-enable yes;
        dnssec-validation no;

#2.4 最后添加正向解析和反向解析配置

zone "liujn.cloud." IN {
        type master;
        file "liujn.cloud.zone";
};

zone "8.1.10.in-addr.arpa" IN {
    type master;
    file "10.1.8.zone";
};

BIND 内置四个预定义 ACL:

ACL 描述
none 不匹配任何主机
any 匹配所有主机
localhost 匹配 DNS 服务器自身的所有 IP 地址
localnets 匹配 DNS 服务器所在的本地子网
2.2.2 配置访问控制

options块中配置客户端访问权限:

bash 复制代码
options {
    # 监听地址(本地回环及服务器IP)
    listen-on port 53 { 127.0.0.1; 10.1.8.8; };
    # 允许所有主机查询(公开权威服务器需设置)
    allow-query { any; };
    # 权威服务器建议关闭递归,防止攻击
    recursion no;
    # 限制区域传输(仅允许从服务器和本地主机)
    allow-transfer { trusted-nets; localhost; };
};
2.3 配置正向区域文件(liujn.cloud.zone)

正向区域文件用于将域名映射到 IP 地址及其他记录,示例:

bash 复制代码
$TTL 3600  # 默认TTL为1小时
@ IN SOA dns.liujn.cloud. root.dns.liujn.cloud. (
    2024010101  # 序列号(每次修改需递增)
    3H          # 刷新时间(从服务器向主服务器同步频率)
    15M         # 重试时间(刷新失败后重试间隔)
    1W          # 过期时间(同步失败后停止用旧数据的时间)
    15M         # 否定缓存时间(记录不存在时的缓存时长)
)
        IN NS dns.liujn.cloud.  # 区域的权威DNS服务器
dns     IN A 10.1.8.8          # dns.liujn.cloud的IPv4地址
server  IN A 10.1.8.8          # server.liujn.cloud的IPv4地址
client  IN A 10.1.8.9          # client.liujn.cloud的IPv4地址
student IN CNAME client.liujn.cloud.  # student别名指向client
@       IN MX 10 mail.liujn.cloud.   # 邮件服务器,优先级10
mail    IN A 10.1.8.253         # mail.liujn.cloud的IPv4地址
www     30 IN A 10.1.8.200      # 自定义TTL为30秒的A记录
  • @代表当前区域(即liujn.cloud);
  • 未以.结尾的名称会自动拼接区域名(如dns等价于dns.liujn.cloud.)。
2.4 配置反向区域文件(10.1.8.zone)

反向区域文件用于将 IP 地址映射到域名,IPv4 反向区域格式为x.x.x.in-addr.arpa(IP 段反转),示例(对应 10.1.8.0/24 网段):

bash 复制代码
$TTL 3600
@ IN SOA dns.liujn.cloud. root.dns.liujn.cloud. (
    2024010101
    3H
    15M
    1W
    15M
)
        IN NS dns.liujn.cloud.
10      IN PTR server.liujn.cloud.  # 10.1.8.8 → server.liujn.cloud
10      IN PTR dns.liujn.cloud.     # 10.1.8.8 → dns.liujn.cloud(同一IP可对应多个域名)
11      IN PTR client.liujn.cloud.  # 10.1.8.9 → client.liujn.cloud
11      IN PTR student.liujn.cloud. # 10.1.8.9 → student.liujn.cloud(CNAME对应的PTR)
200     IN PTR www.liujn.cloud.     # 10.1.8.200 → www.liujn.cloud
253     IN PTR mail.liujn.cloud.    # 10.1.8.253 → mail.liujn.cloud
2.5 启动并验证
  1. 配置/etc/named.conf,添加区域声明后启动服务:
bash 复制代码
systemctl start named
systemctl enable named
# 使用 getent 尝试解析相关域名
[root@client ~ ]# getent hosts student
10.1.8.9       client.liujn.cloud student.liujn.cloud
[root@client ~ ]# getent hosts dns
10.1.8.8       dns.liujn.cloud
[root@client ~ ]# getent hosts www
10.1.8.200      www.liujn.cloud
  1. 验证:使用dig工具查询记录是否生效:
bash 复制代码
dig A server.liujn.cloud @10.1.8.8  # 查询A记录
dig PTR 10.8.1.10.in-addr.arpa @10.1.8.8  # 查询反向PTR记录

反向查询失败(缺少 PTR 记录)

  • 影响:SSH 连接延迟、邮件服务器拒绝连接等。
  • 解决:在反向区域文件中添加对应的 PTR 记录(如11 IN PTR client.liujn.cloud.)。
  1. 权威服务器答案不一致
    • 原因:从服务器未同步主服务器的最新区域数据。
    • 排查:
      • 检查 SOA 记录序列号(主服务器需大于从服务器);
      • 确认主服务器允许区域传输(allow-transfer配置);
      • 检查主从服务器网络连通性及防火墙规则。
  2. FQDN 格式错误
    • 错误示例:区域文件中 FQDN 未以.结尾(如server.liujn.cloud而非server.liujn.cloud.)。
    • 后果:自动拼接区域名导致解析错误(如server.liujn.cloud.liujn.cloud)。
    • 解决:确保 FQDN 以.结尾。
  3. 通配符记录导致的误解析
    • 若存在*.liujn.cloud. IN A 172.25.254.254,删除具体记录后仍会返回通配符 IP。
    • 解决:按需删除或调整通配符记录。

二、DHCP 服务器

DHCP(Dynamic Host Configuration Protocol)用于自动分配 IP 地址、子网掩码、网关、DNS 等网络参数,简化网络管理。

1. DHCP 服务器部署(基于 dhcpd)

1.1 安装与基础配置
  1. 安装:dnf install -y dhcp-server
  2. 配置文件(/etc/dhcp/dhcpd.conf)示例:
bash 复制代码
subnet 10.1.8.0 netmask 255.255.255.0 {
  range 10.1.8.81 10.1.8.130;  # IP地址池范围
  option domain-name-servers 223.5.5.5, 8.8.8.8;  # DNS服务器
  option domain-name "liujn.cloud";  # 域名
  option routers 10.1.8.2;  # 网关
  option broadcast-address 10.1.8.255;  # 广播地址
  default-lease-time 600;  # 默认租期(10分钟)
  max-lease-time 7200;  # 最大租期(2小时)
}
  1. 启动服务:
bash 复制代码
systemctl start dhcpd
systemctl enable dhcpd
1.2 基于 MAC 地址预留 IP

为特定设备分配固定 IP,在/etc/dhcp/dhcpd.conf中添加:

bash 复制代码
# 查看客户端MAC地址
[root@client ~]# ip link show ens33
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:26:13:b5 brd ff:ff:ff:ff:ff:ff

# 配置固定IP
host client.linux.fun {
  hardware ethernet 00:0c:29:26:13:b5;  # 客户端MAC地址
  fixed-address 10.1.8.30;  # 分配的固定IP
}

重启服务生效:systemctl restart dhcpd

相关推荐
维尔切2 小时前
HAProxy 负载均衡器
linux·运维·数据库·负载均衡
什么半岛铁盒2 小时前
C++项目:仿muduo库高并发服务器-------Channel模块实现
linux·服务器·数据库·c++·mysql·ubuntu
2503_924806852 小时前
动态IP使用中 报错407 怎么办???
服务器·tcp/ip·php
VueVirtuoso2 小时前
前后端部署 + Nginx 配置 + Cloudflare 全攻略(通俗易懂版)
运维·nginx
QQ12958455042 小时前
服务器跨域问题CORS的解决
运维·服务器
小白银子2 小时前
零基础从头教学Linux(Day 42)
linux·运维·服务器·网络·nginx
DDC楼宇自控与IBMS集成系统解读3 小时前
园区3D可视化数字孪生管理平台与 IBMS 智能化集成系统:打造智慧园区新范式
运维·3d可视化·楼宇自控系统·数字孪生管理平台·ibms集成系统·3d可视化数字孪生管理平台·智能化集成系统
望获linux3 小时前
【Linux基础知识系列:第一百四十篇】理解SELinux与系统安全
linux·运维·服务器·数据库·chrome·macos
初学者_xuan3 小时前
零基础新手小白快速了解掌握服务集群与自动化运维(七)Nginx模块--Nginx反向代理与缓存功能(二)
运维·nginx·自动化