家庭网络大改造,ubnt er-x路由折腾记
小编注:此篇文章来自#原创新人#活动,成功参与活动将获得额外100金币奖励。2020年新人计划正在进行,点击查看活动详情
最近去联通营业厅续约,联通现在新合约送两条宽带了,本着物尽其用不浪费的精神,于是就有了这篇折腾文。
首先是我家现在的网络结构
电信宽带弱电箱内光纤入户,光猫桥接模式,光猫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-templateconfigure
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地址,传统方式
好了,这就结束。开心的上网吧,(具体效果就不贴图了)
最后记得将配置保存一份以防万一哦。
感谢观看
转载请注明:徐自远的乱七八糟小站 » 家庭网络大改造,ubnt er-x路由折腾记