背景
我原先的网络里,网关是UBNT ER-X桥接垃圾光猫拨号,然后两个水星WiFi5路由器关闭DHCP桥接到LAN上做热点。
而最近免费升级了电信的1000M光纤,送了一个HN8145X6光猫和一个SIM路由器,这两个都是自带WiFi6的,比我两三年前买的水星WiFi5姿势水平高多了,于是打算在UBNT作为网关的基础上,不花一分钱将水星WiFi5全部替换为白送的WiFi6。
光猫作为热点
SIM路由器可以直接桥接作为热点使用。关键问题在于如何在不使用光猫拨号的前提下,将光猫的作为热点使用?
最后我的方案:
仅在光猫LAN1口启用拨号服务,剩下LAN3-LAN4和WiFi则移除所有服务。如图:
光猫关闭DHCP。可选项是设定静态IP为UBNT的局域网DHCP段内的一个IP,方便以后管理。
光猫LAN1口和光猫LAN3口均接入UBNT路由器,只不过LAN1口用于UBNT拨号上网,LAN3口接入UBNT的SWITCH,用于桥接光猫的WiFi使用。
这样,连接光猫WiFi即相当于连入了UBNT同一局域网中,并且和IPTV等电信服务有所隔离。
如果不在乎隔离,应该可以只需要光猫1个LAN口接入UBNT路由器,不过我没有进一步尝试。
网关转发中国电信的e-link协议
e-link协议用于同步局域网内所有热点的SSID和密码。正常情况下,光猫的WIFI设置是可以同时管理送的SIM路由器的WIFI功能的。但在前面一波设置后,光猫就无法检测到SIM路由器的存在了。
这是因为e-link协议要求设备主动与所在子网的网关进行TCP通信,如下图所示,子路由会连接网关的32768端口:
当桥接到UBNT局域网后,网关自然而然就成为了UBNT路由器,所以光猫无法感知到SIM路由器的存在。
一个简单的思路是在UBNT路由器上监听32768的TCP端口,并将流量全部转发到光猫的IP地址即可。
例如我的网络是192.168.3.0/24,UBNT路由器是192.168.3.1,给光猫设置了192.168.3.3。SSH登录UBNT路由器:
sudo -i
iptables -t nat -A PREROUTING -d 192.168.3.1 -p tcp --dport 32768 -j DNAT --to-destination 192.168.3.3:32768
iptables -t nat -A POSTROUTING -d 192.168.3.3 -p tcp --dport 32768 -j SNAT --to 192.168.3.1
静候一段时间,进入光猫WEB界面,可以看到已经正确识别了SIM路由器。