![隔离路由器上的端口](https://linux22.com/image/118992/%E9%9A%94%E7%A6%BB%E8%B7%AF%E7%94%B1%E5%99%A8%E4%B8%8A%E7%9A%84%E7%AB%AF%E5%8F%A3.png)
与制造商的讨论表明,路由器的硬件和操作系统不支持甚至不可能进行此配置。
答案1
到目前为止默认设置的解释:
Realtek 交换机已经用 标记帧VLAN 1
,其他 LAN 端口由 Broadcom 交换机标记并显示标记的在连接到 SoC 的端口 8 上。 WAN口出现未标记的在端口 8 上(如果这就是“u”的意思,那么来源robocfg
在这里没有帮助,而且我找不到数据表)。
猜测:SoC以太网驱动关联未标记的带有eth0
、 和标记为 的VLAN 1
帧eth1
,并丢弃带有所有其他 VLAN 标记的帧。这意味着您可以根据需要配置 Broadcom 交换机,而无法使用 VLAN 标记隔离任何端口。
该行为可以通过从所有网桥中删除eth0
和eth1
、使用 VLAN id 进行测试... 8t
,... 8u
并从双方发送没有和带有不同 id 的数据包。
因此,任务是找出 SoC 以太网驱动程序实际执行的操作,以及它是否可以以任何方式进行配置。如果您可以告诉它,例如,将 VLAN id 10 路由到eth2
并将 VLAN id 20 路由到eth3
,那么您就一切就绪了。
如果它不是 SoC 以太网驱动程序,但eth1
已经是 VLAN 从属设备eth0
并且内核执行重定向,那么就更好了。
启动后查看dmesg
和 的任何提示eth0
,eth1
找出/sys/class/net/eth[01]/device
指向何处以及哪个内核模块负责等等。这需要进行一些调查并查看各种内容。
编辑
1)瑞昱 RTL8365MBswitch 有自己的内核模块rtl8365mb
。来源(可能有不同的变体)可用。数据表一个非常相似的芯片是可用的。有了所有这些信息,应该可以编写类似于robocfg
/ 的内容swconfig
并控制开关。显然有些想过那个,但我无法通过谷歌搜索任何成功。
2)根据消息robocfg
来源,Broadcom和Realtek芯片的VLAN表实现似乎足够相似,可以从数据表中的8.12.6得出结论,这t
意味着“为出口添加标签”,并且u
意味着“无条件地为出口删除标签” 。
3)您的SoC芯片组似乎是带有三个片上以太网端口的BCM47XX,其中两个似乎在其他地方使用,并且是eth0
:
fwd0: Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller 7.14.131.56 (r641653)
fwd1: Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller 7.14.131.56 (r641653)
eth0: Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller 7.14.131.56 (r641653)
控制模块et
是来源(可能有不同的变体)可用。
我并不完全清楚eth1
和是否eth2
也属于该驱动程序,并且只是稍后注册,或者它们是否属于bcmdhd
(WLAN),和/或它们是否在某个阶段被 udev 重命名:
Dongle Host Driver, version 1.363.45.58013 (r651509)
Compiled in drivers/net/wireless/bcmdhd on Jun 21 2017 at 10:36:36
Register interface [eth1] MAC: 34:97:f6:20:1b:a8
...
Dongle Host Driver, version 1.363.45.58013 (r651509)
Compiled in drivers/net/wireless/bcmdhd on Jun 21 2017 at 10:36:36
Register interface [eth2] MAC: 34:97:f6:20:1b:ac
所以下一步就是整理所有的网络接口。请使用ip -d link
、 以及ls -l /sys/class/net/*/lower*
和的输出来编辑问题ls -l /sys/class/net*
。如果这没有提供足够的信息,udevadm info -a -p /sys/class/net/eth0
并且udevadm info -a -p /sys/class/net/eth1
假设路由器使用udev
.
另一件要寻找的事情是配置信息所在的位置,因此modinfo rtl8365mb
,modinfo et
可能会产生一些有趣的东西以及find /etc | xargs grep eth
或类似的东西。
正如你所看到的,我正在寻找信息;如果没有我面前的系统,这很慢并且不容易远程完成。请随意以任何方式执行这些或其他步骤来解决问题。目标是找到显示“以某种方式与 VLAN 标记 1eth1
相关联”的位置。eth0