家庭网络大改造,ubnt er-x路由折腾记
最近去联通营业厅续约,联通现在新合约送两条宽带了,本着物尽其用不浪费的精神,于是就有了这篇折腾文。
首先是我家现在的网络结构
电信宽带弱电箱内光纤入户,光猫桥接模式,光猫IPTV口直接连接客厅IPTV
网线进入书房连接拨号的路由器,路由器下挂PC、一个迅雷下载宝做下载器,
然后路由器一根线回到弱电箱内交换机,交换机线分到各个房间。
南边左起三个房间 主卧、书房、客厅分别有两根线, 其他房间一根线。
现在因为联通活动多给了一条宽带,准备做双线路,但是书房只有2根线。
虽然AC68U支持双线路,但是弱电箱到书房少一根网线。并且都是200M宽带单线复用带宽不足。而AC68U的体积和发热又不适合塞进弱电箱里。于是就有了本次的主角,ubnt er-x
传说中的弱电箱神器,超级小巧的造型,只有手掌大小,专门为弱电箱准备。
新设备加入后新的网络图变成了下面这样
弱电箱里塞了2个光猫,1个路由1个交换以后,已经变成了烤箱
理线的时候发现弱电箱空间比预想中的大得多,早知道就不买er-x 直接软路由了,空间完全够用。不过既然买了就好好用了。交换机接口够,还方便盘线,就把原定接在路由上的PC和AP都接到了交换机上了。
现在er-x作为主路由,负责拨号、策略路由、负载均衡
AC-68U作为AP、下载服务、SMB文件服务
迅雷下载宝作为透明网关和代理服务器处理部分网站的访问
这样做的而原因是路由器的CPU再好也只是低频的RISC CPU,绝对算力还是不足,高负载卡顿在所难免。
想一个设备搞定所有,得上桌面平台的软路由才行(怨念)。所以还是拆分设备各司其职。
这里有个问题是其实AC68U的USB读写性能很差,不如用下载宝下载文件。但是下载宝作为透明网关我设计的要求是可以随时拆除,而挂了硬盘就不方便移除了,所以下载的任务就交给AC68U了。
下面开始正式折腾
路由开箱之后自然是升级最新固件了。官网下载最新固件,GUI下上传-升级一气呵成。两个注意点:
1. 我用的是1.10.10是旧核心的最新固件,几乎没有bug。2.x换了新核心,论坛反应bug不少,转发性能还小有倒退。我力求稳定不折腾,所以就不用最新的了。
2. 升级完固件之后进入CLI命令提示行模式,根据提示升级到最新的引导区程序。
开始配置过程,这里出现了第一个问题。网上教程很多是早期基于1.6、1.7系统的,那时候向导模式bug多,所以很多人推荐全部cli命令提示行配置,但是现在已经10.10了,常用配置的向导模式已经很完善了,没必要折腾自己用cli。 当然有些命令cli用起来比较方便。
首先是双线路配置,直接用wizards中的load-balance设置,分别选择两条线路的物理接口,选择pppoe拨号,填入用户名和密码,然后在用户设置中修改默认的用户名密码,打开默认防火墙,提交后重启。这样最基本的双拨就弄好了。并且配置了一系列缺省设置,比如switch,firewall,mtu等等。之后也可以用向导模式配置upnp等常用功能
我这里是联通pppoe1接入eth1,电信pppoe3接入eth3,下面相关接口就不重复说了。
理论上重启完之后就可以双线上网了,但是这还是远远不够的,下面调整一些路由器的基本设置。
也可以使用CLI命令
set system offload hwnat enable
#打开硬件转发,10.9以后硬件转发可以和防火墙并存,不要被老教程骗了
set system time-zone Asia/Shanghai
set system name-server 119.29.29.29
set system name-server 114.114.114.114
#设置系统时区,默认DNS服务器,双线路一定要手动指定服务器。避免dns解析乱跳。
然后是PPPOE设置
set interfaces ethernet eth1 pppoe 1 default-route none
set interfaces ethernet eth1 pppoe 1 name-server none
set interfaces ethernet eth3 pppoe 3 default-route none
set interfaces ethernet eth3 pppoe 3 name-server none
#关闭默认的路由和dns设置,使用系统统一设置
set interfaces ethernet eth1 pppoe 1 mtu 1480
set interfaces ethernet eth1 pppoe 3 mtu 1480
set firewall options mss-clamp mss 1440
#设置对应的 mtu mss值,根据自己的网络环境设置
将两条线路自动配置的路由和DNS关掉,由er-x接管,这里我遇到了一个bug,联通线路拨号后如果不自动获取路由的话,会无法访问网络,显示拨号获取了IP但是无法进行网络连接,这应该是本地联通的问题。电信全关掉就可以正常拨号。
然后调整DHCP设置,这里我将我的所有有线设备都添加到了静态DHCP中手动分配IP,所有走wifi的移动设备使用自动分配。
这里说一下,ubnt er-x修改配置的方法有三种,两种是在GUI中,分别是在config tree中修改,和在状态页的向导中修改,还有一种是在命令提示行下命令修改。
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 start 192.168.1.101 stop 192.168.1.150
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 default-router 192.168.1.1
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 dns-server 119.29.29.29
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 dns-server 114.114.114.114
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 lease 36000
#DHCP分配范围
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping RT-AC68U
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping ip-address 192.168.1.254
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping mac-address ff:ff:ff:ff:ff:ff
#静态DHCP分配
下面开始配置双线路负载的问题。我的思路是联通线路走联通线路,电信线路走电信线路,之外的线路负载均衡自动选择。
首先是配置三个条件的路由表,这里GUI里可以直接用routing页面的向导配置,也可以在configtree中配置,不过我觉得是没有直接在CLI下用命令配置的方便,下面只贴命令了,命令结构其实就是对应的config tree中的层级,对照着命令用GUI配置也是可以的。这里插入一下下CLI命令提示行模式的基本操作,可以使用网页虚拟终端,也可以使用SSH连接
configure #进入设置模式
#进入设置模式后输入相关配置命令
commit #提交修改,未提交的命令不会生效
discard #取消修改,放弃所有未提交的修改
save #保存,不保存的设置会在下次重启的时候失效
exit #退出配置模式
#拨号的控制命令如下
disconnect interface pppoe1 #断开pppoe1连接
connect interface pppoe3 #pppoe3拨号
这些是一些基础命令,也可以在终端中直接按?获得帮助,或者按tab自动补全命令或者显示可补全的命令。
下面开始配置
set protocols static interface-route 0.0.0.0/0 next-hop-interface pppoe1
set protocols static interface-route 0.0.0.0/0 next-hop-interface pppoe3
#默认路由表为双线路,用于负载均衡和故障转移
set protocols static table 1 interface-route 0.0.0.0/0 next-hop-interface pppoe1
#路由表1为单联通线路
set protocols static table 3 interface-route 0.0.0.0/0 next-hop-interface pppoe3
#路由表3为单电信线路
set load-balance group G interface pppoe1
set load-balance group G interface pppoe1 weight 50
set load-balance group G interface pppoe3
set load-balance group G interface pppoe3 weight 50
#设置负载均衡的比例,我这里两根线是一样的带宽就直接设置成50:50了,带宽不对称的根据自己需要设置
然后修改防火墙配置,向导模式中已经建立一系列规则,其中就有针对线路的选择的规则,这里我们直接在这基础上修改,不用额外增加规则。在config tree中修改会比较方便,但是修改的地方很零散,我就偷懒不截图了,直接放上命令,各位对应查找就好。
set firewall modify balance rule 30 description "telenet"
set firewall modify balance rule 30 destination group network-group CHINANET
set firewall modify balance rule 30 action modify
set firewall modify balance rule 30 modify table 3
#电信IP走电信线路
set firewall modify balance rule 50 description "unicom"
set firewall modify balance rule 50 destination group network-group UNICOM
set firewall modify balance rule 50 action modify
set firewall modify balance rule 50 modify table 1
#联通IP走联通线路
下面导入联通和电信的IP列表,列表来自APNIC的统计,网上都可以查到然后将这些IP添加到网络组中
set firewall group network-group CHINANET network 1.0.1.0/24
set firewall group network-group UNICOM network 1.24.0.0/13
这里可以写个脚本批量导入
脚本编写格式如下
#!/bin/vbash
source /opt/vyatta/etc/functions/script-template
configure
set firewall group network-group CHINANET network 1.0.1.0/24
set firewall group network-group ******* network 0.0.0.0
set firewall group network-group UNICOM network 1.24.0.0/13
使用方法是,将写好脚本传到er-x,进入cli命令提示行
chmod +x script
#赋予权限
configure
#进入配置模式
./script
#执行脚本
commit
save
exit
#提交保存退出
注意的是因为列表数目很多,脚本执行和commit都会比较慢,写入电信脚本大概要花10分钟,提交也要花5分钟,联通的会快一些,要耐心等待。
然后就是我遇到的本次折腾最大的一个坑,因为要加载巨量的地址列表,所以写入地址后er-x的重启速度会变得极慢。极慢的意思是输入重启命令后到重新可以连入要花费超过20分钟的时间,期间路由器没有任何反应。如果这时候你等不及断电,结果就是路由器挂掉,需要reset按钮恢复出厂设置重来。
所以各位童鞋一定要有耐心啊。
到此双线路负载均衡的部分就做好了,很多文章说要将80 443这些端口数据绑定到一条线路上避免线路乱飘,导致https或者网银出问题。我并不喜欢这么做,怎么能做影响性能的事情呢。这里用了另一种解决方法,就是DNSmasq本地DNS服务。并且利用缓存功能。短时间内对同一域名的请求会直接调用DNSmasq的缓存指向同一IP,通过IP直接就固定了联通或者电信线路。
首先打开dnsmasq服务
set service dhcp-server use-dnsmasq enable
设定dnsmasq默认查询地址,重要,开启dnsmasq后,会在本地建立dns缓存
所以默认查询地址一定要选择可靠的来源,速度不一定是最快的,反正有缓存,一回慢,二回就快了
set service dns forwarding name-server 119.29.29.29
设置缓存,默认150,参考了一些人,大家普遍认为400以下不足以喂饱,1000或者1500以上提升太小
加上个人访问习惯问题,常用网站并不是很多,所以我这里比较保守的设置了600
set service dns forwarding cache-size 600
然后将系统dns和dchp分配的dns都改由dnsmasq服务接管
delete system name-server 119.29.29.29
delete service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 dns-server 114.114.114.114
set system name-server 192.168.1.1
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 dns-server 192.168.1.1
好了,至此就折腾好了,下面就是激动人心的测速环节了。
那么有请大名鼎鼎的speedtest出场,(鼓掌)
round1,联通服务器测速,ping 2ms 下载249.53Mbps 上传34.88Mbps,200M网络没问题
round2,电信服务器测速,ping 22ms 下载233.73Mbps 上传36.99Mbps,200M网络,毕竟是北方,电信的ping比联通差了那么一丢丢啊
round3,找了个移动的服务器,非联通非电信,负载均衡生效,下载464.98Mbps,上传76.04Mbps。
200M联通+200M电信=400M双线 完美叠加,撒花
round EX,断开联通线,用电信线路使用联通机房测速。ping41ms,下载232.79Mbps,上传36.07Mbps。测速正常,故障转移工作正常。
再用手机来一发,wifi也可以跑满速,可喜可贺。
结论:完美符合预期。折腾大成功!
下面是一些特别网站的访问策略了
准备:下载宝一个,刷padavan,工作在网关模式,设置内网IP192.168.1.250,DNS使用cisco的opendns 208.67.222.222,打开DNS验证。配置全局透明代理。用脚本将唯一的网口设置为lan口。现在下载宝作为一个辅助网关,作用是将接受到的请求全部使用代理访问。
准备就绪,下面只需要将希望的流量指向下载宝就可以了。这里我没有使用传统list或者黑白名单方法,原因是列表过大,影响性能,还记得联通电信IP加载需要花费的20+分钟么。
并且实际上路由自动化的功能主要是服务电视平板设备,PC手机直接可以使用本地客户端进行连接。而电视平板使用的网站是及有限的,所以不需要大而全的规则。
配置方法:
首先是新添加一个网关,指向下载宝
set protocols static route 0.0.0.0/0 next-hop 192.168.1.250
设定新的路由表,指向上面的网关
set protocols static table 2 route 0.0.0.0/0 next-hop 192.168.1.250
添加防火墙规则,将地址组GxW中的地址使用路由表2指向下载宝
set firewall modify balance rule 20 description "fuXk GxW"
set firewall modify balance rule 20 destination group address-group GxW
set firewall modify balance rule 20 action modify
set firewall modify balance rule 20 modify table 2
设定对应的地址组
set firewall group address-group FxW
然后只需要将我们需要的地址添加到列表中就可以了
set service dns forwarding options ipset=/gmail.com/GxW
#使用ipset添加域名,ipset会将指定的网站临时作为指定的地址组IP处理
set firewall group address-group FxW network 8.8.8.8
#使用防火墙规则添加IP地址,传统方式
好了,这就结束。开心的上网吧,(具体效果就不贴图了)
最后记得将配置保存一份以防万一哦。
感谢观看
單農
校验提示文案
hrbagang
校验提示文案
whzr
校验提示文案
值友7786271634
校验提示文案
WalterDS
校验提示文案
中原大呲花
校验提示文案
冬天的树已经被人抢了
校验提示文案
四条眉毛行天下
校验提示文案
是哥哥呀
校验提示文案
毒蘑菇1UP
校验提示文案
穹人
校验提示文案
鹰飞大地
校验提示文案
天秤不无奈
校验提示文案
点值爱好者
校验提示文案
yuexin0019
校验提示文案
snail散步
校验提示文案
彻夜嘶吼
校验提示文案
oO小林子Oo
校验提示文案
hrbagang
校验提示文案
叫兽_sk
我也是弱电箱变烤箱
校验提示文案
值友4274511279
校验提示文案
邱小烏ShaqKSmith
不过请教下,若光猫有两个千兆口,宽带1000M,ER-X可以把这两个物理口聚合(叠加)吗?刚好手上有两闲置的er-x和er-x-sfp。不知道支持这功能不,感觉没太大意义哈?
校验提示文案
Andcc
怎么解决啊
校验提示文案
wxmrockman
校验提示文案
窃格瓦拉oks
校验提示文案
值友2950280902
set firewall modify balance rule 30 destination group network-group CHINANET
这里他一直报错,啥情况啊,就说提交失败 奇怪啦
校验提示文案
leezq
校验提示文案
lychee红色西班牙
校验提示文案
值友1511634232
校验提示文案
鹰飞大地
校验提示文案
xuzhuocool
校验提示文案
是哥哥呀
校验提示文案
2Bpencil
set system name-server 119.29.29.29
set system name-server 114.114.114.114
在打开dsn-masq后,只删除了第一个119.29.29.29
delete system name-server 119.29.29.29
delete service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 dns-server 114.114.114.114
set system name-server 192.168.1.1
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 dns-server 192.168.1.1
所以name-server会变成192.168.1.1和114.114.114.114
而dhcp-server里的 dns-server则是119.29.29.29和192.168.1.1。
还是说需要把name server的114.114.114.114和dns-server里的119.29.29.29都删除掉啊。
谢谢分享
校验提示文案
imyip
校验提示文案
四条眉毛行天下
校验提示文案
穹人
校验提示文案
值友3744712532
校验提示文案
冬天的树已经被人抢了
校验提示文案
HassanY
校验提示文案
大王懒得来巡山
校验提示文案