我在试着测试以太网桥接设备。我在一个linux机器上有多个以太网端口。我想在同一个子网上发送一个接口(比如eth0与IP 192.168.1.1 )到另一个接口,比如IP 192.168.1.2的eth1。
我意识到,通常情况下,您不会在同一个子网上配置两个接口,如果您直接将内核路由到每个接口,而不是通过连接。我如何才能覆盖这个行为,这样到192.168.1.2的流量就会退出192.168.1.1接口,而visa-反过来呢?
提前感谢!
发布于 2014-04-03 07:37:07
使用网络名称空间。它感觉像是在运行VM,但它不是VM,只是看上去像一个单独的IP堆栈。
ip netns add otherhost
ip netns exec otherhost /bin/bash这将在otherhost网络命名空间下打开一个shell。如果您检查其中的网络配置,您将发现没有接口。就像你在运行另一台主机。
现在,将eth1接口移动到otherhost网络命名空间:
ip link set eth1 netns otherhost现在,otherhost命名空间有您的eth1接口。配置它,就像它是一个单独的主机一样,并在默认的网络命名空间上对eth0进行同样的配置。事情就是这么简单。
注意,如果将所有shell关闭为otherhost,则网络名称空间将消失,其接口将移回默认的网络命名空间中。
发布于 2015-07-10 20:23:03
https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
accept_local-布尔接受具有本地源地址的数据包。结合适当的路由,这可以用于在两个本地接口之间通过线路引导数据包,并使它们正确地被接受。缺省假
使用sysctl -w net.ipv4.conf.eth0.accept_local=1
把包通过电线发送出去。
发布于 2012-07-31 14:31:23
试一试
#mark packets from 192.168.1.1 to 192.168.1.2
iptables -t mangle -I OUTPUT -s 192.168.1.1 -d 192.168.1.2 -j MARK --set-mark 11
#mark packets from 192.168.1.2 to 192.168.1.1
iptables -t mangle -I OUTPUT -s 192.168.1.2 -d 192.168.1.1 -j MARK --set-mark 12
#add routing table for 192.168.1.1
ip ru a fwmark 11 table 11
ip r a 192.168.1.2 dev eth0 t 11
#add routing table for 192.168.1.2
ip ru a fwmark 12 table 12
ip r a 192.168.1.1 dev eth1 t 12man ip,man iptables获得更多信息
https://serverfault.com/questions/411921
复制相似问题