搭建自己的权威NS服务器
本文仅用于折腾。
手上域名一多就有一种折腾的欲望。
多年以前曾用过Bind搭建自己的NS服务器。但是那时候是直接在一台公网的服务器上,安装Bind,并写了一个域名的文件,就对外发布了,但是没过两天,该服务器就被封禁了。 查询后得知,流量太大了。..... 大部分人都利用我搭建的NS,去请求一些非法的域名。导致流量过大,被封禁。
现在考虑到安全因素,计划搭建一个权威(Master和Slave分离)的NS服务器来玩玩。
大致网络结构如下:
用户-----(internet)--->Public DNS Server ------------> 公网NS(Slave)---(VPN网络)----->内网NS(Slave)----->内网NS(Master)
准备工具:
- VPS服务器至少一台
- VPN网络
- 内网服务器2台 (Centos系统)
- 域名至少1个 (本次测试域名ghitr.com/abcde.dn42)
开始部署:
第一步:搭建内网Master服务器
在Centos环境下利用yum -y install bind.x86_64
安装Bind软件。
安装完成后,修改/etc/named.conf配置文件。vi /etc/named.conf
options {
listen-on port 53 { any; }; //监听所有V4地址的53端口。
listen-on-v6 port 53 { any; }; //监听所有V6地址的53端口。
allow-query { any; }; //允许来自任何地址的查询(可以限制为只允许来自内网NS2的查询。
recursion no; //是否递归查询。这儿必须禁用,因为我们只对外提供特定域名的master服务。
zone "abcde.dn42" IN { //域名正向解析。
type master; //该服务器对于该域名的角色。权威的Master
file "abcde.dn42"; //域名的解析配置文件
allow-transfer { any; }; //运行Slave的查询。
};
zone "150.23.172.in-addr.arpa" { //反向解析。这儿一般用不到,因为运营商不会将IP的反向解析设置为你的NS的。
type master;
allow-transfer { any; };
file "172.23.150.in-addr.arpa";
};
zone "ghnwt.com" IN {
type master;
file "ghnwt.com.txt";
allow-transfer { any; };
allow-update { none; };
};
编写域名的解析文件。默认情况下,域名的解析文件需要存放到/var/named/
目录下。`
$TTL 1D
@ IN SOA @ yangybcy.gmail.com. (
190804001 ; serial //相当于文件版本,每次修改域名的解析配置后,需要将序号加大,以便slave同步。
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns1.abcde.dn42. //定义当前域名的NS服务器地址。
@ IN NS ns2.abcde.dn42. //定义当前域名的NS服务器地址。
ns1 IN A 172.23.150.120 //定义NS服务器的IP地址。
ns2 IN A 172.23.150.121 //定义NS服务器的IP地址。
www IN A 172.23.150.1 //域名www.abcde.dn42的A记录。
到这儿Master服务器的主要配置就完成了,关于NS服务器的安全配置本文不涉及。
然后重新加载配置文件rnhc reload
测试域名配置情况
C:\Users\yangy>nslookup www.abcde.dn42 192.168.77.30
服务器: UnKnown
Address: 192.168.77.30
名称: www.abcde.dn42
Address: 172.23.150.1
第二步:配置内网Slave服务器。
同理先安装bind软件。
然后配置/etc/named.conf文件。
options {
listen-on port 53 { any; };
listen-on port 4053 { any; };
listen-on-v6 port 53 { any; };
allow-query { any; };
allow-transfer { any; };
recursion no;
zone "abcde.dn42" IN { ///定义域名的Master地址即可。
type slave;
masters {192.168.77.30; };
file "abcde.dn42"; //此处的File文件由named服务器自动生成。
};
zone "150.23.172.in-addr.arpa" {
type slave;
masters {192.168.77.30; };
file "172.23.150.in-addr.arpa";
};
zone "ghnwt.com" IN {
type slave;
masters {192.168.77.30; };
file "ghnwt.com.txt";
allow-transfer { any; };
};
然后rndc reload
重新载入配置文件即可。
第三步:配置公网Slave服务器
同理先安装bind软件。
公网Slave服务器的配置,与内网Slave服务器的配置基本一样。需要修改的只有masters服务器的地址。该master地址必须指向内网的Slave服务器的VPN地址。不能直接指向内网的Master服务器。 主要是为了保护内网的Master服务器。
最后的测试。
C:\Users\yangy>nslookup www.ghnwt.com 8.8.8.8
服务器: dns.google
Address: 8.8.8.8
非权威应答:
名称: www.ghnwt.com
Addresses: 2604:180:3:b42::e634
168.235.74.165
C:\Users\yangy>nslookup www.ghnwt.com ns1.ghnwt.com
服务器: UnKnown
Address: 66.112.209.246
名称: www.ghnwt.com
Addresses: 2604:180:3:b42::e634
168.235.74.165