![在未标记的 VLAN1 和标记的 VLAN100 之间添加 Linux 网桥设备](https://linux22.com/image/742869/%E5%9C%A8%E6%9C%AA%E6%A0%87%E8%AE%B0%E7%9A%84%20VLAN1%20%E5%92%8C%E6%A0%87%E8%AE%B0%E7%9A%84%20VLAN100%20%E4%B9%8B%E9%97%B4%E6%B7%BB%E5%8A%A0%20Linux%20%E7%BD%91%E6%A1%A5%E8%AE%BE%E5%A4%87.png)
我想在标记的 vlan 设备和未标记的 vlan1 之间添加一个网桥。但这并不像我预期的那样有效。首先,我想展示当前的网络配置。然后,我解释我想做什么以及我是如何做到的(但没有成功)。
这是网络:
____________ ______________
| IP-Cam | | WinPC |
| | | autoIP e.g |
| 172.16.0.3 | | 169.254.1.23 |
| 0.0.0.0 | | 255.255.0.0 |
|____________| |______________|
| V1U | V1U
___|_____________|_ _______________
| | V100U| |
| Switch |------| Service Port |
| | | 192.168.25.x |
|___________________| |_______________|
| V1U, V100T
| (eth0)
------------------------------------
| Linux Box |
| eth0 Service (V100T): 192.168.25.99|
| eth0 autoip: 169.254.31.23 |
------------------------------------
我有一个系统,里面有网络交换机、IP 摄像头、Linux 机箱、服务端口(交换机)和用于其他用途的 Windows PC。交换机配置为服务端口有一个带标签的 VLAN100。VLAN100 在 Linux 机箱端口上有一个标签,用于提供具有特殊服务地址的独立接口。交换机删除并在 V100U 端口上添加此标签,这样服务端口(PC)就不需要任何 VLAN 知识了。WinPC 和 Linux 机箱一样具有自动 IP 地址并提供特殊服务。
Linux 机器上的配置如下。
auto eth0
iface eth0 inet manual
# get an auto ip by avahi e.g. 169.254.31.23
up avahi-autoipd -D --force-bind eth0
# add route for the IP-Cam
post-up ip route add 172.16.0.0/16 dev eth0
# service port
auto vlan100
iface vlan100 inet static
vlan_raw_device eth0
address 192.168.25.99
netmask 255.255.255.0
该配置有效。因此,我可以从 Linux 机器访问 IP-Cam 和 WinPC。服务端口也发挥了作用,并且可以通过 192.168.25.99 上的 vlan100 设备访问 Linux 机器。
系统要求发生了变化,我需要另一种配置。首先,我无法更改交换机设置,因为它是预编程的嵌入式交换机。我需要知道的是,交换机上的服务端口 (V100U) 的行为类似于 IP-Cam/Win-PC 的端口。这意味着要将 V1U 与 V100T 设备桥接。因此,连接到服务端口的设备可以访问所有 V1U 端口,而无需了解 VLAN。服务端口不再用作服务端口 :)。
于是我把配置改成如下,觉得没什么特别的:
# V1U network
auto eth0
iface eth0 inet manual
# V100T network
auto vlan100
iface vlan100 inet manual
vlan_raw_device eth0
auto br0
iface br0 inet manual
bridge_ports eth0 vlan100
# get an auto ip by avahi e.g. 169.254.31.23
up avahi-autoipd -D --force-bind br0
# add route for the IP-Cam
post-up ip route add 172.16.0.0/16 dev br0
将设置更改为此之后。网络表现为有线。所以有时我可以从 Linux 机器 ping IP-Cam,有时不能。此外,连接到服务端口的设备有时可以 ping Linux 机器,有时不能。从服务端口 ping IP-Cam 永远不起作用。所以我想我添加了一个循环或其他东西。有什么想法可以让系统运行吗?
答案1
我能找到最接近的线索是这个:
https://bridge.linux-foundation.narkive.com/KYSQbc1f/bridging-untagged-and-tagged-vlans#post5
基本上,它不起作用,您必须强制 ebtables 使其工作,每个人都同意这一点,但未经测试的示例不起作用。并且有一个 Linux-2.4 补丁可以满足我们的要求,但显然它没有被接受。
我最终使用具有 vlan 功能的交换机来标记出 VLAN 1,并使用 eth0.1 作为桥接成员。
该线程已经足够旧了,我希望有一个更好的答案,但没有找到。