![Linux 上的网络路由问题](https://linux22.com/image/491595/Linux%20%E4%B8%8A%E7%9A%84%E7%BD%91%E7%BB%9C%E8%B7%AF%E7%94%B1%E9%97%AE%E9%A2%98.png)
我希望有人能看看这个并告诉我我错过了什么。我有 4 台机器,出于某种原因,只有其中 1 台可以通过其私有 IP 地址(在 eth1 上)与其他 3 台机器通信。
这 4 台机器分别是:
mach01 10.176.193.17 mach02 10.176.193.92 mach03 10.176.193.27 mach04 10.176.195.9
所有机器都是 Debian lenny。从 mach02,我可以 ping 其他 3 台机器,没有问题,从其他机器,我可以 ping mach02。但是,从 mach01、mach03 和 mach04,我只能 ping mach02。
所有机器上“iptables --list”的结果是:
链输入(策略接受) 目标 保护 优化 源 目标 链转发(策略接受) 目标 保护 优化 源 目标 链输出(策略接受) 目标 保护 优化 源 目标
所以我不认为存在防火墙问题。所有机器上 eth1 的路由表如下:
10.176.192.0 * 255.255.224.0 U 0 0 0 eth1 10.191.192.0 10.176.192.1 255.255.192.0 UG 0 0 0 eth1 10.176.0.0 10.176.192.1 255.248.0.0 UG 0 0 0 eth1
所以看起来也没什么问题。出于某种原因,从 mach03 到 mach02 以外的任何地方的 ARP 请求都失败了,其他机器也是如此。
mach03$ arping -c 1 -I eth1 10.176.193.17 阿平 10.176.193.17 --- 10.176.193.17 统计数据 --- 已发送 1 个数据包,已接收 0 个数据包,100% 未答复
我看不出 ARP 会这样失败的任何原因,而且我已经没有办法了,也没有地方可以查找。有其他在排除网络故障方面更有经验的人有什么想法吗?
谢谢
编辑
尝试从 mach03 ping mach01 后,ARP 缓存中存在以下内容:
$ arp -a ? (10.176.193.17) 位于 eth1 上的 <incomplete> (67.23.45.1)位于 eth0 上的 00:00:0C:07:AC:01 [ether]
反之亦然(从 mach03 到 mach01):
? (10.176.193.92) 位于 eth1 上的 40:40:FA:77:D7:94 [ether] ? (10.176.193.27) 位于 eth1 上的 <incomplete> (67.23.45.1)位于 eth0 上的 00:00:0C:07:AC:01 [ether]
有关 eth1 的更多详细信息:
$ ip addr 显示设备 eth1 3:eth1:mtu 1500 qdisc pfifo_fast 状态未知 qlen 1000 链路/以太 40:40:16:e0:f3:dd brd ff:ff:ff:ff:ff:ff inet 10.176.193.17/19 brd 10.176.223.255 范围全局 eth1 inet6 fe80::4240:16ff:fee0:f3dd/64 范围链接 valid_lft 永远 preferred_lft 永远
答案1
嗯,你已经忽略了防火墙,所以……
以我极其有限的网络知识,我能想到的唯一的事情是:
- mach01/03/04 上的广播地址错误。
- 路由顺序混乱 - 在上例中,第 3 个条目与第 1 个条目的范围重叠。所有机器上的路由条目顺序是否相同?也许有些机器在错误的网络上执行了 arp。
“arping” 从 01/03/04 到 02 是否有效,或者他们是否通过来自 02 的传入广播数据包更新其 arp 缓存?
答案2
这有点奇怪,首先我会尝试在 mach01、mach02 和 mach03 上运行 tcpdump,看看当您尝试 ping mach01 时,mach01 和 mach02 是否从 mach03 获得 ARP 请求,它是否正在回复(对于 mach03)等等。
您知道主机之间是否可以有透明防火墙吗?这可以解释您所看到的情况。
网络拓扑是什么?主机之间有许多交换机还是只有一个?什么样的交换机?
答案3
您复制/粘贴了此信息,还是尝试输入了?您的网络中有“193”,但有一台机器显示 195。然后您在路由表中显示 192。
答案4
您能否从其中一个主机粘贴完整的主机路由表?另一个接口可能有更具体的路由。
另外,您能否在一次失败的“arping”尝试后立即发布“arp -a”的输出?这应该会显示您在 [eth1] 上尝试 arping 的 IP 地址的不完整条目,并将确认您的主机路由配置正确。