LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1573|回复: 6

一台服务器有多张网卡,要让数据包从指定的发出去,怎么实现,多谢!

[复制链接]
发表于 2006-10-7 01:09:15 | 显示全部楼层 |阅读模式
假如linux服务器下有几个网卡,且都属于一个网段,通常数据从eth0,发出,那该如何指定一些特殊数据从eth1或eth2 发送呢?

哪位知道的给个解决方案好不?
发表于 2006-10-7 04:11:22 | 显示全部楼层
用iptables试试
回复 支持 反对

使用道具 举报

发表于 2006-10-7 09:30:22 | 显示全部楼层
Post by nyk
假如linux服务器下有几个网卡,且都属于一个网段,通常数据从eth0,发出,那该如何指定一些特殊数据从eth1或eth2 发送呢?

哪位知道的给个解决方案好不?



从IP 寻址的角度来说,严禁同一台机器的多个网卡在同一网段,会造成环路!
回复 支持 反对

使用道具 举报

发表于 2006-10-8 13:34:30 | 显示全部楼层
iptables恐怕也不能实现哦,-j后面的动作好像没有指定从哪块网卡出去的参数。
回复 支持 反对

使用道具 举报

发表于 2006-10-8 14:21:56 | 显示全部楼层
是的吧,想想编程时假如调用bind函数时的参数的IP地址指定为INADDR_ANY,那么通讯时会根据目的地址来自动获取本机的一个地址进行帮定,假如有几个地址属于同一网段,那么将如何帮定呢?从这个意义来讲也是不允许把多个网卡的地址设成在一个网段的吧。
回复 支持 反对

使用道具 举报

发表于 2006-10-8 16:13:32 | 显示全部楼层
iproute2就可以啊.
添加一条策略,比如去往那个地址的via哪个dev.
如果是应用的话就要再iptables打个mask然后根绝mask判断应用了.
回复 支持 反对

使用道具 举报

发表于 2006-10-8 20:15:02 | 显示全部楼层
假设:
有3个网卡 eth0 eth1 eth2
地址:192.168.0.1 192.168.0.2 192.168.0.3 网关 192.168.0.254

ip route add default via 192.168.0.254 dev eth0 table 100 src 192.168.0.1
ip route add default via 192.168.0.254 dev eth1 table 200 src 192.168.0.2
ip route add default via 192.168.0.254 dev eth3 table 300 src 192.168.0.3

ip rule add from 192.168.0.1 table 100
ip rule add from 192.168.0.2 table 200
ip rule add from 192.168.0.3 table 300

这样设置后,你访问哪个地址,就会使用哪个网卡来发送数据

还有,多个网卡设置为同一段的IP不会引起任何麻烦,只是需要提醒的是设置IP的时候不能每个网卡都设置缺省网关,否则就会有麻烦了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表