![在 NAT 后面运行名称服务器](https://linux22.com/image/706132/%E5%9C%A8%20NAT%20%E5%90%8E%E9%9D%A2%E8%BF%90%E8%A1%8C%E5%90%8D%E7%A7%B0%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我有一个来自 ISP 的静态 IP 互联网连接。我确实有从它托管的邮件服务器和 Web 服务器。我想要实现的是通过从我的 ISP 获取另一个静态 IP 来运行几个名称服务器。我已从我的本地 IP 地址转发了 TCP 和 UDP 端口,互联网连接由 pfsense 管理。DNS 解析器和转发器服务已被禁用。
我尝试通过 NAT 设置名称服务器,并将端口 53 转发给 udp 和 tcp 流量。但是,当我尝试使用 dig 外部或内部查询名称服务器上的区域记录时,仍然会收到错误“无法访问任何服务器”。是否有任何指南或信息可以帮助我设置 NAT 后面的名称服务器或帮助我解决此问题?
我的 ISP 已确认他们没有设置任何阻止或过滤。我还确认我的终端没有阻止或过滤任何端口。名称服务器的名称是 ns1.sitehosters.in。
NS1 上的以太网配置
auto eth1
iface eth1 inet static
address 192.168.1.12
netmask 255.255.255.0
gateway 192.168.1.1(PFSENSE)
dns-nameservers 8.8.8.8
/etc/bind/named/conf.options
options {
directory "/var/cache/bind";
dnssec-validation auto;
auth-nxdomain no;
listen-on-v6 { any; };
};
ns1 上的 Named.conf.local 文件
nano /etc/bind/named.conf.local
zone "sitehosters.in" {
type master;
allow-transfer {none;};
file"/etc/bind/pri.sitehosters.in"
};
Netstat 输出如下:
tcp 0 0 192.168.1.36:domain . LISTEN 1156/named
tcp 0 0 localhost:domain . LISTEN 1156/named
tcp 0 0 localhost:953 . LISTEN 1156/named
udp 0 0 192.168.1.36:domain . 1156/named
udp 0 0 localhost:domain . 1156/named
PINGDOM 上的 DNSCHECK
No name servers found at child.
No name servers could be found at the child.
This usually means that the child is not configured to answer queries about the zone.
请找一些我的路由器配置的截图,它们可能会帮助你给我指明正确的方向。我在一台管理所有互联网连接和防火墙的电脑上使用 pfSense。
当我在 pfSense 中使用 WAN 端口上的数据包捕获时,我得到了
19:05:02.660753 IP xx.xx.xx.xx.13747 > 8.8.8.8.53: UDP, length 27
19:05:02.669900 IP 8.8.8.8.53 > xx.xx.xx.xx.13747: UDP, length 509
19:05:02.670409 IP xx.xx.xx.xx.63621 > 8.8.8.8.53: UDP, length 44
19:05:02.694125 IP xx.xx.xx.xx.34919 > 8.8.8.8.53: UDP, length 27
19:05:02.704487 IP 8.8.8.8.53 > xx.xx.xx.xx.34919: UDP, length 509
19:05:02.705580 IP xx.xx.xx.xx.11687 > 8.8.8.8.53: UDP, length 44
19:05:02.741893 IP 8.8.8.8.53 > xx.xx.xx.xx.11687: UDP, length 208
19:05:02.741919 IP 8.8.8.8.53 > xx.xx.xx.xx.63621: UDP, length 208
19:13:39.682095 IP 81.143.220.107.51368 > xx.xx.xx.xx.53: tcp 0
19:13:39.682355 IP xx.xx.xx.xx.53 > 81.143.220.107.51368: tcp 0
19:13:39.893583 IP 81.143.220.107.51368 > xx.xx.xx.xx: tcp 0
19:13:39.894893 IP 81.143.220.107.51368 > xx.xx.xx.xx.53: tcp 34
19:13:39.895023 IP xx.xx.xx.xx.53 > 81.143.220.107.51368: tcp 0
19:13:39.895353 IP xx.xx.xx.xx.53 > 81.143.220.107.51368: tcp 155
19:13:40.100199 IP 81.143.220.107.51368 > xx.xx.xx.xx.53: tcp 0
19:13:40.100220 IP 81.143.220.107.51368 > xx.xx.xx.xx.53: tcp 0
intodns.com 的报道称
DNS servers responded ERROR: One or more of your nameservers did not respond:
The ones that did not respond are: xx.xx.xx.xx
答案1
如果您想运行一个作为 Intenet 区域权威的名称服务器,那么它将需要使用公共 IP 进行正确的寻址。
如果必须将名称服务器置于 NAT 后面,则 NAT 设备必须包含适当的应用层网关 (ALG)。虽然许多 NAT 设备将包含适合对客户端 IP 地址进行 NAT 的 ALG,但我不知道它们中是否有任何设备是为 NAT SOA 记录等构建的。
如果您只有 /32 公共地址,那么您可能能够通过外部路由器进行端口转发,然后将其推送到第二个 NAT 设备以恢复原始目标 IP 地址。我脑海中浮现的印象是这应该可行,但我还没有仔细考虑过。
我还没有详细查看 yopu 配置,但注意到您已将 8.8.8.8 定义为名称服务器。除非您想将名称服务器限制为仅权威服务器,否则您应该将其设置为 127.0.0.1。
经过思考,两次 NAT 应该没有必要。不过 DNS 服务器可能需要在其上有一个带有公共 IP 地址的接口,您可能可以通过接口上的辅助 IP 来实现这一点。
答案2
我搞明白了。ISP 在端口 53 上设置了过滤器,尽管它是开放的。必须更换 ISP,因为他们无法解除阻止。感谢大家花时间解决问题