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

相关推荐
wanhengidc15 小时前
云手机与云服务器之间的关系
服务器·游戏·智能手机·云计算·区块链
赖small强15 小时前
【蓝牙】BLE 数据收发实战指南(手机 App ↔ 嵌入式 Linux/BlueZ)
linux·蓝牙·bluez·bluetoothctl·dbus-monitor·central·peripheral
wit_yuan15 小时前
linux udp广播数据包实际用例
linux·服务器·udp
大聪明-PLUS15 小时前
io_uring:Linux 上的高性能异步 I/O
linux·嵌入式·arm·smarc
qq_4798754315 小时前
Linux time function in C/C++【2】
linux·c语言·c++
小武~16 小时前
嵌入式网络编程深度优化 --网络协议栈配置实战指南
linux·网络·网络协议
二进制星轨16 小时前
在 Ubuntu 上快速配置 Node.js 环境(附问题说明)
linux·ubuntu·node.js
利刃大大16 小时前
【高并发服务器:HTTP应用】十四、Util工具类的设计与实现
服务器·http·高并发·项目·cpp
kblj555516 小时前
学习Linux——网络——网卡
linux·网络·学习
zhanglianzhao16 小时前
基于云服务器自建Rustdesk远程桌面——以京东云为例
运维·服务器·京东云