DNS 服务器与 DHCP 服务器详解及配置指南
文章目录
- DNS 服务器与 DHCP 服务器详解及配置指南
- 一、DNS 服务器
- 1. DNS 服务基础
- 1.1 DNS 层次结构
- 1.2 DNS 资源记录
- 2. 配置权威名称服务器(BIND)
- 2.1 准备工作
- 2.2 配置 BIND 核心参数
- 2.2.1 定义地址匹配列表(ACL)
- 2.2.2 配置访问控制
- 2.3 配置正向区域文件(liujn.cloud.zone)
- 2.4 配置反向区域文件(10.1.8.zone)
- 2.5 启动并验证
- 二、DHCP 服务器
- 1. DHCP 服务器部署(基于 dhcpd)
- 1.1 安装与基础配置
- 1.2 基于 MAC 地址预留 IP
DNS 服务器与 DHCP 服务器详解及配置指南
一、DNS 服务器
DNS(Domain Name System,域名系统)是互联网的核心服务之一,用于将易于记忆的域名转换为计算机可识别的 IP 地址,同时也是存储网络主机和资源目录的分层命名系统。
1. DNS 服务基础
1.1 DNS 层次结构
DNS 采用分层结构,从上到下依次为:
- 根域:层次结构最顶层,用
.
表示; - 顶级域:如
.com
、.net
、.org
等; - 二级域:如
liujn.cloud
、redhat.com
,由组织或个人使用; - 子域:二级域的子树,如
lab.liujn.cloud
是liujn.cloud
的子域。
1.2 DNS 资源记录
DNS 资源记录(RR)是 DNS 区域中存储信息的基本单位,格式为:
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 准备工作
- 安装 BIND:
dnf install -y bind bind-utils
- 创建区域文件目录并设置权限:
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 地址或网络列表,简化访问控制配置:
[root@server ~]# vim /etc/named.conf
#2.1 增加监听iplisten-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
块中配置客户端访问权限:
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 地址及其他记录,示例:
$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 网段):
$TTL 3600
@ IN SOA dns.liujn.cloud. root.dns.liujn.cloud. (20240101013H15M1W15M
)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 启动并验证
- 配置
/etc/named.conf
,添加区域声明后启动服务:
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
- 验证:使用
dig
工具查询记录是否生效:
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.
)。
- 权威服务器答案不一致:
- 原因:从服务器未同步主服务器的最新区域数据。
- 排查:
- 检查 SOA 记录序列号(主服务器需大于从服务器);
- 确认主服务器允许区域传输(
allow-transfer
配置); - 检查主从服务器网络连通性及防火墙规则。
- FQDN 格式错误:
- 错误示例:区域文件中 FQDN 未以
.
结尾(如server.liujn.cloud
而非server.liujn.cloud.
)。 - 后果:自动拼接区域名导致解析错误(如
server.liujn.cloud.liujn.cloud
)。 - 解决:确保 FQDN 以
.
结尾。
- 错误示例:区域文件中 FQDN 未以
- 通配符记录导致的误解析:
- 若存在
*.liujn.cloud. IN A 172.25.254.254
,删除具体记录后仍会返回通配符 IP。 - 解决:按需删除或调整通配符记录。
- 若存在
二、DHCP 服务器
DHCP(Dynamic Host Configuration Protocol)用于自动分配 IP 地址、子网掩码、网关、DNS 等网络参数,简化网络管理。
1. DHCP 服务器部署(基于 dhcpd)
1.1 安装与基础配置
- 安装:
dnf install -y dhcp-server
- 配置文件(
/etc/dhcp/dhcpd.conf
)示例:
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小时)
}
- 启动服务:
systemctl start dhcpd
systemctl enable dhcpd
1.2 基于 MAC 地址预留 IP
为特定设备分配固定 IP,在/etc/dhcp/dhcpd.conf
中添加:
# 查看客户端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 1000link/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