目标主机无法到达 (ICMP),尽管简单的 ping 即可到达同一主机

目标主机无法到达 (ICMP),尽管简单的 ping 即可到达同一主机

我已经在两台直接相互连接的 CentOS 主机上使用端口 179 (BGP) 设置了一些应用程序,但它们似乎无法建立连接,所以我开始tcpdump检查发生了什么:

$ tcpdump --interface ens20 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens20, link-type EN10MB (Ethernet), capture size 262144 bytes
09:10:53.715981 IP 10.0.5.2.46577 > 10.0.5.3.179: Flags [S], seq 4065918158, win 29200, options [mss 1460,sackOK,TS val 2186333430 ecr 0,nop,wscale 7], length 0
09:10:53.716897 IP 10.0.5.3 > 10.0.5.2: ICMP host 10.0.5.3 unreachable - admin prohibited filter, length 68
09:10:59.179303 ARP, Request who-has 10.0.5.2 tell 10.0.5.3, length 28
09:10:59.179322 ARP, Reply 10.0.5.2 is-at 3e:63:58:e9:a3:d9, length 28

好的,看起来其他主机甚至无法访问。这很奇怪,因为我已经尝试过 ping 并确信它有效。因此,ping -I ens20 10.0.5.2在主机上再尝试一次10.0.5.3。 (而且,为了确保我也尝试了相反的效果,效果相同。)

09:11:40.186862 IP 10.0.5.2 > 10.0.5.3: ICMP echo request, id 3941, seq 1, length 64
09:11:40.187309 IP 10.0.5.3 > 10.0.5.2: ICMP echo reply, id 3941, seq 1, length 64
09:11:41.233187 IP 10.0.5.2 > 10.0.5.3: ICMP echo request, id 3941, seq 2, length 64
09:11:41.233570 IP 10.0.5.3 > 10.0.5.2: ICMP echo reply, id 3941, seq 2, length 64
09:11:45.260415 ARP, Request who-has 10.0.5.2 tell 10.0.5.3, length 28
09:11:45.260438 ARP, Reply 10.0.5.2 is-at 3e:63:58:e9:a3:d9, length 28
09:11:45.457134 ARP, Request who-has 10.0.5.3 tell 10.0.5.2, length 28
09:11:45.457418 ARP, Reply 10.0.5.3 is-at ae:e9:68:81:26:dc, length 28

太好了,ping成功了,我可以联系到房东了。好的,下一个想法:我可以自己通过端口 179 到达另一台主机,例如通过telnet -b 10.0.5.2 10.0.5.3 179(from 10.0.5.2)。没有,telnet: connect to address 10.0.5.3: No route to host。但港口开放了吗?是的,telnet -b 10.0.5.2 10.0.5.3 179有效(来自10.0.5.3)。tcpdump显示了与上述应用程序相同的 telnet 实验错误。

为了完整起见,这里也给出了接口配置(/etc/sysconfig/network-scripts/ifcfg-ens20):

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens20
UUID=7f8ca407-e96a-497e-865c-972a6f1940d6
DEVICE=ens20
ONBOOT=yes
IPADDR=10.0.5.2
PREFIX=24

(同一主机上还配置了另一个接口,但我希望该接口配置为使用外部 IP 地址,并且不应干扰 10.0.5.0/24。)

这些主机上没有启用防火墙(干净的 CentOS 最小安装),并且这些主机是直接连接的。我不知道为什么一个请求不被允许通过,而另一个则不允许,但可能与多个接口的使用有关。您会在哪里寻找有关正在发生的事情的更多详细信息?

答案1

代码为“目标不可达”且类型为“管理禁止”的 ICMP 数据包是由数据包过滤器生成的,而不是 TCP/IP 堆栈。

nftables鉴于此, (或遗产)的状态iptables应该能够明确原因。

正如评论中所发布的,CentOSfirewalld默认情况下已启用。该软件包提供了firewall-cmd用于配置防火墙的命令。应添加新规则以打开目标端口。

当然,禁用它firewalld也是可能的,但前提是您了解风险。

相关内容