写了个多网卡聚合的小小工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
120267583
V2EX    分享创造

写了个多网卡聚合的小小工具

  •  1
     
  •   120267583 2022-04-25 14:21:15 +08:00 4612 次点击
    这是一个创建于 1312 天前的主题,其中的信息可能已经有所发展或是发生改变。

    由于自己平时有多网卡并发的需求,但是 window 系统好像默认只会走一个出口联网,

    网上看了下也没找到合适的工具,干脆自己写了个小工具来实现了

    https://github.com/iptop/multi-wan-socks5

    目前已经能实现我自己同时调用多个网卡下载的需求,希望可以起到抛砖引玉的作用

    其实原理也很简单,创建 TCP 套接字的时候如果指定了 localaddr.IP ,就会优先从对应的网卡走了,不过绝大多数的应用程序是不会指定的

    21 条回复    2022-04-25 23:28:28 +08:00
    anshigm
        1
    anshigm  
       2022-04-25 15:15:06 +08:00
    效果等于是 windows 上面的 load-balancing 吗?
    120267583
        2
    120267583  
    OP
       2022-04-25 15:31:45 +08:00
    @anshigm 实际上在 mac 和 Linux 上应该也能工作
    missdeer
        3
    missdeer  
       2022-04-25 15:46:02 +08:00
    只能下载用吗?
    asilin
        4
    asilin  
       2022-04-25 16:10:02 +08:00
    @120267583 Linux 4.15 环境下无法正常运行
    cs8425
        5
    cs8425  
       2022-04-25 16:23:28 +08:00   1
    linux 下绑定 LocalAddr 会被路由影响而失效
    要使用特别的 system call
    code 可以参考: https://github.com/cs8425/go-smalltools/blob/master/network/socks.go#L149-L162
    前几天也有 V 友问过类似的问题: t/848821
    littlewing
        6
    littlewing  
       2022-04-25 16:27:29 +08:00
    网速可以叠加吗
    120267583
        7
    120267583  
    OP
       2022-04-25 17:11:45 +08:00
    @missdeer 如果你要用这个来看网页负载均衡应该也可以
    120267583
        8
    120267583  
    OP
       2022-04-25 17:48:50 +08:00
    @asilin 我自己试了下 Linux5.3 内核是可以的,你这个错误应该和内核版本没关系,应该是哪个情况我还没考虑到
    120267583
        9
    120267583  
    OP
       2022-04-25 17:49:32 +08:00
    @cs8425 长见识了
    120267583
        10
    120267583  
    OP
       2022-04-25 17:52:22 +08:00
    @littlewing 可以的,主要就是为了这个目的做的
    cs8425
        11
    cs8425  
       2022-04-25 18:03:58 +08:00
    @asilin #4
    @120267583 #8
    看了下 code
    应该是界面没位址或是只有一个位址
    NSDont
        12
    NSDont  
       2022-04-25 18:13:12 +08:00
    和梯子如何结合?比如 clash
    120267583
        13
    120267583  
    OP
       2022-04-25 18:47:01 +08:00
    @NSDont 不懂你的场景,不过估计得改造源码了
    120267583
        14
    120267583  
    OP
       2022-04-25 18:48:29 +08:00
    @cs8425 因为主力开发语言不是 go ,异常处理的不够严谨
    NSDont
        15
    NSDont  
       2022-04-25 19:20:28 +08:00
    v mac 下执行报错了
    120267583
        16
    120267583  
    OP
       2022-04-25 19:36:05 +08:00
    @NSDont 看来得用 mac 调试一波了
    120267583
        17
    120267583  
    OP
       2022-04-25 20:10:03 +08:00
    @NSDont @asilin 暂时加了个数组长度的判断应该稳了
    github2020
        18
    github2020  
       2022-04-25 20:14:12 +08:00
    可以用现成的工具: https://github.com/nadoo/glider
    glider -verbose -listen :8443 -forward=direct://#interface=eth0 -forward=direct://#interface=eth1
    0x5e
        19
    0x5e  
       2022-04-25 21:06:02 +08:00
    最近也在研究 win 链路聚合的事情,分享两个方案
    1. 把 windows server 的 lbfo 模块移植过来
    https://github.com/gsuberland/lbfo_win10
    2. 使用 intel 网卡驱动中自带的链路聚合功能( win11 需要下旧版本的驱动大概是 26.4 之前的,新的不提供此功能了)
    120267583
        20
    120267583  
    OP
       2022-04-25 23:21:15 +08:00
    @github2020 长见识了,没想到还有这样集大成者
    120267583
        21
    120267583  
    OP
       2022-04-25 23:28:28 +08:00
    @0x5e 你这个技术路线我没太听懂,但是听着感觉难度挺大的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     956 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 22:32 PVG 06:32 LAX 14:32 JFK 17:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86