Back
Featured image of post Unifi网络优化之多VLAN配置

Unifi网络优化之多VLAN配置

去年家里搞了一套Unifi后(US8-switch+UAP-AC-pro+UAP-AC-IW),WiFi网络一直比较稳定,但出过几次问题在于主路由是软路由,爱快系统莫名崩了,换了opnsense后第二天又崩了,家人虽然没怨言,但作为曾经网络工程毕业的,脸面无全,于是一怒之下入了USG。。。

背景

家里原本的网络是这样的,主路由是软路由的原因考虑到:

  • 性能上可以更好
  • 方便使用丰富的插件
  • 弱电箱比较小 ,这样可以节省一个设备

网络的稳定性完全依赖于软路由,它是基于ESXi虚拟机内挂了两个路由系统,一个是iKuai作主路由,另一个Openwrt作旁路由。当主路由不稳时,全家所有设备都不能上网。

方案

那么重构的方案目标自然是让家庭主线路稳定,不受软路由不稳定影响,并且也继续为有需要的设备提供上外网服务。继续考虑到Unifi全家桶就差USG了,忍痛咬牙入了。购买是走闲鱼,居然比jd/taobao便宜近300大洋:) 到手的USG感觉比想象中大一些也厚一些,希望可以稳定吧,无论如何,对弱电箱又是个挑战,也得把它放进去。 于是新的方案大体上是这样:

我们让家人大部分设备都是使用稳定和右边网络,经过Unifi全家桶光环加持过的。 个别设备要访问谷歌等再通过将网关设置为OpenWRT的IP即可。

面临一个问题

在Unifi AC Controller找遍了设置和查看了很多文档(主要是DHCP及Option相关),都没有可以单独设定某些设备的网关,只有最简单的静态IP的设置。于是只能从USG的系统入手,看如何设置它。

静态IP设置

为需要单独设置网关的设备,设置使用静态IP。(这一步可以在Controller中设置,也可以通过命令行设置)

1
2
3
set service dhcp-server shared-network-name net_LAN_eth1_192.168.1.0-24 subnet 192.168.1.0/24 static-mapping keviniphone ip-address "192.168.1.80"

set service dhcp-server shared-network-name net_LAN_eth1_192.168.1.0-24 subnet 192.168.1.0/24 static-mapping  keviniphone mac-address "<mac地址>"

为设备设置单独的网关(路由)

1
set service dhcp-server shared-network-name net_LAN_eth1_192.168.1.0-24 subnet 192.168.1.0/24 static-mapping keviniphone static-mapping-parameters "option routers 192.168.1.251;"

这样当设备获取IP时,其网关默认为我们OpenWRT了。

但是

仍然存在几个问题:

  • 复杂的设置及静态路由等,很难应对未来多变的设备变化需求
  • 网络的隔离性较差,家里的智能设备等都在同一个网段下

终极方案

定义不同用途的VLAN段,将不同用途的网络分配到不同VLAN下。于是我定义了如下四种网段:

  • 192.168.1.1/24 管理网段,只用于Unifi全家桶设备,切换到这个网段是对网络维护工作。
  • 192.168.10.1/24 IoT设备,防止智能家居漏洞对家庭网络影响。
  • 192.168.30.1/24 基础可用网络,网关为USG,主要在于稳定。
  • 192.168.50.1/24 学习网络,网关为OpenWRT,主要在于自由翱翔。

具体配置很简单,建议使用经典的UI界面操作。

  1. 创建VLAN网络,指定VLAN和网段,根据上面需求创建多个网络(并且可以指定此DHCP服务的网关。)

  2. 让无线使用此网络配置,这样的方式创建多个WiFi,不同的WiFi绑定不同需求的VLAN。

  3. 让有线设备也绑定VLAN。这里为了让软路由及其下设备都可以和ssr同一个VLAN,需要在交换机层绑定端口到对应VLAN.

至此,几个诉求都满足了,收工?

事情没完

如果你是严谨的人,尝试从IoT从ping了一下内部其它网络,你以为分不同VLAN网络就隔离,但是,它居然通了!!!实际上在Unifi中,不同VLAN之间默认还是可通信的,这样我们要的安全性从何谈起呢?于是一番防火墙上的设置是少不了。这块的设置从网上这个视频中学习到(内容在视频55分之后)。

Unifi的firewall的设置有点类似于iptables的规则,上述视频讲得不错了,主要要点有几个:

  1. 内部的流量控制多数是从LAN IN下面设置。
  2. 让各个VALN隔离的规则,设置Drop规则,以IoT为例,所有到IoT的包都Drop。(将是放在最后的默认规则,代替Unifi默认的互通)
  3. 允许部分自己认为合理的流量,比如我希望其它内部网络如Main可以访问IoT网络。

后记

  1. 后面考虑到IoT设备之间可能有消息往来,网络从Guest切换回了Corporate模式,但是否如何还要考究,好像他们有自己的协议方式。

参考资料