在给定的机器上,我有两个接口eth0和eth1。 思科路由器已连接到两个接口,eth0和eth1,我希望到达eth0的OSPF数据包被转发到eth1,反之亦然(见下图)。
我曾尝试发出以下命令:
iptables -A FORWARD -i eth1 -o eth0 iptables -A FORWARD -i eth0 -o eth1
但是这没有用。 此外,我希望这个转发规则只适用于OSPF数据包,根据源地址和目的地址过滤数据包,甚至可能的话甚至通过协议过滤数据包。 OSPF数据包似乎是
IP 100.1.3.2 > 224.0.0.5: OSPFv2
从一个方向,和
IP 100.1.3.1 > 224.0.0.5: OSPFv2
从另一个。

[在你的问题,我不清楚,如果linux的框是作为一个网桥/层2或作为一个三层设备,所以我假设以后。]
为广播多址networking(即以太网)configuration的OSPF Hello数据包除了发送到组播IP地址224.0.0.5外,也会发送到组播层2以太网MAC地址01:00:5e:00:00 :05。 因此,除非您的linux机箱configuration为桥接eth1和eth0,否则OSPF Hello数据包将不会穿越防火墙,并且不会形成OSPF邻居邻接关系。
那么你有另外一个问题,就是OSPF Hello数据包的TTL是1,所以它不能跨越第3层边界而不会在传输中过期。
如果你确实想要这样做,那么你需要研究一些其他的方法,比如在Router A和Router B之间创build一个GRE隧道(一个IPSec隧道也行),并且configuration一个点到点的链路通过这个隧道,然后当然,通过防火墙允许隧道使用的协议(即47为GRE)的stream量。
有关如何在GRE隧道上configurationOSPF的很好的参考资料,请参阅: 使用OSPFconfiguration通过IPsec的GRE隧道 (如果您愿意,请忽略IPSec部分)