跳到正文
返回

[2020.03.15] WR1200JS 路由器在OpenWRT系统下双WAN同时接入并实现自定义路由运营商

中国奠信,世界加钱可及

作为一名VPS老年玩家,各种奇葩的机器配置和路由咱都差不多艹了个遍。但是,当玩腻了之后,想从中挑选一只满意的机器又何其困难。其中最大的坎就卡在网络连接的问题上了。就拿谷歌云举个例子,谷歌云的线路与境外各大运营商之间的互联已经算得上是几乎完美的了。然而从大陆电信访问就是花式丢包加上各种魔法绕路。加上最近受不明原因的影响,CN2 也跪了。单方走访调查后,最终选择了加一条备胎的方案。大陆流量喂给电信,境外的就塞给联通好了。

提前跟联通派上门的小哥沟通好了,从他那儿接过了PPPOE账号密码。剩下的需要我做的有这么几件事儿:

  1. 在WR1200JS上配置两条运营商同时接入
  2. 写路由,让路由器根据目标IP地址自动选择对应的WAN口走出去
  3. 告别辣鸡电信出口,享受美好生活

(一 双WAN接入,同时拨号

WR1200JS只有一个蓝色的WAN口,但对这于OpenWRT这样强大的系统来说都不是事。登录路由器管理界面,备份好当前配置后切换到 Network → Switch(中文名叫交换机)。在预置VLAN ID为1的那一行中,将LAN 1接口由untagged(未标记)设置为off。这样LAN 1接口就会被释放出来,用于备胎接入的WAN口。然后点击左下角的【ADD VLAN】,在新加的VLAN中设置CPU接口为tagged(已标记),LAN为untagged(未标记),其余接口不做修改。看上去像这样:
wqwdws.JPG

继续配置拨号。Network → Interfaces新加一个接口,姑且命名为【UNION】好了。协议选【PPPOE】,Interface是刚才划出来的VLAN, 名为【eth0.3】。建好后编辑它,输入联通小哥给的用户名和密码,Firewall Settings 选择【WAN】,保存并生效后顺利拿到IP。至此双线接入&拨号已经解决。
fnwerofknf.JPG
(上方电信,下方联通)

(二 告诉路由器如何分配流量

路由器当然不知道我们的想法,在它看来两个WAN接口之间是无异的。于是默认情况下路由器会随机选择这两个WAN口转发流量。有可能前一秒走电信网络,后一秒跳成联通了。不仅给网络稳定性造成了负面影响,它还会使一些网站的账号登不上去。接下来要做的就是告诉路由器,将个别IP(梯子节点)的流量路由到备胎联通,剩下的路由到正宫。为此需要给两个WAN口以及下面添加的自定义路由设置不同的跃点数(优先级)。

关于为什么只设置个别IP而不是全体境外/境内IP段,这是因为WR1200JS的核心——MT7530性能不太行,设置太多的静态路由会增加路由耗时,造成网络堵塞严重影响使用。所以,为了你好它好,还是别给它太大的压力吧

咱钦定的跃点数为:

目标优先级跃点数
梯子节点高5
非梯子节点低10

回到路由器管理界面,Network → Interfaces,编辑电信的WAN接口,Advanced Settings 选项卡下 【Use gateway metric】设置为 【10】 。 联通的接口也最好锁定一下跃点。否则万一联通接口自动分配的跃点数比电信还低,流量又会全跑到联通那边去了。仿照设置电信接口的方法,对联通的接口设置一个很大的数字,比如说 【50】 就可以了。

*在后期的使用中,我发现部分网站(如百度等)会解析到联通的IP,而根据咱的路由规则这些IP走的又是电信的出口。理论上OpenWRT应该查询跃点数低的接口的DNS,不知道这是咱这边的网络不稳定还是OpenWRT的Bug。为了避免这种情况,需要把联通接口的DNS禁用掉。方法也很简单,在设置跃点数的框框上方,【Use DNS servers advertised by peer】去掉勾,【Use custom DNS servers】留空就好。这样,OpenWRT只会选择电信接口查询DNS。

huifwejkf.JPG
(电信接口)
bisdbfcikwdes.JPG
(联通接口)

保存并生效后,在Network → Static Routes下,ADD一条规则:

InterfaceTargetNetmaskGatewayMetricSource Address
UNION梯子IP默认即可UNION接口获取到的网关5192.168.X.0/24(内网网段)

huiewbfiwelf.JPG
fldvdfdf.JPG

如果有其他需要通过联通接口走出去的目标,依次添加即可,跃点数都可以设置成【5】。

最后保存并生效,等待5秒后tracert梯子IP,可以看到第二跳是UNION接口的网关,而tracert百度IP依然为原来的电信网关。这说明刚刚配置的路由已经生效。(为保护隐私这里就不放图了)

(三 令人生草的测速环节

本测速环节毫无任何严谨性,仅供各位看官参考

下面进入正片,灯光音效全开!
测试时间某年某月某日晚高峰(23点整),地点华南,目标节点谷歌云香港C区,启用BBR拥塞控制

第一项,HTTP GET大文件测试

正宫优先,有请中国奠信选手登场!

bhsdjvbehjkvbke.JPG
号称百兆的电信选手实际只达到了 2 MB/s 的速度,在后期甚至下滑到了 700 KB/s
差评!╰(‵□′)╯ 镜头左转

qwqwqwqwqwq.jpg
同样百兆的联通选手以 13 MB/s 的稳定速度完美击败了对方!

第二项,国际惯例油管4K

测试视频为[MMD] Catch The Wave
上回合胜利的联合通信选手优先登场!
bfikwelfiweklf.JPG

在4K画质下联通选手迅速加载了画面并取得了7万的佳绩,甚至在缓存达到饱和前,速度仍有上升的趋势。
可惜视频最大缓存似乎只有23秒,联通选手并未能展示出全部实力。
而电信选手是否能在第二项测试中挽回局面呢?
dgwbiqd.JPG

卡了!卡了!我老婆MIKU她卡住了!!
奠信选手经过了数秒的黑屏后终于摸出了第一帧,然而在短短的半s后画面停滞不前,加载光环牢牢地套在了我老婆头上
又等待了一会儿,电信选手蓄力后放出致命一招,拿到了0.8万的超超超高分,后一瞬降温维持在了0.6万的分数并再起不能。

<全剧终>
v2-0068f1333f2990706ce076e3d94f7b10_720w.jpg
(图源水印)

(四 总结

  1. WR1200JS本身只带1个WAN口,但经过刷机并增加一条VLAN后可以实现双WAN接入
  2. 接上一条,再增加一条VLAN后还可增加一只WAN口
    但再加一条其他二流运营商的线路毫无意义,就算是移动这样免费送的宽带也只是浪费网口
  3. 联通NB!联通NB!联通NB!!

(五 后续

v2-db83ac77223b3ea0b1cd94e250cb89e9_r.jpg
(图源水印)

某网课平台由于众所周知的大原因,在高峰时段登陆成功的概率如中彩票一般。后来咱向华南电信DNS nslookup 了一下它的API主机名,竟返回了二十个北京联通的IP,还出自同一个/24 网段。这运维人员水平有多低,我暂且蒙在北京联通网段里。

于是,咱让这个网段下的所有主机都享受了梯子级待遇,在静态路由中将该平台的整个网段划给了联通。具体操作Target填写X.X.X.0,Netmask填写255.255.255.0,其他与上文相同。保存生效后,整个平台打开速度有了百分之千的提升。

世界清静了

原本为了加速梯子而掏钱办理的宽带

竟成为了网课平台的学习利器!!

从网课的大坑中有幸爬出又掉落回去的我

枯了

(六 后续的后续

这两天在折腾反代的时候发现,GCP连不上电信IP暴露的端口。以为是电信又炸了,后来在不同时段重试了几次还是相同的结果。一番排查下来发现是OpenWRT将回复的SYN+ACK包通过联通发出去了。这并不是咱希望看到的。咱希望的只是从家庭内网中主动走出去的流量转发到联通,而电信入方向的流量原路走出去(毕竟联通上传龟速,还没有公网IP。如果真拿联通挂PT啥的,我号已经没了)。

为了解决这个问题,咱使用了mwan3这个用于均衡负载的软件包。在某屎黄色LOGO网站上不是PronHub有很多老司机写过多拨的教程,参照那些配置一下。与多拨不同的是,按不同的运营商分别建立两个Policies。Rules那里写下需要分流的目标,调整好顺序保存就可以了。

需要注意的是mwan3有时候并不会直接生效,保存后可能需要重启一下路由器。
这可能是mwan3的Bug,也可能是Future

评论

1

邮箱只用来显示头像,不会被公开