我有一个2网卡(eth0,eth1)的系统,我用电缆将它们连接到外部
(使用交叉电缆或将它们连接到同一个交换机)。
我想从eth0 ping eth1的ip地址,我想流量通过外部(通过电缆)从eth0到eth1,但linux内核内部发送流量,不允许它通过电缆,
我怎么能解决这个问题并向外部发送流量?我使用ping"-I eth0",但问题仍然存在。
问题不在于VRF,而在于内核检测到时使用的环回,它可以使用环回而不是通过电线发送。
让我们使用真实的MAC地址和虚拟IP地址和NAT来强制内核通过有线发送数据:
arp -s IP0 MAC0
arp -s IP1 MAC1
ip route add IP0 dev eth1
ip route add IP1 dev eth0
iptables -t nat -A POSTROUTING -d IP1 -j SNAT --to-source IP0
iptables -t nat -A POSTROUTING -d IP0 -j SNAT --to-source IP1
iptables -t nat -A PREROUTING -d IP0 -j DNAT --to-destination IP0
iptables -t nat -A PREROUTING -d IP1 -j DNAT --to-destination IP1
首先,从化不同VRF上的至少一个接口,然后尝试ping -l eth0 dest
关于Linux上VRF的一些有用资源:
https://www.kernel.org/doc/Documentation/networking/vrf.txt https://renard.chezwam.org/blog/2014/09/vrf-on-linux/index.htmlPS:在BSD(rdomain)上要简单得多:)