跨站点网络路由问题:Linux Server 2无法Ping通Site A的Linux Server 1
嗨,我来帮你捋捋这个问题~ 既然同站点的Linux Gateway能正常ping通Site A的Linux Server1,说明跨站点的核心连通性是没问题的,那Server2 ping不通大概率是自身路由、反向路由或者防火墙这类细节没配置对,给你列几个最该优先排查的点:
Linux Server 2的路由表缺失跨站点条目:
虽然Server2能上网,但可能它的默认路由只指向了互联网,没有专门配置到Site A网段的静态路由。你可以在Server2上执行ip route show查看路由表,看看有没有对应Server1所在网段的路由,下一跳是不是指向本地的Linux Gateway。如果没有的话,得手动添加一条,比如假设Server1的网段是192.168.1.0/24,本地Gateway的内网IP是10.0.0.1,Server2的内网网卡是eth0,那命令就是:ip route add 192.168.1.0/24 via 10.0.0.1 dev eth0(记得把网段、网关IP和网卡名换成你实际的配置)
Linux Server 1的防火墙/安全组限制了Server2网段:
Gateway能ping通Server1,可能是Server1的防火墙规则里只允许来自Gateway所在网段的ICMP请求,而把Server2的网段给拦截了。你登录到Server1后,可以用iptables -L -n(如果用iptables)或者firewall-cmd --list-all(如果用firewalld)查看ICMP相关的规则,看看有没有针对Server2网段的DROP或者REJECT规则。Server1缺少到Server2网段的反向路由:
Ping是双向通信,Server1收到Server2的ping请求后,得知道怎么把回应包发回Server2所在的网段。你要检查Server1的路由表ip route show,有没有到Server2网段的路由条目,下一跳是不是Site A的网关?如果没有这条反向路由,Server1的回包会走默认路由(比如去互联网),这样Server2就收不到回应了。Server2自身防火墙拦截了ICMP回应:
这种情况概率相对低,但也可以排查下——比如Server2的防火墙是不是禁止了ICMP的入站回应?你可以在Server2上执行iptables -L INPUT -n | grep icmp,看看有没有相关的DROP规则,有的话调整下就行。Gateway的转发规则有没有遗漏:
虽然Gateway开了IPv4转发(执行sysctl net.ipv4.ip_forward应该返回1),但会不会是它只配置了让Server2上网的SNAT规则,而没有对跨站点的流量做转发?不过Gateway本身能ping通Server1,说明Gateway的路由是对的,这个可以放在最后排查。
备注:内容来源于stack exchange,提问作者DavidH

