Linux 搭建 DNS 服务器详细步骤
一、安装 DNS 服务器软件
1、更新系统包列表:在终端中执行以下命令,确保系统软件包列表是最新的。
Debian/Ubuntu 系统:sudo aptget update
Red Hat/CentOS 系统:sudo yum update
2、安装 Bind9:Bind9 是目前最常用的 DNS 服务器软件之一。
Debian/Ubuntu 系统:sudo aptget install bind9 bind9utils
Red Hat/CentOS 系统:sudo yum install bind bindutils
二、配置主配置文件
1、编辑named.conf
文件:这是 Bind9 的主配置文件,通常位于/etc/bind/
目录下(不同系统路径可能略有差异)。
可以使用文本编辑器打开该文件,如nano /etc/bind/named.conf
或vim /etc/bind/named.conf
。
在该文件中,主要关注以下几个部分的配置:
options 部分:用于设置全局选项,如监听的 IP 地址、端口等。
options { listenon port 53 { any; }; directory "/var/bind"; dumpfile "/var/bind/dump.db"; statisticsfile "/var/bind/statistics.txt"; memstatisticsfile "/var/bind/memstats.txt"; allowquery { any; }; recursion no; };
zone 部分:定义区域文件的位置和类型,要配置一个正向解析区域和反向解析区域:
zone "example.com" { type master; file "/etc/bind/db.example.com"; }; zone "1.168.192.inaddr.arpa" { type master; file "/etc/bind/db.192.168.1"; };
2、创建区域文件:根据在named.conf
中定义的区域文件路径,创建相应的区域文件。
正向解析区域文件(如db.example.com
):
$TTL 604800 @ IN SOA ns.example.com. admin.example.com. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.example.com. ns IN A 192.168.1.2 www IN A 192.168.1.3
反向解析区域文件(如db.192.168.1
):
$TTL 604800 @ IN SOA ns.example.com. admin.example.com. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.example.com. @ IN PTR www.example.com. 1 IN PTR ns.example.com. 2 IN PTR mail.example.com.
三、启动 DNS 服务并设置为开机自启
1、启动 DNS 服务:在终端中执行以下命令启动 Bind9 服务。
Debian/Ubuntu 系统:sudo systemctl start bind9
Red Hat/CentOS 系统:sudo systemctl start named
2、设置开机自启:确保 DNS 服务在系统重启后自动启动。
Debian/Ubuntu 系统:sudo systemctl enable bind9
Red Hat/CentOS 系统:sudo systemctl enable named
四、配置防火墙规则
1、允许 DNS 服务的端口通过防火墙:默认情况下,DNS 使用 53 号端口进行通信,需要确保防火墙允许该端口的 UDP 和 TCP 流量通过。
Debian/Ubuntu 系统:使用ufw
命令行工具。
sudo ufw allow 53/tcp sudo ufw allow 53/udp
Red Hat/CentOS 系统:使用firewalld
命令行工具。
sudo firewallcmd permanent addport=53/tcp sudo firewallcmd permanent addport=53/udp sudo firewallcmd reload
五、测试 DNS 服务器
1、在本机测试:可以在本地主机上使用dig
或nslookup
命令测试 DNS 服务器是否正常工作。
dig @localhost www.example.com nslookup www.example.com localhost
如果返回正确的 IP 地址,说明 DNS 服务器配置正确。
2、在其他客户端测试:在其他网络设备或计算机上,将首选 DNS 服务器设置为刚刚搭建的 DNS 服务器的 IP 地址,然后尝试访问域名,看是否能够正确解析。
相关配置文件说明及示例
文件名称 | 位置 | 作用 | 示例内容 |
named.conf | /etc/bind/ | Bind9 的主配置文件,用于全局设置和区域定义 | options { ... }; zone "example.com" { ... }; zone "1.168.192.inaddr.arpa" { ... }; |
db.example.com | /etc/bind/ | 正向解析区域文件,定义域名到 IP 地址的映射 | @ IN SOA ns.example.com. admin.example.com. ( ... ); @ IN NS ns.example.com.; www IN A 192.168.1.3; |
db.192.168.1 | /etc/bind/ | 反向解析区域文件,定义 IP 地址到域名的映射 | @ IN SOA ns.example.com. admin.example.com. ( ... ); @ IN NS ns.example.com.; @ IN PTR www.example.com.; |
相关问题与解答栏目
问题一:为什么需要在named.conf
文件中配置listenon port 53 { any; };
?
解答:这行配置指定了 DNS 服务器监听在所有网络接口上的 53 号端口,以便接收来自任何网络设备的 DNS 查询请求,如果不这样配置,DNS 服务器可能只能监听在特定的 IP 地址或接口上,导致其他设备无法正常访问。
问题二:如何查看 DNS 服务器的日志文件以排查问题?
解答:在named.conf
文件中的logging
部分可以指定日志文件的位置和级别,默认情况下,日志文件可能位于/var/log/syslog
(Debian/Ubuntu)或/var/log/messages
(Red Hat/CentOS)中,可以使用tail f
命令实时查看日志输出,以便及时发现和解决可能出现的问题。tail f /var/log/syslog | grep bind
。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/141411.html