NS-Route.png

本文仅用于折腾。

手上域名一多就有一种折腾的欲望。
多年以前曾用过Bind搭建自己的NS服务器。但是那时候是直接在一台公网的服务器上,安装Bind,并写了一个域名的文件,就对外发布了,但是没过两天,该服务器就被封禁了。 查询后得知,流量太大了。..... 大部分人都利用我搭建的NS,去请求一些非法的域名。导致流量过大,被封禁。

现在考虑到安全因素,计划搭建一个权威(Master和Slave分离)的NS服务器来玩玩。

大致网络结构如下:

用户-----(internet)--->Public DNS Server  ------------> 公网NS(Slave)---(VPN网络)----->内网NS(Slave)----->内网NS(Master)

准备工具:

  1. VPS服务器至少一台
  2. VPN网络
  3. 内网服务器2台 (Centos系统)
  4. 域名至少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

标签: named, ns, 权威NS

添加新评论