运行 DNS 的 Ubuntu 服务器上出现非常奇怪的问题。
这是网络设置。
有两个 C 类网络范围。假设它们是:
216.107.249.0/24
216.107.250.0/24
服务器分配的 IP 范围是 216.107.250.0。从服务器 ping 216.107.250.0 范围内的任何内容都没有问题。
DNS 请求来自 216.107.249.0 范围内的客户端。Wireshark 显示请求已到达。
然后,服务器发出 arp 请求,说“谁有 216.107.249.x?”显然没有回应,因为服务器请求这个是没有意义的,因为它在不同的子网上。
在/etc/network/interfaces
Ubuntu 机器上的文件夹中,设置如下:
auto eth0
iface eth0 inet static
address 216.107.250.2
network 216.107.250.0
netmask 255.255.255.0
broadcast 209.107.250.255
gateway 209.107.250.1
那么,为什么服务器要向不在同一子网上的某个对象请求 ARP,而不是将数据包传递给路由器呢?
进入服务器的任何其他内容都会被正确发送出去。因此,如果其他 DNS 查询来自互联网上的任何地方,它们都会得到正确的响应,数据包将发送到路由器。