CentOS 7搭建DHCP和DNS服务,如何让内网客户端自动获取IP?

在现代网络管理中,动态主机配置协议(DHCP)和域名系统(DNS)是两项不可或缺的核心服务,在CentOS服务器上协同配置这两项服务,可以实现网络地址的自动分配与域名的便捷解析,极大地简化了网络管理工作,本文将详细介绍在CentOS环境中配置DHCP和DNS服务的步骤与要点。

CentOS 7搭建DHCP和DNS服务,如何让内网客户端自动获取IP?

环境准备

在开始配置前,请确保您的CentOS服务器已拥有一个静态IP地址,并且系统已更新至最新,假设服务器的静态IP为168.1.10,作为网络中的DHCP和DNS服务器,确保防火墙(如firewalld)和SELinux的配置允许相关服务通过,或在配置过程中暂时关闭以便排查问题。

DHCP服务配置

DHCP服务负责为网络中的客户端自动分配IP地址、子网掩码、网关和DNS服务器等信息。

安装DHCP服务包
使用yum命令进行安装:

yum install -y dhcp

配置主配置文件
DHCP的主配置文件位于/etc/dhcp/dhcpd.conf,该文件默认内容很少,可以参考模板文件/usr/share/doc/dhcp-*/dhcpd.conf.example进行配置,以下是一个基础配置示例:

# /etc/dhcp/dhcpd.conf
option domain-name "mylocal.net";          # 定义域名
option domain-name-servers 192.168.1.10;   # 指定DNS服务器地址
default-lease-time 600;                    # 默认租约时间(秒)
max-lease-time 7200;                       # 最大租约时间(秒)
# 声明子网
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;       # 可分配的IP地址池
  option routers 192.168.1.1;              # 指定客户端的默认网关
  option broadcast-address 192.168.1.255; # 广播地址
}

启动并启用服务
配置完成后,启动DHCP服务并设置其开机自启:

systemctl start dhcpd
systemctl enable dhcpd

DNS服务配置

DNS服务则负责将易于记忆的域名解析为IP地址,在CentOS中,通常使用BIND(Berkeley Internet Name Domain)软件包来实现。

CentOS 7搭建DHCP和DNS服务,如何让内网客户端自动获取IP?

安装BIND服务包

yum install -y bind bind-utils

配置主配置文件
BIND的主配置文件是/etc/named.conf,主要需要修改options块中的listen-onallow-query,确保服务监听在所有需要的网络接口上,并允许客户端查询。

options {
        listen-on port 53 { any; };          # 监听所有接口
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };            # 允许任何客户端查询
        recursion yes;
};

定义区域
/etc/named.conf文件末尾添加正向解析区域和反向解析区域的定义。

zone "mylocal.net" IN {
        type master;
        file "mylocal.net.zone";             # 正向解析区域文件名
        allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.1.zone";               # 反向解析区域文件名
        allow-update { none; };
};

创建区域文件
/var/named/目录下创建对应的区域文件,可以复制模板文件named.localhost进行修改。

  • 正向解析文件 /var/named/mylocal.net.zone:

    $TTL 1D
    @   IN SOA  ns.mylocal.net. admin.mylocal.net. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
    NS      ns.mylocal.net.
    ns  A       192.168.1.10
    www A       192.168.1.20
  • 反向解析文件 /var/named/192.168.1.zone:

    CentOS 7搭建DHCP和DNS服务,如何让内网客户端自动获取IP?

    $TTL 1D
    @   IN SOA  ns.mylocal.net. admin.mylocal.net. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
    NS      ns.mylocal.net.
    10  PTR     ns.mylocal.net.
    20  PTR     www.mylocal.net.

启动并启用服务

systemctl start named
systemctl enable named

服务验证

将客户端计算机的IP设置为自动获取(DHCP),获取到地址后,使用nslookupdig命令测试DNS解析是否正常工作,在客户端执行nslookup www.mylocal.net,应能返回168.1.20


相关问答 (FAQs)

问题1:客户端无法获取IP地址,怎么办?
答: 这通常有几个原因,检查服务器端的DHCP服务是否正在运行(systemctl status dhcpd),检查防火墙设置,确保DHCP服务(端口67和68)被允许通过,可以执行 firewall-cmd --add-service=dhcp --permanent && firewall-cmd --reload,检查网络连接和dhcpd.conf配置文件中的subnet声明是否与客户端所在的网络匹配。

问题2:可以ping通IP地址,但无法解析域名,是什么原因?
答: 这个问题指向DNS解析故障,确认客户端的DNS服务器地址是否已正确设置为168.1.10(通过DHCP分配或手动设置),在服务器上检查named服务状态(systemctl status named),使用named-checkzone工具检查区域文件语法是否正确,named-checkzone mylocal.net /var/named/mylocal.net.zone,检查/etc/named.conf中的allow-query设置是否允许客户端进行查询。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-04 05:47
下一篇 2025-10-04 05:51

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信