现在是两个网卡,设为192.168.0.5 和 192.168.0.6
设计盗链各个问题 arp 和 路由表问题,比较软肋。
参考一,解决的是路由,如何实现从那个网卡来的数据响应时再回到哪个网卡。
我刚才测试了,完全可以实现LZ的要求。如下:
ip route add 192.168.0.0 dev eth0 src 192.168.0.253 table 100 //增加一条路由,目的网段 192.168.0.0,设定出口 eth0 设定源地址 192.168.0.253 将这条路由添加到 100这个表
ip route add 192.168.0.0 dev eth1 src 192.168.0.252 table 200
ip route add default dev eth0 table 100 //设定表100的默认路由 为 出口 eth0
ip route add default dev eth1 table 200
ip rule add from 192.168.0.253 table 100 //增加一条规则 设定来自192.168.0.253 的数据包 执行 100路由表
ip rule add from 192.168.0.252 table 200
实验过程如下:
ETH0:192.168.0.253/24
ETH1:192.168.0.252/24
无缺省路由
路由表中ETH0排在前面。
另一机器单网卡192.168.0.88
1、两个网卡的网线都链接:
此时能PING通两个IP,并且ARP表中的MAC分别指向两个对应的网卡,也就是说此时的网络是完全正常的 。单此时回流的数据走的是ETH0卡。
2、拔掉ETH1的网线:
也能够PING通2个IP,单ARP表中的MAC地址都是指向ETH0的。
3、拔掉ETH0的网线:
两个IP都PING不通,此时的ARP表中的MAC都是指向ETH1的,单因为双网卡机器中的路由表顺序问题,回流的数据无法正常返回因此无法PING通。
4、按照上面的配置:
如果2条网线都插好那么,2个地址都能PING通,并且ARP表也正常,此时观察交换机的灯,PING相应的地址的时候相应的灯在闪,说明数据流向完全正确。如果拔掉一条网线,则拔掉那条那条就PING不通了。
再参考:
参考2 :解决的事arp的问题 ,ping两个ip后,arp -a 得到的两个ip对应的mac地址相同
解决方法是:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
http://blog.sina.com.cn/s/blog_544465b0010000kf.html
再参考:
备忘录: 如何让一个程序在指定网口实现网络功能
解决方法是:
$ ip netns add ns0 //创建一个网络域
$ ip link set p0 netns ns0 //将网卡p0 添加到 域 ns0上
执行完这两句后就能 在p0口上操作了
$ ip netns exec ns0 《执行命令》
参考:http://www.ibm.com/developerworks/cn/cloud/library/1401_zhaoyi_openswitch/index.html
阅读(4420) | 评论(0) | 转发(0) |