有人要求我研究一个有趣的 Linux 路由问题,我认为值得分享以供评论。两台机器都运行 SuSE 11.2。
机器 A:
- IP 地址 172.16.200.1 eth0
- 添加手动路由以指定到网络 192.168.192.0 的路由是通过 eth0
机器B:
- IP 地址 192.168.192.100 eth0
- 添加手动路由以指定到网络 172.16.200.0 的路由是通过 eth0
就是这样;机器上不再有网络配置,NIC 上没有别名等。两台机器都在非托管交换机上。
用户指出,机器只能间歇性地互相看到,并且如果 PING 停止工作,则可以通过重新启动来“修复”。
现在我要开始调查了,但在我看来这不是设置路由的方法,但客户坚持说他们以前已经这样做过很多次了,而且总是很可靠。坐在这些机器前,我可以看到它们愉快地互相 PING。
我并不是在寻找有关设置路由的教程(我知道我应该怎么做,以及如果你真的想要的话,如何使用一个 NIC 来完成) - 我的问题是:
有没有其他人见过这种用于路由的设置(即:只是添加路由),因为我的理解是上述设置中没有任何内容可以使两个网络之间的路由真正起作用!!?
我的第一个想法是,运气在使上述配置发挥作用方面起着很大的作用。
答案1
交换机不理解 IP 协议,对话必须在两个不同的网络之间进行,无需网关执行任何路由,并且通过交换机进行,因为两台机器都在同一个交换机上。
当 A 想要与 B “讨论” 时,由于该路由已通过eth0接口而不是网关,它首先通过其 eth0 接口发送 ARP 广播请求
What is the MAC address of 192.168.192.100?
(如果提到了网关,则会搜索网关 MAC 地址)
交换机自然会将 ARP 请求广播到其所有端口,并且 B 应该会收到它。
B 回复其 MAC 地址,然后 A 和 B 可以通过各自的 MAC 地址通过交换机直接通信。交换机能够“链接”端口和 MAC 地址,并且无需再进行广播即可允许机器之间进行通信(直到它们停止对话一段时间)。
它应该可以工作。