玩转双网卡第三讲:负载均衡,多路internet带宽合并

非常感谢 一剑 ,这个方法也是从他哪里学习到的,谢谢。

 

这一讲开始讲解多路internet带宽合并的问题,比较简单的情况是多路通路网关并不一样,原计划为第三讲,通过前两节的学习后,这个很容易解决,有时间再回头讲。那么这一讲重点讲解,多路internet访问时,网关相同的情况,原计划是第四讲的内容,因为大多时候我们并不能控制路由器,去修改为不同的网关,比如上多块无线网卡时^-^。

环境:无线网卡A,IP 192.168.1.8 网关192.168.1.1
   无线网卡B,IP 192.168.1.106 网关192.168.1.1

C:/Windows/system32>route print
===========================================================================
接口列表
 16...00 a0 f5 30 5a 36 ......Realtek RTL8187 Wireless 802.11b/g 54Mbps USB 2.0
Network Adapter
 13...00 3e fc 09 23 a6 ......Broadcom NetLink (TM) Fast Ethernet
 12...00 15 f3 a7 6c c3 ......Intel(R) WiFi 链接 5100 AGN
  1...........................Software Loopback Interface 1
 17...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #3
 18...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #4
 11...00 00 00 00 00 00 00 e0 Microsoft Teredo Tunneling Adapter
===========================================================================

IPv4 路由表
===========================================================================
活动路由:
网络目标        网络掩码          网关       接口   跃点数
          0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.8     30
          0.0.0.0          0.0.0.0      192.168.1.1    192.168.1.106     40
        127.0.0.0        255.0.0.0            在链路上         127.0.0.1    306
        127.0.0.1  255.255.255.255            在链路上         127.0.0.1    306
  127.255.255.255  255.255.255.255            在链路上         127.0.0.1    306
      192.168.1.0    255.255.255.0            在链路上       192.168.1.8    286
      192.168.1.0    255.255.255.0            在链路上     192.168.1.106    296
      192.168.1.8  255.255.255.255            在链路上       192.168.1.8    286
    192.168.1.106  255.255.255.255            在链路上     192.168.1.106    296
    192.168.1.255  255.255.255.255            在链路上       192.168.1.8    286
    192.168.1.255  255.255.255.255            在链路上     192.168.1.106    296
        224.0.0.0        240.0.0.0            在链路上         127.0.0.1    306
        224.0.0.0        240.0.0.0            在链路上       192.168.1.8    286
        224.0.0.0        240.0.0.0            在链路上     192.168.1.106    296
  255.255.255.255  255.255.255.255            在链路上         127.0.0.1    306
  255.255.255.255  255.255.255.255            在链路上       192.168.1.8    286
  255.255.255.255  255.255.255.255            在链路上     192.168.1.106    296
===========================================================================
永久路由:
  无

问题:我们发现,即使是最新的win7,也只是把两路internet作为备用关系,并不能同时利用,问题的关键就是路由表的前两句:
网络目标        网络掩码          网关                    接口            跃点数
   0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.8       30
   0.0.0.0          0.0.0.0      192.168.1.1    192.168.1.106     40
        由于两路出口有不同的跃点数,所以30的那路总是被优先使用,40那路始终利用不上。
        那么我们手工把它们改成一样是不是就可以了呢,经测试发现这样处理,所以程序会随机选择internet出口,导致外网IP地址不停地变换,结果就是程序不停地掉线,比如QQ,即便是P2P软件,我们可以通过netstat -n查看到,两路internet都被利用上了,但p2p软件的下载速度反而很低,这是因为你不能固定一个IP给别人流量,导致别人给你的流量也大大减少了。这也是网络上很多同类软件的通病。

解决:就是要把internet上的所有IP地址固定分摊到两块网上就可以了,这可以通过修改路由表实现。

        由于有相同的网关,事情变得复杂起来了,还记得那个if参数吗?对,相同网关,我们可以用if来区分经由不同的网卡出口,比如:
route add 202.0.0.0 mask 255.0.0.0 192.168.1.1 metric 20 if 16
route add 203.0.0.0 mask 255.0.0.0 192.168.1.1 metric 20 if 12
      我们就把两大类IP访问分摊到两张网卡上了。
      如果我们穷举所有的IP分类,并分摊到两张网卡上,问题就解决了。
      那么,如何验证呢?一是看P2P软件的下载流量增加了,二是更具体的用netstat -n查看所有外网连接都被均匀经由两张网卡出去了。
      需要说明的是,该方法只对多点下载有效,比如P2P软件,对单点下载无效。
      为了方便操作,我已把它做成了批命,下载附件执行一下就OK了,批命令会轮询你的网卡中哪些是连上了internet的,支持最多五块网卡同时连通internet。
     

     多网合并时,如果你在使用中有问题,重启就可以了,这个批命令重启就会失效。

 

 

以下的代码 拷贝的 记事本上,把后缀名改成 .bat

[(win7需要以管理员身份运行)]

 

@echo off
echo.
echo               ╭─────────╮
echo   ╭─────┤   internet加速   ├─────╮
echo   │          ╰─────────╯          │
echo   │     仅支持不超过五路internet负载均衡     │
echo   │                                          │
echo   │         msn:        │
echo   ╰─────────────────────╯
echo.
echo 请以管理员身份运行此批命令
echo.
echo 运行此命令前:
echo ------请先把各网卡连通internet
echo ------请先行用ipconfig /all查看各网卡对应网关情况
echo.
setlocal EnableDelayedExpansion

rem 获取网卡信息-----------------------------------------
for /f "delims=" %%i in ('route print ^| find "..."') do (
set /a n+=1
set line!n!=%%i
)
echo.

rem 获取网关信息-----------------------------------------
set m=1 & set o=1
:getinter
for /f "tokens=2 delims==" %%i in ('set line%m%') do set line%m%=%%i
set yn=
set /p yn=!line%m%! 是internet通路吗[直接回车默认n][y/n]?:
if "%yn%" == "y" (
for /f "tokens=1,* delims=. " %%i in ("!line%m%!") do set interface%o%=%%i
set /p gateway%o%=...........网关[直接回车默认192.168.1.1]:
if "#!gateway%o%!" == "#" set gateway%o%=192.168.1.1
set /a o+=1
)
set /a m+=1
if %m% leq %n% goto getinter

rem 设置路由-----------------------------------------
echo.

if "#%interface1%" == "#" (
echo 没有internet通路
goto ext
)

if "#%interface2%" == "#" (
echo 只有一块网卡上网,不能负载均衡
goto ext
)

rem 排除IP:10 127 172 169 192
if "#%interface3%" == "#" (
echo 有二块网卡上网,开始负载均衡...
set n1=1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 203 205 207 209 211 213 215 217 219 221 223
set n2=2 4 6 8 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 102 104 106 108 110 112 114 116 118 120 122 124 126 128 130 132 134 136 138 140 142 144 146 148 150 152 154 156 158 160 162 164 166 168 170 174 176 178 180 182 184 186 188 190 194 196 198 200 202 204 206 208 210 212 214 216 218 220 222
rem route delete 0.0.0.0 >nul
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 %gateway1% metric 30 if %interface1%
for %%i in (!n1!) do route add %%i.0.0.0 mask 255.0.0.0 %gateway1% metric 25 if %interface1%
for %%i in (!n2!) do route add %%i.0.0.0 mask 255.0.0.0 %gateway2% metric 25 if %interface2%
goto ext
)

if "#%interface4%" == "#" (
echo 有三块网卡上网,开始负载均衡...
set n1=1 4 7 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94 97 100 103 106 109 112 115 118 121 124 130 133 136 139 142 145 148 151 154 157 160 163 166 175 178 181 184 187 190 193 196 199 202 205 208 211 214 217 220 223
set n2=2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59 62 65 68 71 74 77 80 83 86 89 92 95 98 101 104 107 110 113 116 119 122 125 128 131 134 137 140 143 146 149 152 155 158 161 164 167 170 173 176 179 182 185 188 191 194 197 200 203 206 209 212 215 218 221
set n3=3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99 102 105 108 111 114 117 120 123 126 129 132 135 138 141 144 147 150 153 156 159 162 165 168 171 174 177 180 183 186 189 195 198 201 204 207 210 213 216 219 222
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 %gateway1% metric 30 if %interface1%
for %%i in (!n1!) do route add %%i.0.0.0 mask 255.0.0.0 %gateway1% metric 25 if %interface1%
for %%i in (!n2!) do route add %%i.0.0.0 mask 255.0.0.0 %gateway2% metric 25 if %interface2%
for %%i in (!n3!) do route add %%i.0.0.0 mask 255.0.0.0 %gateway3% metric 25 if %interface3%
goto ext
)

if "#%interface5%" == "#" (
echo 有四块网卡上网,开始负载均衡...
set n1=1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97 101 105 109 113 117 121 125 129 133 137 141 145 149 153 157 161 165 173 177 181 185 189 193 197 201 205 209 213 217 221
set n2=2 6 14 18 22 26 30 34 38 42 46 50 54 58 62 66 70 74 78 82 86 90 94 98 102 106 110 114 118 122 126 130 134 138 142 146 150 154 158 162 166 170 174 178 182 186 190 194 198 202 206 210 214 218 222
set n3=3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63 67 71 75 79 83 87 91 95 99 103 107 111 115 119 123 131 135 139 143 147 151 155 159 163 167 171 175 179 183 187 191 195 199 203 207 211 215 219 223
set n4=4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120 124 128 132 136 140 144 148 152 156 160 164 168 176 180 184 188 196 200 204 208 212 216 220
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 %gateway1% metric 30 if %interface1%
for %%i in (!n1!) do route add %%i.0.0.0 mask 255.0.0.0 %gateway1% metric 25 if %interface1%
for %%i in (!n2!) do route add %%i.0.0.0 mask 255.0.0.0 %gateway2% metric 25 if %interface2%
for %%i in (!n3!) do route add %%i.0.0.0 mask 255.0.0.0 %gateway3% metric 25 if %interface3%
for %%i in (!n4!) do route add %%i.0.0.0 mask 255.0.0.0 %gateway4% metric 25 if %interface4%
goto ext
)

if not "#%interface5%" == "#" (
echo 有五块网卡上网,开始负载均衡...
set n1=1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 116 121 126 131 136 141 146 151 156 161 166 171 176 181 186 191 196 201 206 211 216 221
set n2=2 7 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97 102 107 112 117 122 132 137 142 147 152 157 162 167 177 182 187 197 202 207 212 217 222
set n3=3 8 13 18 23 28 33 38 43 48 53 58 63 68 73 78 83 88 93 98 103 108 113 118 123 128 133 138 143 148 153 158 163 168 173 178 183 188 193 198 203 208 213 218 223
set n4=4 9 14 19 24 29 34 39 44 49 54 59 64 69 74 79 84 89 94 99 104 109 114 119 124 129 134 139 144 149 154 159 164 174 179 184 189 194 199 204 209 214 219
set n5=5 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200 205 210 215 220
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 %gateway1% metric 30 if %interface1%
for %%i in (!n1!) do route add %%i.0.0.0 mask 255.0.0.0 %gateway1% metric 25 if %interface1%
for %%i in (!n2!) do route add %%i.0.0.0 mask 255.0.0.0 %gateway2% metric 25 if %interface2%
for %%i in (!n3!) do route add %%i.0.0.0 mask 255.0.0.0 %gateway3% metric 25 if %interface3%
for %%i in (!n4!) do route add %%i.0.0.0 mask 255.0.0.0 %gateway4% metric 25 if %interface4%
for %%i in (!n5!) do route add %%i.0.0.0 mask 255.0.0.0 %gateway5% metric 25 if %interface5%
goto ext
)

if "#%interface6%" == "#" (
echo 未作开发,如有需要,请自行扩展...
rem 扩展第六块网卡支持,仅需要参照前面改写此if命令块语句即可,以下同。
goto ext
)

if %o% geq 7 echo echo 未作开发,如有需要,请自行扩展...

:ext
echo.
echo 负载均衡完毕!
echo.
pause

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值