安装 DNS 服务软件
在 CentOS 中,通常使用bind 作为 DNS 服务器软件,执行以下命令安装bind 和bindutils:
sudo yum install y bind bindutils
配置 DNS 服务
编辑主配置文件:打开/etc/named.conf 文件,进行以下修改 :

将listenon port 53 { 127.0.0.1; }; 修改为listenon port 53 { any; };,允许外部网络访问 DNS 服务器。
将allowquery { localhost; }; 修改为allowquery { any; };,允许任何主机查询该 DNS 服务器。
配置正向解析区域:编辑/etc/named.rfc1912.zones 文件,添加类似如下的配置 :
zone "example.com" IN {
type master;
file "example.com.zone";
}; 其中example.com 是要配置的域名,example.com.zone 是对应的区域文件名,然后创建并编辑该区域文件,如/var/named/example.com.zone示例如下 :
$TTL 86400
@ IN SOA example.com. root.example.com. (
2024010101 ; Serial
3600 ; Refresh after 1 hour
1800 ; Retry after 30 minutes
604800 ; Expire after 1 week
86400 ) ; Minimum TTL of 1 day
@ IN NS dns.example.com.
@ IN A [你的服务器IP地址]
dns IN A [你的服务器IP地址] 这里[你的服务器IP地址] 需替换为实际的服务器 IP 地址。
配置反向解析区域:同样在/etc/named.rfc1912.zones 文件中添加反向解析区域配置,例如对于网段192.168.1.0/24,添加以下内容 :

zone "1.168.192.inaddr.arpa" IN {
type master;
file "1.168.192.zone";
}; 然后创建并编辑相应的区域文件,如/var/named/1.168.192.zone示例如下 :
$TTL 86400
@ IN SOA example.com. root.example.com. (
2024010101 ; Serial
3600 ; Refresh after 1 hour
1800 ; Retry after 30 minutes
604800 ; Expire after 1 week
86400 ) ; Minimum TTL of 1 day
@ IN NS dns.example.com.
1 IN PTR dns.example.com.配置网卡文件或使用 NetworkManager 设置 DNS
如果未安装 NetworkManager,可以通过编辑网卡配置文件来设置 DNS,假设网卡名称为eth0,执行以下命令打开配置文件:
sudo vi /etc/sysconfig/networkscripts/ifcfgeth0
找到以DNS1、DNS2 等开头的行,如果没有则添加,设置如下 :
DNS1=8.8.8.8 DNS2=8.8.4.4
保存并退出后,重新启动网络服务使设置生效 :
sudo systemctl restart network
若使用 NetworkManager,可通过图形界面或命令行工具nmcli 进行设置,:

nmcli con mod your_connection_name ipv4.dns "8.8.8.8 8.8.4.4" nmcli con up your_connection_name
其中your_connection_name 为网络连接的名称。
测试 DNS 设置
使用ping 或nslookup 等命令测试新设置的 DNS 是否生效,:
ping www.google.com nslookup www.google.com
如果能收到响应,则说明 DNS 设置成功。
