- 论坛徽章:
- 0
|
小弟毕业设计需要完成这样一个东东:
本机的操作系统为fc3,内核版本是2.6.9,装有两块网卡,要实现从本机发数据包,而数据包可以从两块网卡均衡输出,到局域网的某台主机上.
两个网卡的ip地址分别为:
eth0:172.21.134.30;
eth1:172.21.134.11
目标主机的ip地址为: 172.21.134.64
我考虑利用ip rule的源地址匹配来做,
ip rule add from 172.21.134.11 table 101
ip rule add from 172.21.134.30 table 100
为了不影响结果,我删去了main表中的路由
ip route flush table main
同时添加路由规则:
ip route add 172.21.0.0/16 dev eth0 table 100
ip route add 172.21.0.0/16 dev eth1 table 101
然后用原始套接字编程,不停的发送源地址为172.21.134.11和172.21.134.30的udp包.
但是,使用嗅探器却发现没有包到网络上,
刚开始以为是ip rule的问题,就删除了规则:
ip rule del from 172.21.134.11 table 101
ip rule del from 172.21.134.30 table 100
然后加上ip rule add from all table 100
这样一来,网络上有我发出的数据包了,而且源地址为172.21.134.11或172.21.134.30,但是从mac地址可以看出来,这些包都是从eth0发出来的,并没有均衡负载的效果.
回过头来想一想,是由于
ip rule add from 172.21.134.11 table 101
ip rule add from 172.21.134.30 table 100
并没有匹配我发的udp包的源地址,进而就没有查询相应的路由表.
为什么会这样呢?看了不少资料都是这样写的,只不过那些大部分都是路由器上的包,而我这里是本机发的包.不知道这有什么不同,希望各位大哥赐教!
另外,我还尝试了ip rule中tos的匹配,但还是不行,请大家给点建议,应该怎么改动.或者还有什么更好的实现这个功能的方法?
谢谢! |
|