我的路由器的内部 IP 地址发生了变化,从那时起,TrueNAS 就一直表现不佳。所有 jail 都无法解析主机名。在排除故障时,我发现客户端无法 ping 任何外部 IP 地址,除非主机做出响应。
详情请见:
- 在此示例中,客户端监狱的 IP 为 10.153.2.250
- 主机(FreeNAS)的 IP 是 10.153.2.9
- 新的网关是 10.0.55.1(旧网关是 10.55.0.1),并且已在主机的网络配置和监狱的网络配置中更新。
- 当网关 IP 更改时,FreeNAS 在下次启动时进入启动循环...显然是 DNS 解析失败。我记得(当时是凌晨 3 点,我的脑子一片混乱),更新名称服务器和路由终于解决了这个问题。
- 主机上的 SMB 共享同时停止工作(并且仍未恢复)
无法 ping 通域名:
round-trip min/avg/max/stddev = 15.553/15.790/16.027/0.237 ms
root@jail:~ # ping google.com
ping: cannot resolve google.com: Host name lookup failure
如果我手动告诉监狱客户端查找域名,我会得到一个 IP 地址:
root@jail:~ # host google.com
google.com has address 172.217.15.110
google.com has IPv6 address 2607:f8b0:4009:801::200e
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 30 alt2.aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 8 smtp.google.com.
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.
但是,对于我从监狱客户端 ping 的任何 IP 地址,响应都来自监狱主机 (FreeNAS) 的 IP。从主机 ping 相同的 IP 会得到正常响应。
root@jail:~ # ping 172.217.15.110
PING 172.217.15.110 (172.217.15.110): 56 data bytes
64 bytes from 10.153.2.9: icmp_seq=0 ttl=116 time=30.454 ms
64 bytes from 10.153.2.9: icmp_seq=1 ttl=116 time=30.235 ms
64 bytes from 10.153.2.9: icmp_seq=2 ttl=116 time=30.534 ms
^C
--- 172.217.15.110 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 30.235/30.408/30.534/0.126 ms
另一个示例(注意响应中的主机 IP,10.153.2.9):
root@jail:~ # ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 56 data bytes
64 bytes from 10.153.2.9: icmp_seq=0 ttl=57 time=16.027 ms
64 bytes from 10.153.2.9: icmp_seq=1 ttl=57 time=15.553 ms
^C
--- 1.1.1.1 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
但是,如果我 ping 另一个内部 IP(路由器的 IP 除外),我会得到预期的响应:
root@jail:~ # ping 10.153.2.205
PING 10.153.2.205 (10.153.2.205): 56 data bytes
64 bytes from 10.153.2.205: icmp_seq=0 ttl=64 time=0.295 ms
64 bytes from 10.153.2.205: icmp_seq=1 ttl=64 time=0.237 ms
64 bytes from 10.153.2.205: icmp_seq=2 ttl=64 time=0.193 ms
^C
--- 10.153.2.205 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.193/0.242/0.295/0.042 ms
root@jail:~
以下是主机内部的结果netstat -rn
。我不太熟悉这个输出,但我觉得没有什么不对劲的地方(而且它与主机的版本非常相似):
root@jail:~ # netstat -rn
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default 10.0.55.1 UGS epair0b
10.0.0.0/8 link#3 U epair0b
10.153.2.250 link#3 UHS lo0
127.0.0.1 link#1 UH lo0
Internet6:
Destination Gateway Flags NetifExpire
::/96 ::1 UGRS lo0
::1 link#1 UH lo0
::ffff:0.0.0.0/96 ::1 UGRS lo0
fe80::/10 ::1 UGRS lo0
fe80::%lo0/64 link#1 U lo0
fe80::1%lo0 link#1 UHS lo0
ff02::/16 ::1 UGRS lo0
以下是客户端的内容resolv.conf
(与主机相同resolv.conf
,并且可以预见地与 FreeNAS 网络配置中的设置相匹配):
root@jail:~ # cat /etc/resolv.conf
# Generated by resolvconf
search local
nameserver 1.1.1.1
nameserver 1.0.0.1
nameserver 10.0.55.1
root@jail:~
我检查了arp缓存并且MAC地址是正确的。
那么....为什么监狱会在 ping 响应中获取主机的 IP?