V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
crysng
V2EX  ›  Linux

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

  •  
  •   crysng · Apr 28, 2014 · 7718 views
    This topic created in 4395 days ago, the information mentioned may be changed or developed.
    之前试过绑定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 replies    2014-05-03 22:58:06 +08:00
    lmaq
        1
    lmaq  
       Apr 28, 2014
    路由表
    crysng
        2
    crysng  
    OP
       Apr 28, 2014
    @lmaq 多谢,是下面这条命令么?
    route add default gw {IP-ADDRESS} {INTERFACE-NAME}

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