在 CentOS 7 上安装并配置 BIND 以实现 DNS 的正向和反向解析可以按照以下步骤进行:
打开终端并运行以下命令来安装 BIND 及其工具:
- yum install bind bind-utils -y
-
使用文本编辑器打开 BIND 的主配置文件/etc/named.conf。如果没有此文件,你可能需要先检查 BIND 是否正确安装:
- vim /etc/named.conf
-
在文件中,确保 BIND 监听在合适的 IP 地址上(通常为 localhost 或服务器的 IP 地址):
- options {
- listen-on port 53 { any; };
- 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; };
- };
-
在/etc/named.conf中添加以下内容:
- zone "example.com" IN {
- type master;
- file "example.com.zone";
- allow-update { none; };
- };
-
- zone "254.168.192.in-addr.arpa" IN {
- type master;
- file "192.168.254.zone";
- allow-update { none; };
- };
-
进入/var/named目录并创建正向和反向区域文件。
- vim /var/named/example.com.zone
-
添加以下内容作为正向区域文件(example.com.zone):
- $TTL 86400
- @ IN SOA ns1.example.com. admin.example.com. (
- 2023101001 ; Serial
- 3600 ; Refresh
- 1800 ; Retry
- 604800 ; Expire
- 86400 ) ; Minimum TTL
- ;
- @ IN NS ns1.example.com.
- ns1 IN A 192.168.254.150
- www IN A 192.168.254.150
-
然后创建反向区域文件:
- vim /var/named/192.168.254.zone
-
添加以下内容作为反向区域文件(192.168.254.zone):
- $TTL 86400
- @ IN SOA ns1.example.com. admin.example.com. (
- 2023101001 ; Serial
- 3600 ; Refresh
- 1800 ; Retry
- 604800 ; Expire
- 86400 ) ; Minimum TTL
- ;
- @ IN NS ns1.example.com.
- 150 IN PTR ns1.example.com.
- 150 IN PTR www.example.com.
-
使用以下命令检查主配置文件和区域文件的语法:
- named-checkconf /etc/named.conf
- named-checkzone example.com /var/named/example.com.zone
- named-checkzone 254.168.192.in-addr.arpa /var/named/192.168.254.zone
-
- chown root:named /var/named/example.com.zone
- chown root:named /var/named/192.168.254.zone
-
首次启动 BIND 服务,并使其在系统启动时启动:
- systemctl enable named --now
-
使用以下命令在 CentOS 7 上配置防火墙以允许通过 DNS 的流量:
- firewall-cmd --permanent --add-service=dns
- firewall-cmd --reload
-
打开终端并运行以下命令,假设你要解析www.example.com:
- nslookup www.example.com
-
如果 DNS 服务器配置正确,你应该看到类似以下的输出:
运行以下命令来测试 IP 地址192.168.254.150是否正确解析到www.example.com:
- nslookup 192.168.254.150
-
你应该看到类似以下的输出:
检查服务状态:
- systemctl status named
-
- tail -f /var/log/messages
-