目前使用的服务器地址:10.6.6.90,掩码:255.255.255.0,网关:10.6.6.254。
使用的DNS软件:以bind9为例。(还有PowerDNS、CoreDNS等)。
网络环境优化:默认转发至 Cloudflare (1.1.1.1) 与 Google (8.8.8.8)。
搭建步骤:
第一步:安装Bind9软件
sudo apt update
sudo apt install bind9 bind9utils -y
第二步:配置全局转发与安全策略
1、打开named.conf.options(sudo nano /etc/bind/named.conf.options)。
2、清空文件里的默认内容,把下面这段完整贴进去:
options {
directory "/var/cache/bind";
// 1. 允许所有人(局域网内的其他设备)向这台服务器发起 DNS 查询
allow-query { any; };
// 2. 海外转发器:优先使用 Cloudflare 和 Google 的高速 DNS
forwarders {
1.1.1.1;
8.8.8.8;
8.8.4.4;
};
// 3. 强制只进行转发,不向全球根服务器迭代查询(解决海外园区网由于根服务器被墙导致的报错)
forward only;
// 4. 关闭内网/测试环境下的 DNSSEC 验证,防止海外部分网络环境下解析报错
dnssec-validation no;
// 5. 监听 IPv6 地址
listen-on-v6 { any; };};
3、保存退出:按 Ctrl + O -> 回车(Enter) -> 按 Ctrl + X
第三步:注册你的本地私有域名区域我们要告诉DNS系统,test.local这个域名由我们自己这台服务器说了算。
1、打开区域配置文件:named.conf.local(sudo nano /etc/bind/named.conf.local)。
2、直接把光标移到最底下空行处,追加以下内容:
zone "test.local" {
type master; file "/etc/bind/db.test.local";
};
3、保存退出:按 Ctrl + O -> 回车 -> 按 Ctrl + X。
第四步:制作域名解析A记录表,建立真正的映射,把域名指向对应的IP。
1、在etc/bind/里面新建db.test.local并打开。
2、删除里面所有内容并复制已下内容;
; BIND data file for test.local
;
$TTL 604800
@ IN SOA ns1.test.local. admin.test.local. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL;
@ IN NS ns1.test.local.
ns1 IN A 10.6.6.90
; 具体的本地域名 A 记录解析
@ IN A 10.6.6.90
www IN A 10.6.6.90
3、保存退出:按 Ctrl + O -> 回车 -> 按 Ctrl + X
第五步:语法安全检查与服务启动,在让服务生效前,检查有没有手误敲错代码。
1、sudo named-checkconf (验证后没有任何输出是对的)。
2、sudo named-checkzone test.local /etc/bind/db.test.local(后面出现OK是对的)。
3、激活并重启 DNS 服务:
sudo systemctl restart bind9
sudo systemctl enable bind9
4、检查服务状态(确认看到绿色的 active (running)):
sudo systemctl status bind9
5、如果系统开了防火墙,放行 53 端口:
sudo ufw allow 53/udp
sudo ufw allow 53/tcp
6、本地自测
测试内网私有解析(结果应该秒回 10.6.6.90)
dig @127.0.0.1 www.test.local
测试外网转发(结果应该返回正常的公网 IP,且 Query time 为 1 msec 级别)
dig @127.0.0.1 google.com
7、局域网自测:nslookup www.google.com