Unifi 全家桶高级组网-实现篇

最近稍微有点空闲,所以把上篇https://bbs.ui.com.cn/t/unifi/48147/1
大家关心的一些实现的问题总结一下。因为时间有限,具体手把手就不说了,而且估计没法逐一回答大家的问题,建议善用搜索吧。

这篇文章的实现实际上就是把我过去的一些帖子综合应用,这篇里面不会讲具体原理,具体原理可以参考:
1、VLAN多拨
https://bbs.ui.com.cn/t/usg-edgemax-er-lite/47810/1
2、USG同时负载均衡与策略路由
https://bbs.ui.com.cn/t/usg/47811/1
3、USG多WAN口的端口映射 、转发、upnp
https://bbs.ui.com.cn/t/usg-wan-upnp/47970/1

目录
1楼(本楼)
2楼 前提与背景
3楼 IPTV实现
4楼 单线多拨负载均衡实现
5楼 多拨的speedtest带宽叠加的处理
6楼 多拨后ddns的处理
7楼 多拨后端口转发与UPNP的处理
8楼 多拨后策略路由的处理
9楼 其他一些有用的处理
10楼 总结

10赞

2楼 前提与背景这篇的文章采用的拓扑结构是基本按照前篇方案中所描述的方案,如下图:
102846d3kivl0ftxsdtis6.jpg

只是,在本篇中,pppoe多拨缩减到了4拨,原文中是6拨。相关的vlan id有所变化。整个方案去掉了去广告功能,主要是体验不好,而且koolproxy和adbyby都是闭源软件。最后,推荐一个去广告的最佳的体验是:买!会!员!

然后,在开始实现之前,unifi要做如下设置,下图中描述的vlan和ip是本篇实现的前提。

unifi_web.png

3楼 IPTV实现1、IPTV首先需要抓包分析
iptv_capture1.png

iptv_capture2.png

2、利用json文件配置,配置要点如下:
iptv.png
3、在IW的网口定义IPTV VLAN,接入iptv盒子,注意,如果需要使用IW中的POE口,需要使用一个POE隔离,具体原因看我在这个贴中的解释:
https://bbs.ui.com.cn/t/uap-ac-iw-poe-date/48612/1

4、如果要实现方案中的把IPTV变成HTTP点播,可以在一个多口的x86主机上安装udpxy,让LAN1加入IPTV VLAN,LAN2加入 Famliy LAN,然后利用udpxy实现,这里暂不讨论udpxy的安装,不过建议x86安装debian 9,因为openwrt安装软件麻烦,debian有大量现成的软件和教程。

4楼 单线多拨负载均衡实现

这里采取的vlan多拨,为什么要用vlan,我在主楼的参考贴有说。这里采取的4拨,我在unifi web中创建了两个wan,并设置了负载均衡模式,weight值为50%。
接下来利用json文件配置其他两个pppoe,配置要点如下:
balance.png

5楼 多拨的speedtest带宽叠加的处理
前文所述的负载均衡模式并不会使得speedtest测试出来带宽叠加,因为unifi默认的sticky(粘滞)规则是同一目的地址、同一目的端口、同一源地址走同一pppoe出口,这样speedtest虽然是多线程测试,但在这个规则下,所有线程走的同一pppoe,所以不会带宽叠加。但是,这样的好处是:1、迅雷下载,从多地址下载,可以叠加速度。2、访问web页面,比如淘宝,使用了多个图片、视频服务器,速度是有提升的。3、网银、游戏等不会出现问题。
所以,如果你想speedtest测出来带宽叠加,就是自己处理sticky(粘滞)规则,所以得自己解决网银、游戏出现的问题。网上流行一种办法,是让整个https都不走负载均衡,这种办法的缺陷是:现在几乎50%以上的网站都是https了,这种宁杀一千的办法有点过头了。所以,我推荐的办法是维护一个地址清单,这个地址清单里面的网站不走负载均衡,剩下的网站随机从pppoe口出去。
但是!!!这个方案我自己已经弃用了,我现在用的是默认unifi的规则,speedtest测不出带宽叠加,就测不出吧,懒得折腾了,这里推荐这种方法给愿意折腾的:
1、在前文的基础上,利用json文件配置,配置要点如下:
no_balance_sites.png
2、在/etc/dnsmasq.d/中放入一个文件,这个文件维护了不走负载均很的网站,大概样子如下:
no_balance _dnsmasq.png

6楼 多拨后ddns的处理
如果你的pppoe能够获取到公网ip,那么四个pppoe就是四个公网ip,虽然不能把四个公网ip当作一个带宽来用,但是,你可以一个ip用来传输文件,同时另一个ip走远程桌面,这样在传文件的同时,远程桌面不会卡顿,所以,给每个pppoe都配置上ddns。其中pppoe0的配置是在unifi web中完成的,剩下三个pppoe的配置要点如下:

ddns.png

推荐changeip.com,免费,一个账户可以创建多个域名,还能三级域名,比如:pppoe0.username.dynamic-dns.net; pppoe1.username.dynamic-dns.net;

7楼 多拨后端口转发与UPNP的处理
问题1:unifi默认是把端口转发和upnp作用在wan1或wan2上,两者不能同时。所以多拨以后,如果你使用emule,又恰巧随机从其他pppoe出去了,那获得的就是lowid。

问题2:如果你的pppoe获得是公网ip,然后又配置了ddns,但是unifi默认的端口转发只对wan1或wan2,两者不能同时,所以,你获得的其余三个公网ip全浪费了。

下面这段代码放到/config/scripts/post-config.d/下,可以解决这个问题。
unpn.png

接下来,无论你的emule随机到哪个pppoe出去,都可以获得highid。
另外,以后,你在这个界面添加的端口转发,会作用到所有pppoe
portforward.png

打个比方,你原来只能从ftp://pppoe0.username.dynamic-dns.net访问,现在你还可以通过ftp://pppoe1.username.dynamic-dns.netftp://pppoe2.username.dynamic-dns.netftp://pppoe3.username.dynamic-dns.net,同时访问,相当于一个多线机房。。。

8楼 多拨后策略路由的处理方案中实现了一个策略路由,让公司网站的访问挑出来路由到x86上去,配置方法如下:
1、利用json配置,配值要点如下:
vpn_out.png

2、为了性能问题,上面的json文件并没有直接应用策略规则,我在1楼中的参考帖子讲述了原因。具体做法是在post.config.d中放入一个脚本,如下:
vpn_shell.png

3、在/etc/dnsmasq.d/放入一个文件,定义哪些网站属于公司线路:
vpn_sies.png

4、有了以上配置,usg会把这些网站的访问路由到192.168.2.1,也是在X86主机上,x86需要实现相关配置,这里不做讨论。

9楼 其他一些有用的处理
还有一些其他有用的处理:
others.png

10楼 总结
以上基本是方案的实现过程,因为时间有限,一些具体细节没法说太细,请见谅。

文中有一些放置脚本的地方,可以写成一个shell放到pre-config.d下,每次usg启动时都检查一下,这样就算usg版本升级,也能自动重新放置回去。

哇喔。我说怎么今天论坛一下子这么多贴子呢。大神你好。

手动点赞!这周的微信又可以发了 :stuck_out_tongue_winking_eye:

@benjaminlei
大侠的很多帖子都受益匪浅,有个问题请教,端口转发的方式和基于D-NAT的方式那个传输效率高?
详见 我的一个帖子
多WAN的端口映射到内网的另一种思路(基于D-NAT)
https://bbs.ui.com.cn/t/wan-d-nat/48637/1
(出处: 优倍快网络技术论坛)

bluehj 发表于 2018-11-1 17:30
@benjaminlei
大侠的很多帖子都受益匪浅,有个问题请教,端口转发的方式和基于D-NAT的方式那个传输效率 …

端口转发最后也是转化为dnat,都是一回事,一样的效率。只是端口转发除了产生dnat,还可以产生其他的iptable命令来实现hairpin和开放防火墙端口等。

你的思路很完美,但是对于小白太繁琐了,我的设备与你差不多,就少了个划分vlan的交换机,改天帮我参考下,我的网络还是各种不舒服,1、500兆的带宽一直跑不满 2、现在是软路由作拨号路由,下挂全家桶,USG二级路由DHCP,带来的问题是双层NAT了,NAS这些需要公网IP的,要各种端口转发,这里先谢谢,这两天我把我的网络拓扑图发上来,然后遇到各种问题也发上来,帮参考下

开始使用vlan一线多拨之前,有一个前提条件,可以在光猫上创建vlan,使光猫的网口能接受带vlan tag的数据包,如果没有光猫的超级管理员权限,有一个vlan交换机也行,让vlan交换机去掉vlan tag,再接入光猫。本文不适合初学者,理解本文需要较多的基础知识,而且作者在本文并不打算给出一步一步的教程,也不回答一些比较基础的问题,希望初学者能在善用论坛搜索。作者使用的是USG,所有的配置是直接给出show 结果,需要转变为命令。

我家上端是不是光猫,是网线入户pppoe拨号,测试过可以虚拟eth0单线多播。现在在路由ERL前加入个VLAN 交换机(网件GS105Ev2)想实现单线VLAN多播负载均衡
入户网线接VLAN交换机switch1口,VLAN交换机switch2口接路由器ERL的WAN口ETH0,在ETH0接口下创建vif10 ->pppoe0和vif20->pppoe1

请问在VLAN交换机里的switch1,口switch2口该如何正确的设定?

我的设置是PVID 1口设 10
VLAN10 里 1口U 2口T
这样设置pppoe0是可以拨号成功的
但是现在的问题是VLAN20怎么设置都无法拨号成功

04.JPG
03.JPG

02.JPG

01.JPG

如果入户线只有一个口,您还需要用一个非网管交换机。

嗯,明白了

那么对于usg或erl3来说,如果只需要双wan叠加,其实没有必要再在wan口划分vlan拨号了,只要在路由前加个非网管交换机就可以offload了。您这里用了vlan交换机是还有分离iptv和vpn的线路目的吧?
还有你的旁路x86机器是装的软路由,还是用的linux server?

貌似不支持了。。屏幕快照 2019-03-20 上午2.05.23.png