V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
crysng
V2EX  ›  Linux

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

  •  
  •   crysng · 2014-04-28 16:41:41 +08:00 · 7004 次点击
    这是一个创建于 3880 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前试过绑定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 单网卡使用完全没问题
    21 条回复    2014-05-03 22:58:06 +08:00
    lmaq
        1
    lmaq  
       2014-04-28 18:04:11 +08:00
    路由表
    crysng
        2
    crysng  
    OP
       2014-04-28 18:20:47 +08:00
    @lmaq 多谢,是下面这条命令么?
    route add default gw {IP-ADDRESS} {INTERFACE-NAME}

    路由表到现在还没搞懂
    sandtears
        3
    sandtears  
       2014-04-28 18:57:56 +08:00
    如果是要进来的流量,程序绑定本地 IP 的时候,直接选定绑在哪个 IP 地址上就好了。
    如果是要出去的流量,只能根据目标 IP 来编写不同的路由表,非常之麻烦。
    sandtears
        4
    sandtears  
       2014-04-28 19:04:33 +08:00
    唔。。查了一下,在 Windows 下有一款名为 “Connectify Dispatch” 的收费软件可以做到按照应用程序来指定网关,不知道有没有开源实现。
    crysng
        5
    crysng  
    OP
       2014-04-28 19:05:10 +08:00
    @sandtears 多谢,这么说的话其实一根网线也能达成走不通的网关吧?
    sandtears
        6
    sandtears  
       2014-04-28 19:08:46 +08:00
    @crysng 是的,完全可以,你完全可以在使用一根网线的情况下,在同一个网卡上占两个 IP
    crysng
        7
    crysng  
    OP
       2014-04-28 19:24:05 +08:00
    @sandtears 多谢,那么linux也一样的道理吧?
    jacy
        8
    jacy  
       2014-04-28 20:17:41 +08:00
    wsgzao
        9
    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
        10
    wsgzao  
       2014-04-28 23:31:48 +08:00
    最后补充一点,做双网卡的主要目的应该是高可用考虑,一般采用主备(Active-Backup) or 轮询(Round-Robin),所以没有必要双网卡Bond
    crysng
        11
    crysng  
    OP
       2014-04-29 00:30:46 +08:00
    @jacy 谢谢 这也是另外一个解决方法
    crysng
        12
    crysng  
    OP
       2014-04-29 01:06:45 +08:00
    @wsgzao 多谢,明天试试
    crysng
        13
    crysng  
    OP
       2014-04-29 01:07:04 +08:00
    @wsgzao 其实我的是家庭网络,普通宽带来的
    crysng
        15
    crysng  
    OP
       2014-04-29 01:14:21 +08:00
    @VYSE 多谢,,route+iptable,两个都很有挑战
    mifan
        16
    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
        17
    mifan  
       2014-04-29 18:19:44 +08:00
    sorry, 好像看错了 :)
    crysng
        18
    crysng  
    OP
       2014-04-29 21:27:18 +08:00
    @mifan 多谢, 其实尝试过使用php的bing address,但是不生效不知道为什么
    hydrazt
        19
    hydrazt  
       2014-04-30 11:03:19 +08:00   ❤️ 1
    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
        20
    crysng  
    OP
       2014-05-01 17:12:08 +08:00
    @hydrazt 相当,感谢,回去试
    crysng
        21
    crysng  
    OP
       2014-05-03 22:58:06 +08:00
    @hydrazt 搞定
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4562 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:53 · PVG 11:53 · LAX 19:53 · JFK 22:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.