两条宽带 100M,机器是双网卡,绑了 2 个网关,如何指定程序使用哪个网络?

2014-04-28 16:41:41 +08:00
 crysng
之前试过绑定2个网关,程序使用的时候调用curl的interface比如eth0,刚开始重启network后没问题,运行1晚以后完全就串了,比如eth0走了eth1的网关,或者eth1完全就上不了网
ps: eth1使用的路由器每10分钟会重拨一次
ps: 两条网关使用的都是同一个网段,eth0:192.168.1.1, eth1:192.168.1.2, 两条路由器之间直接插网线,去掉eth1的dhcp,,本本网卡指定网关192.168.1.1的网关就会走宽带1, 指定192.168.1.2就会走宽带2 单网卡使用完全没问题
7018 次点击
所在节点    Linux
21 条回复
lmaq
2014-04-28 18:04:11 +08:00
路由表
crysng
2014-04-28 18:20:47 +08:00
@lmaq 多谢,是下面这条命令么?
route add default gw {IP-ADDRESS} {INTERFACE-NAME}

路由表到现在还没搞懂
sandtears
2014-04-28 18:57:56 +08:00
如果是要进来的流量,程序绑定本地 IP 的时候,直接选定绑在哪个 IP 地址上就好了。
如果是要出去的流量,只能根据目标 IP 来编写不同的路由表,非常之麻烦。
sandtears
2014-04-28 19:04:33 +08:00
唔。。查了一下,在 Windows 下有一款名为 “Connectify Dispatch” 的收费软件可以做到按照应用程序来指定网关,不知道有没有开源实现。
crysng
2014-04-28 19:05:10 +08:00
@sandtears 多谢,这么说的话其实一根网线也能达成走不通的网关吧?
sandtears
2014-04-28 19:08:46 +08:00
@crysng 是的,完全可以,你完全可以在使用一根网线的情况下,在同一个网卡上占两个 IP
crysng
2014-04-28 19:24:05 +08:00
@sandtears 多谢,那么linux也一样的道理吧?
jacy
2014-04-28 20:17:41 +08:00
wsgzao
2014-04-28 23:27:05 +08:00
--windows网段路由
--键入 route -p add [目标] [mask <网络掩码>] [网关] [metric <度量值>] [if <接口>]
route print
route delete
route -p add 172.16.19.0 mask 255.255.255.0 198.15.0.1
注意关闭windows防火墙

--Linux(有点不同,请注意版本对应)

--添加网段路由
# vi /etc/sysconfig/network-scripts/route-eth0
172.16.19.0/24 via 198.16.2.1
defult via 198.17.1.1
--SuSE
# vi /etc/sysconfig/network/routes
172.16.19.0 198.16.2.1 255.255.255.0 eth0
default 172.16.19.1 - -

--AIX(smitty吧,我不是高手)
wsgzao
2014-04-28 23:31:48 +08:00
最后补充一点,做双网卡的主要目的应该是高可用考虑,一般采用主备(Active-Backup) or 轮询(Round-Robin),所以没有必要双网卡Bond
crysng
2014-04-29 00:30:46 +08:00
@jacy 谢谢 这也是另外一个解决方法
crysng
2014-04-29 01:06:45 +08:00
@wsgzao 多谢,明天试试
crysng
2014-04-29 01:07:04 +08:00
@wsgzao 其实我的是家庭网络,普通宽带来的
VYSE
2014-04-29 01:08:13 +08:00
crysng
2014-04-29 01:14:21 +08:00
@VYSE 多谢,,route+iptable,两个都很有挑战
mifan
2014-04-29 18:16:45 +08:00
@crysng

以前当时我用的是这个解决方案,使用LD_PRELOAD实现的, 比较简单,不过windows上没法用

http://www.ryde.net/code/bind.c.txt

-----------------------------------

当时是强制 firefox 使用 某个 ip

BIND_ADDR="xxx.xxx.xxx.xxx" LD_PRELOAD=/usr/lib/bind.so firefox
mifan
2014-04-29 18:19:44 +08:00
sorry, 好像看错了 :)
crysng
2014-04-29 21:27:18 +08:00
@mifan 多谢, 其实尝试过使用php的bing address,但是不生效不知道为什么
hydrazt
2014-04-30 11:03:19 +08:00
ip route add 192.168.1.0/24 dev em1 src 192.168.1.11 table 100
ip route add default via 192.168.1.1 dev em1 table 100
ip rule add from 192.168.1.11 lookup 100
ip route add 192.168.1.0/24 dev em2 src 192.168.1.12 table 200
ip route add default via 192.168.1.1 dev em2 table 200
ip rule add from 192.168.1.12 lookup 200

启动时执行上面的命令,从em1进入的包从em1出去,从em2进入的包从em2出去
crysng
2014-05-01 17:12:08 +08:00
@hydrazt 相当,感谢,回去试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/110367

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX