在Ubuntu系统中配置DNS服务器可以通过安装BIND(Berkeley Internet Name Domain)软件包来实现,BIND是广泛使用的DNS服务器软件,以下是详细的配置步骤和注意事项,帮助您在Ubuntu上成功搭建和配置DNS服务器。

确保您的Ubuntu系统已更新至最新状态,打开终端,运行以下命令更新软件包列表并升级现有软件:
sudo apt update && sudo apt upgrade -y
更新完成后,安装BIND9 DNS服务器软件包:
sudo apt install bind9 -y
安装完成后,BIND服务会自动启动,可以通过以下命令检查服务状态:
sudo systemctl status bind9
配置DNS服务器的核心文件,BIND的主要配置文件是/etc/bind/named.conf.options,用于设置全局选项,编辑该文件:

sudo nano /etc/bind/named.conf.options
在文件中添加以下基本配置,例如设置监听地址和允许查询的客户端:
options {
directory "/var/cache/bind";
recursion yes;
allow-query { localhost; 192.168.1.0/24; }; // 允许本地和指定网段查询
listen-on { 127.0.0.1; 192.168.1.1; }; // 监听本地和服务器IP
forwarders { 8.8.8.8; 114.114.114.114; }; // 上游DNS服务器
};
保存文件后,重启BIND服务使配置生效:
sudo systemctl restart bind9
创建正向和反向DNS区域文件,假设您的域名是example.com,网段为168.1.0/24,首先创建正向区域配置文件:
sudo nano /etc/bind/named.conf.local
在文件中添加以下内容:

zone "example.com" {
type master;
file "/etc/bind/zones/example.com.db";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/192.168.1.db";
};
保存文件后,创建区域文件目录:
sudo mkdir -p /etc/bind/zones
编辑正向区域文件/etc/bind/zones/example.com.db:
sudo nano /etc/bind/zones/example.com.db
``` 根据实际需求修改):
```plaintext
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025100101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
IN NS ns1.example.com.
IN A 192.168.1.1
ns1 IN A 192.168.1.1
www IN A 192.168.1.2
编辑反向区域文件/etc/bind/zones/192.168.1.db:
sudo nano /etc/bind/zones/192.168.1.db
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025100101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
IN NS ns1.example.com.
1 IN PTR ns1.example.com.
2 IN PTR www.example.com.
配置完成后,检查BIND配置文件的语法是否正确:
sudo named-checkconf sudo named-checkzone example.com /etc/bind/zones/example.com.db sudo named-checkzone 1.168.192.in-addr.arpa /etc/bind/zones/192.168.1.db
如果显示OK,则配置正确,重启BIND服务:
sudo systemctl restart bind9
测试DNS服务器功能,使用dig或nslookup命令查询域名:
dig @127.0.0.1 example.com nslookup 192.168.1.2
如果返回正确的解析结果,说明DNS服务器配置成功。
以下是配置过程中可能用到的参数说明表格:
| 参数 | 说明 |
|---|---|
directory |
指定BIND工作目录,通常为/var/cache/bind |
recursion |
是否递归查询,yes表示允许 |
allow-query |
允许查询的客户端IP范围 |
listen-on |
监听的IP地址 |
forwarders |
上游DNS服务器IP,用于转发无法解析的查询 |
SOA |
起始授权机构记录,包含区域管理信息 |
NS |
域名服务器记录,指定负责该区域的DNS服务器 |
A |
主机记录,将域名映射到IPv4地址 |
PTR |
指针记录,将IP地址映射到域名(反向解析) |
相关问答FAQs
-
问:如何确保DNS服务器仅对内网客户端提供服务?
答:在/etc/bind/named.conf.options中配置allow-query参数,限制允许查询的客户端IP范围,仅允许168.1.0/24网段访问:allow-query { 192.168.1.0/24; };确保
listen-on仅监听内网IP或localhost,避免暴露在外网。 -
问:如何配置DNS服务器的日志记录?
答:在/etc/bind/named.conf.options中添加logging配置段,指定日志文件路径和级别。logging { channel default_file { file "/var/log/named/default.log" versions 3 size 1m; severity dynamic; print-time yes; }; category default { default_file; }; };创建日志文件并设置权限:
sudo touch /var/log/named/default.log sudo chown bind:bind /var/log/named/default.log
重启BIND服务后,日志将记录到指定文件中。
