华硕网络产品技术交流平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

查看: 82989|回复: 37

[分享] [教程] 在组网中扩展你的访客网络

[复制链接]

14

主题

834

回帖

2万

积分

特聘会员

Rank: 2

积分
21750
发表于 2020-2-23 02:38:28 | 显示全部楼层 |阅读模式
本帖最后由 Jack 于 2020-2-26 11:03 编辑

在开始这篇帖子之前,我想先感谢一下 52asus 社区的支持,在不久之前,我很荣幸获得了社区活动的奖品,得益于奖品让我能够首次尝试组网,也很荣幸能够分享一些自己使用中的心得给大家,可以说,没有社区的奖品和支持就不会有这篇帖子,非常感谢 52asus 社区。

因为是首次尝试 ASUS 路由器组网,所以可能会有不足之处,还请大家不吝指教。


“宁没车房,不能没网”的网络时代,路由器承担着举足轻重的作用,做为用户接入网络的最后一环,在网速疯狂提速的大背景下,路由器的好坏也逐渐被人们重视,就在那时,我购买了第一台高端路由器,没错它就是 ASUS(华硕)。

时光飞逝,几年后曾经的高端路由器很快赶不上了需求,随着人们对 Wi-Fi 无死角覆盖的要求不断提高,越来越多的人开始添置第二台路由器,但是很多新旧产品存在着诸多兼容问题,导致“买来用不了,要买买全套”的风气兴起,这不仅过度开销,更带来了诸多的电子垃圾。就在这时 ASUS 推出了一套极具创新的解决方案 —— “AiMesh”,和友商的组网不同的是,你不必“买全套”,你只需要买一台新的 ASUS 路由器,再升级你旧 ASUS 路由器的软件,就能把它们“完美”地组成一个网状网络,因为不用重新“买全套”,这种绿色的升级方式很快得到了消费者的高度欢迎。

在 ASUS 的想法中 AiMesh 本应该是完美的,不过,它并不是,至少目前还不完美,很多人发现组网后因为不同型号存在兼容的问题,会出现无法漫游、丢包等问题。但这些问题很快得到了重视,一个个固件被发布,频繁的更新让这一切趋于完美,甚至为了解决漫游切换慢的问题,ASUS 正在逐步为所有 AiMesh 机型添加快速漫游协议 IEEE 802.11k/v 的支持 [1],要知道添加快速漫游协议需要更新芯片驱动,而芯片制造商博通是出了名的“喜新厌旧”,甚至为了让新芯片卖的更好故意不给老芯片更新驱动解锁功能。这一次为了打造完美的 AiMesh,可见 ASUS 真的“下血本”了。

得益于 52asus 的奖品,我开始深入研究 AiMesh 组网的原理。在组网中通常分为两种,一种是无线组网,一种是有线组网,在无线组网下“子路由器”的无线承担着双向转发的作用,这使得延迟会提高,而网速会下降,所以如果有条件非常建议使用有线组网,我的帖子也以有线组网为研究对象。

谈组网的原理之前,必须先了解无线路由器的原理。不专业的通俗讲法是:如果你要上传一张图片给朋友,你的手机会把照片以无线电的形式发送给路由器的天线,然后天线转发给路由器的 CPU,由 CPU 决定发送给谁(路由),最后你的照片通过路由器的有线 WAN(广域网)口离开你的家。你的朋友下载图片过程则完全相反。

而有线组网下,“母路由器”承担着所有正常的功能,接受无线电,路由,发送出去。但是“子路由器”则不同,“子路由器”变成了“一个天线”,它不再具备路由的功能,它只负责接受无线电并原样转发给有线连接的“母路由器”,由“母路由器”来决定你的照片该发送给谁。把工作全部交给“母路由器”这样的好处是减少了一层路由,换句话说不必要将一个工作重复做两遍,并且重复多次路由会使得两个路由器下面的局域网无法互通,就导致了所谓的多层 NAT。

不过,把工作都交给“母路由器”这也出现了一个问题,就是“子路由器”才不管你的照片发给谁,它收到照片不假思索地转发给下一站。通常这样不会有任何问题,但是如果你恰巧希望在“子路由器”上面开启访客网络就会有问题了,因为其设计的要求就是把你和访客隔离在不同的空间中“防止交叉感染”,而“子路由器”不具备管理的权利无法做到这点,这样会导致你的访客可以偷窥到你正在发送给朋友的照片,甚至可以拦截或“感染”它。基于此原因 AiMesh 并不支持在“子路由器”上开启访客网络。即便开启,访客网络只会在“母路由器”上生效,并不会同步到“子路由器”之上。

看到这里有人可能会说,“如果原理真的像楼主说的这样,为什么我买的某友商的网状路由器‘子母’都可以开启访客网络”。不得不承认,有很多方法可以实现隔离,又能避免多层 NAT。但是 ASUS 的 AiMesh 尚不支持任何一种方法,这或许是因为很多旧款路由器在设计之初并没有这些功能,而 ASUS 还未准备好重新改写整个固件以实现这点。不过,随着楼主长达一个多月的研究,不断地反复实验,然后实验失败,然后再无数次试验、失败,终于能够让访客网络扩展到“子路由器”上面,并且保持原有的隔离性质。以下内容涉及高级玩法,跟着教程走应该没有问题,但也不一定


游客,如果您要查看本帖隐藏内容请回复



© 本帖子为 Jack 原创,引用内容则包含角标。非商业转载无需事先通知,但请注明出处作者等信息,转载人禁止修改教程内任何内容(包括可能出现的错误以及本行信息),商业转载需明确获得本人许可。本教程首发在 52asus 社区

微信扫一扫,阅读更方便^_^

14

主题

834

回帖

2万

积分

特聘会员

Rank: 2

积分
21750
 楼主| 发表于 2020-2-23 02:58:02 | 显示全部楼层
本帖最后由 Jack 于 2020-2-26 11:05 编辑

在高级玩法开始之前,我先介绍下隔离的原理,访客网络隔离通常采用 VLAN(虚拟局域网),换句话说,一个路由器可以根据需求划分出独立的空间,而每个空间中的用户都无法互相看到对方,这就保证了安全,并且 VLAN 具备向“子路由器”传递的功能,通过与“子路由器”配合添加 VLAN 标签能够扩展访客网络到“子路由器”,这也是现今大部分友商采取的方法。

ASUS 路由器之所以不支持扩展访客网络,是因为 ASUS 在访客网络上采用了一种截然不同的方式,即使用路由的 ebtables 功能来隔离,这种方式在组网诞生之前并没有问题,但是随着组网的兴起,这个非标准的方式和不具备扩展性立刻暴露出了问题。

那么有人可能会问“ASUS 为什么不支持 VLAN 呢?”,其实 ASUS 路由器支持 VLAN,用于隔离 WAN(广域网)和 LAN(局域网),但是从来没有准备把 VLAN 用在隔离访客网络,并且没有开放 VLAN 功能给用户使用。

所以教程要做的是,“母路由器”开启 VLAN,设置好标签,然后“子路由器”将访客网络的数据转发给“母路由器”之前添加上对应的 VLAN 标签,这样“母路由器”收到被标签的数据后,就不会和局域网的数据混淆,知道哪些数据是来自访客网络的,由“母路由器”完成对不同数据的隔离。

教程开始前的必看事项
因为 ASUS 路由器目前分为 HND 和非 HND 两大系,不同机型设置 VLAN 的命令截然不同。所以这篇是基于我手上有的设备“非 HND机型”研究的。换句话说 RT-AC86U 和 RT-AX88U 照搬命令是不行的,你必须自己研究需要哪些命令才能实现。
另外此教程仅支持可以刷 Asuswrt-Merlin(梅林)固件的路由器,因为需要利用 Merlin 的自定义脚本功能。教程开始前请将“母路由器”和“子路由器”均刷入最新的 Merlin 固件。
此篇教程明确支持型号有:RT-AC56U、RT-AC66U_B1、RT-AC68U、RT-AC1900P、RT-AC87U、RT-AC88U、RT-AC3100、RT-AC3200、RT-AC5300。未列出的,只要是非 HND,且可以刷 Merlin,应该支持。
因为“子母路由器”在 AP 模式和路由器模式下具都具有和 AiMesh 下相同的功能(包括 802.11k/v 协议支持 [2]),并且 AP 模式下更利于操作,所以教程将不以 AiMesh 下为前提。不过通过 SSH 对 AiMesh 下的“子路由器”新建相同脚本,应该也实现可以 AiMesh 模式下的扩展访客网络,但是由于太复杂了不介绍之。

教程正文
第一步:请确保你有两台刷了 Merlin 固件的支持路由器(这两台路由器均请退出 AiMesh 模式)。“母路由器”请在 [系统管理] 下面设置为 [ 路由器模式 ],“子路由器”请同样位置设置为 [ AP 模式 ]。

第二步:将“子路由器”的 WAN 连接到“母路由器”的 LAN 接口上面。

第三步:“母路由器”启用你的访客网络,记住启用的是哪一个,比如开启的是 5GHz-1,设置好 SSID 和密码。再登录到“子路由器”,设置完全相同的访客网络(注:“子路由器”登录 IP 地址需要在“母路由器”网络地图中获得)

第四步:两台路由器均前往 [系统管理] -> [系统设置] -> 开启 [JFFS custom scripts and configs(JFFS 自定义脚本和配置)]。

第五步:两台路由器均请在 [系统设置] 页面下方开启 [启用 SSH],并设置到 [LAN only]。

第六步:给你的电脑安装 WinSCP(这是一个用于向路由器内置存储空间传输文件的软件,我们用它把脚本传到路由器),最新版官网下载地址:https://sourceforge.net/projects/winscp/files/latest/download

第七步:首先登录“母路由器”,WinSCP“文件协议”设置为 SCP,“主机名”即路由器的登录 IP 地址,用户名和密码后填好后登录。登录后左侧是你的电脑本地文件夹,右侧是路由器的远程文件夹,不要随意修改删除文件,首次登录路由器应该是在“tmp”文件夹下面,点击右侧上方的“..”到最外面一层文件夹,这时候你应该能看到名为“jffs”的文件夹,点进去,我们所有的脚本都要在这里面存放。

第八步:接下来要给路由器新建几个脚本和配置。

  首先使用 WinSCP 登录“母路由器”,打开“jffs”里面的“script”文件夹,再其中新建一个名为“services-start”的文件,注意:文件新建前,请根据脚本中的中文备注修改相关内容以匹配你的需求。脚本内容为:
  1. #!/bin/sh
  2. PATH="/sbin:/usr/sbin:/bin:/usr/bin:${PATH}"
  3. robocfg show | grep -i vlan101 > /dev/null 2>&1 || \
  4. (
  5. # 给 LAN 和 CPU 添加 VLAN 标签,LAN 和 CPU 的接口名称在不同机型有所区别,可执行 robocfg show 命令查询,此处假设 LAN 是 1-4 ,CPU 是 5
  6. robocfg vlan 101 ports "1t 2t 3t 4t 5t"

  7. vconfig add eth0 101
  8. ifconfig vlan101 up

  9. # wl1.1 是访客网络 5GHz-1 的接口名称,wl1.2 是访客 5GHz-2,wl0.1 是访客网络 2.4GHz-1 以此类推
  10. brctl addbr br1
  11. brctl stp br1 on
  12. brctl delif br0 wl1.1
  13. brctl addif br1 vlan101
  14. brctl addif br1 wl1.1

  15. # 给访客网络建立一个新的子网,子网地址不能和现有局域网冲突,下方使用的是 192.168.101.1,通常不会冲突直接复制即可。
  16. ifconfig br1 192.168.101.1 netmask 255.255.255.0
  17. ifconfig br1 up

  18. nvram set lan_ifnames="vlan1 eth1 eth2"
  19. nvram set lan_ifname="br0"
  20. nvram set lan1_ifnames="vlan101 wl1.1"
  21. nvram set lan1_ifname="br1"
  22. nvram commit
  23. )
复制代码
然后保存文件,保存文件后右击文件,选择属性,设置权限为 0755。

  再新建一个名为“firewall-start”的文件,脚本目的起到隔离访客网络作用,无特殊需求无需修改,内容为:
  1. #!/bin/sh
  2. PATH="/sbin:/usr/sbin:/bin:/usr/bin:${PATH}"

  3. iptables -D FORWARD -i br1 -m state --state NEW -j ACCEPT >/dev/null 2>&1
  4. iptables -I FORWARD -i br1 -m state --state NEW -j ACCEPT

  5. iptables -D FORWARD -i br1 -o br0 -m state --state NEW -j DROP >/dev/null 2>&1
  6. iptables -I FORWARD -i br1 -o br0 -m state --state NEW -j DROP

  7. iptables -D FORWARD -i br0 -o br1 -m state --state NEW -j DROP >/dev/null 2>&1
  8. iptables -I FORWARD -i br0 -o br1 -m state --state NEW -j DROP

  9. iptables -D INPUT -i br1 -m state --state NEW -j DROP >/dev/null 2>&1
  10. iptables -I INPUT -i br1 -m state --state NEW -j DROP

  11. iptables -D INPUT -i br1 -p tcp --dport 53 -j ACCEPT >/dev/null 2>&1
  12. iptables -I INPUT -i br1 -p tcp --dport 53 -j ACCEPT

  13. iptables -D INPUT -i br1 -p udp -m multiport --dport 53,67 -j ACCEPT >/dev/null 2>&1
  14. iptables -I INPUT -i br1 -p udp -m multiport --dport 53,67 -j ACCEPT

  15. sleep 1
  16. killall eapd
  17. eapd
复制代码
保存后修改权限 0755。

  然后再在“jffs”下面的“configs”文件夹中,新建立名为“dnsmasq.conf.add”的文件,用于给新的 VLAN 分配 DHCP,此处子网需要和上方脚本设置相同。文件内容为:
  1. interface=br1
  2. dhcp-range=br1,192.168.101.2,192.168.101.254,255.255.255.0,86400s
  3. dhcp-option=br1,3,192.168.101.1
  4. dhcp-option=br1,6,192.168.101.1
复制代码
保存后修改权限 0755。

这样“母路由器”就设置好了,接下来用 WinSCP 登录“子路由器”。

  “jffs”下面的“script”文件夹下面新建“services-start”,内容有所不同,目的是转发访客网络的数据之前添加上 VLAN 标签,内容为:
  1. #!/bin/sh
  2. PATH="/sbin:/usr/sbin:/bin:/usr/bin:${PATH}"

  3. robocfg show | grep -i vlan101 > /dev/null 2>&1 || \
  4. (
  5. # 引号中 0 在这里是 WAN,5 同样指的是 CPU,实际需要根据自身情况查询
  6. robocfg vlan 101 ports "0t 5t"
  7. vconfig add eth0 101
  8. ifconfig vlan101 up
  9. # 下方访客网络接口根据你的实际情况更改,默认是 5GHz-1 的 wl1.1
  10. brctl addbr br1
  11. brctl delif br0 wl1.1
  12. brctl addif br1 vlan101
  13. brctl addif br1 wl1.1
  14. ifconfig br1 up

  15. nvram set lan_ifnames="vlan1 eth1 eth2"
  16. nvram set lan_ifname="br0"
  17. nvram set lan1_ifnames="vlan101 wl1.1"
  18. nvram set lan1_ifname="br1"
  19. nvram commit

  20. killall eapd
  21. eapd
  22. )
复制代码
完成后保存修改权限 0755。

第九步
为了安全,请前往两台路由器的  [系统管理] -> [系统设置] 关闭 SSH。

到此所有的设置就都完成了,然后重启两台路由器。此时“子路由器”访客网络将会完全隔离于局域网,并且 IP 地址也和局域网的 IP 地址不同,至此教程完成。

常见问题
问:为什么访客网络无法连接?无法获取 IP 地址?
答:这有可能是因为没有根据脚本备注的地方修改恰当的内容。

问:为什么访客网络依然能访问路由器下面的 USB 设备?
答:目前隔离可以保证局域网和访客的完全隔离,但是访客与路由器的隔离有些难以解决,这是因为 iptables 规则允许访客和路由器互通以实现 DHCP 分发、DNS 解析和上网,要实现完全隔离又不影响上网需要更多 iptables 规则,但我已经试了已知的几乎所有方法,都没有成功实现,还望高人协助。

结语
相信随着 ASUS 在 AiMesh 上的投入,我们很快就能看到官方的类似实现方法,而 Merlin 的作者也通过对源码的观察印证了这点 [3]。在帖子的最后,我还要再次感谢下 52asus 社区的支持,这篇教程离不开 52asus 的支持,非常感谢。

角标
[1] Merlin 作者在源代码中看到 ASUS 为 RT-AC68U 等机型引入了 802.11k/v/r 支持
[2] 网友 maxbraketorque 发现 AP 模式下也可以正常使用 802.11k/v
[3] Merlin 作者提到 ASUS 正在朝着向 AiMesh 添加访客网络功能努力着

参考资料
这篇帖子大部分命令、脚本来自这些文献,感谢他们的指引和启发。
https://www.snbforums.com/thread ... e-guest-wifi.32125/
https://www.snbforums.com/thread ... n-mini-howto.20529/
https://www.snbforums.com/thread ... vate-network.14983/
https://www.snbforums.com/thread ... lin-rt-ac68u.18969/
https://www.snbforums.com/thread ... 0-in-ap-mode.55822/
https://www.snbforums.com/thread ... thentication.55013/
https://www.snbforums.com/thread ... dhcp-problem.47780/
https://www.snbforums.com/threads/vlan-problem.36269/
https://www.snbforums.com/thread ... d-1-lan-port.32808/
https://www.snbforums.com/thread ... -iot-devices.46634/
https://www.snbforums.com/thread ... oss-networks.47502/
https://www.snbforums.com/thread ... ustom-bridge.28004/
https://www.snbforums.com/threads/ssid-to-vlan.24791/
https://www.snbforums.com/thread ... t-based-vlan.12750/
https://www.snbforums.com/thread ... sus-rt-ac68u.49312/

对于 RT-AC86U 或 RT-AX88U 的用户,这个参考资料中的命令可能会对你们起到帮助,因为没有相关机型恕无力测试。
https://gist.github.com/Jimmy-Z/6120988090b9696c420385e7e42c64c4

1

主题

94

回帖

251

积分

中级会员

Rank: 3Rank: 3

积分
251

GT-AC5300RT-AC88U

发表于 2020-2-24 19:08:32 | 显示全部楼层
意犹未尽~~~~~
回复

使用道具 举报

8

主题

93

回帖

365

积分

中级会员

Rank: 3Rank: 3

积分
365
发表于 2020-2-25 14:44:54 | 显示全部楼层
膜拜大佬
回复

使用道具 举报

14

主题

834

回帖

2万

积分

特聘会员

Rank: 2

积分
21750
 楼主| 发表于 2020-2-26 18:09:56 | 显示全部楼层

目前已经更新,感谢支持

5

主题

84

回帖

450

积分

中级会员

Rank: 3Rank: 3

积分
450
发表于 2020-2-27 00:28:53 | 显示全部楼层
学习一下
回复

使用道具 举报

14

主题

834

回帖

2万

积分

特聘会员

Rank: 2

积分
21750
 楼主| 发表于 2020-2-28 14:57:50 | 显示全部楼层
应邀晒一下这次的奖品。手机像素不好,还请见谅。


因为是特殊渠道商品,所以没有说明书、质保卡等,但是是全新的哦。


安装完成的照片:


再次感谢 52asus 的支持!

4

主题

31

回帖

480

积分

中级会员

Rank: 3Rank: 3

积分
480

RT-AX86URT-AC86URT-AC68UTUF-AX3000

发表于 2020-8-25 09:34:35 | 显示全部楼层
看看大神的指导

0

主题

1

回帖

18

积分

新手上路

Rank: 1

积分
18
发表于 2020-9-8 17:30:02 | 显示全部楼层
学习到了。
回复

使用道具 举报

0

主题

7

回帖

16

积分

新手上路

Rank: 1

积分
16
发表于 2020-9-28 16:18:13 | 显示全部楼层
实用技术,值得点赞,学习了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回列表 搜索 官方QQ群
×

秒后自动关闭

小黑屋|手机版|Archiver|华硕网络产品技术交流平台 ( 苏ICP备16010857号-1 )苏公网安备 32050502000499号

GMT+8, 2024-4-29 01:22 , Processed in 0.061357 second(s), 52 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表