Linux搭建DNS服务器
一、Ubuntu系统
1.安装 BIND 软件包
sudo apt update
sudo apt install bind9 bind9utils bind9-doc -y
2.配置主配置文件
编辑/etc/bind/named.conf.options,添加上游 DNS 服务器
options {directory "/var/cache/bind";// 添加百度和阿里 DNS作为上游服务器forwarders {223.5.5.5;180.76.76.76;};// 允许查询的客户端allow-query { any; };recursion yes;
};
3.创建正向区域文件
编辑/etc/bind/named.conf.local,添加区域配置:
zone "yang.com" {type master;file "/etc/bind/zones/yang.com";
};
4.创建区域数据文件
sudo mkdir -p /etc/bind/zones
sudo cp /etc/bind/db.local /etc/bind/zones/yang.com
编辑yang.com文件
$TTL 604800
@ IN SOA ns1.yang.com. admin.yang.com. (3 ; Serial604800 ; Refresh86400 ; Retry2419200 ; Expire604800 ) ; Negative Cache TTL
;
@ IN NS ns1.yang.com.
@ IN A 192.168.10.161
ns1 IN A 192.168.10.161
esxi1 IN A 192.168.10.220
esxi2 IN A 192.168.10.200
区域文件基本结构
1.$TTL 指令 - 设置默认的 TTL 值 (Time-To-Live)$TTL定义了区域中所有资源记录的默认 TTL 值(以秒为单位)
604800秒等于 7 天,表示缓存服务器可以保留此记录的最长时间
2.SOA 记录 - 起始授权机构记录,定义区域的基本信息@是区域名yang.com的简写
IN表示 Internet 类记录
SOA表示起始授权机构记录
ns1.yang.com.是主 DNS 服务器的 FQDN(注意结尾的点)
admin.yang.com.是区域管理员的邮箱地址(点表示 @符号)
序列号 (Serial):区域数据版本号,更新区域时需递增
刷新时间 (Refresh):从属 DNS 服务器多久查询一次主服务器更新
重试时间 (Retry):刷新失败后多久重试
过期时间 (Expire):如果主服务器不可达,从属服务器保留数据的时间
负缓存 TTL (Negative Cache TTL):未找到记录的缓存时间
3.NS 记录 - 名称服务器记录,指定负责该区域的 DNS 服务器指定负责该区域的权威 DNS 服务器
ns1.yang.com.必须在区域内有对应的 A 记录
4.A/AAAA 记录 - 将域名映射到 IPv4/IPv6 地址@表示区域根域名yang.com
ns1扩展为ns1.yang.com
esxi1扩展为esxi1.yang.com
esxi2扩展为esxi2.yang.com
每个 A 记录将域名映射到对应的 IPv4 地址
其他常用记录类型
CNAME 记录(别名记录)
ftp IN CNAME www.example.com.
将ftp.yang.com指向www.yang.com的同一 IP 地址MX 记录(邮件交换记录)
@ IN MX 10 mail.example.com.
指定接收example.com邮件的服务器
数字10表示优先级,值越小优先级越高泛域名解析记录
* IN A 192.168.1.200 ; 让所有未单独配置的子域名都指向此IP
区域文件编辑注意事项
(1)FQDN 结尾的点:所有完全限定域名必须以点 (.) 结尾
(2)序列号管理:每次修改区域文件后,必须递增 SOA 记录中的序列号
(3)注释使用:分号 (;) 后的内容为注释,可以用来解释配置
(4)语法检查:修改后使用named-checkzone命令检查语法
(5)TTL 调整:生产环境中建议从较短的 TTL 开始,确认无误后再增加
5.检查配置语法并重启服务
sudo named-checkconf
sudo named-checkzone yang.com /etc/bind/zones/yang.com
sudo systemctl restart bind9
sudo systemctl enable bind9