我已经为此苦思冥想了很久,真的很希望得到第二个意见/理智检查:
LAN 接口 eth1 与 br0 (192.168.2.1) 上的 OpenVPN tap0 桥接在一起。我想将 subif eth1.100 添加到 (桥接) eth1,以用作访客 VLAN,该 VLAN 仅为 LAN 盒 (192.168.22.0/24) 的子集提供 Internet 访问。
看起来这并不像我想象的那么简单,因为任何标记的流量显然都会通过主机接口到达桥接器。遵循此线程中的建议
我尝试了 eth1->eth.0->br0 和 eth1->eth.100->br1 的“双桥”设置,这使我现有的 br0 设置上的流量停止了。
第二最佳选项是使用“ebtables -t broute -A BROUTING -i eth1 -p 802_1Q -j DROP”并且只有 eth1.100(没有额外的桥接),其产生的行为与没有 BROUTING 表条目的 eth1.100 几乎相同:我可以从本地主机 ping 通 subif,但从 VLAN 内的客户端 ping 通后返回 50% 的丢失率和“目标主机不可达”。
所有这些都适用于 Debian 9.1、vlan v. 1.9-3.2 和 bridge-utils v. 1.5-13。
编辑以提供更多细节:显然,VLAN 流量到达桥接器,并且我收到“来自 192.168.22.100 的 martian source 192.168.22.1 on dev br0”从客户端 192.168.22.100 到 eth1.100 (192.168.22.1) 的 ping。据我理解上述 ebtables 命令,broute 表中的“drop”表示“路由框架而不是桥接器”。那么这里是否发生了这种情况?如果是这样,为什么这些数据包会被视为“martian”?
‘brctl show’的输出:
网桥名称 | 网桥 ID | STP 启用 | 接口
br0 | 8000.a0b3cce4c5a9 | 否 | eth1+tap0
‘ifconfig eth1’的输出:
flags=4163 mtu 1500
ether a0:b3:cc:e4:c5:a9 txqueuelen 1000(以太网)
‘ifconfig eth1.100’的输出:
标志=4163 mtu 1500
inet 192.168.22.1 网络掩码 255.255.255.0 广播 192.168.22.255
ether a0:b3:cc:e4:c5:a9 txqueuelen 1000(以太网)
‘ifconfig br0’ 的输出:
标志=4163 mtu 1500
inet 192.168.2.1 网络掩码 255.255.255.0 广播 192.168.2.255
ether a0:b3:cc:e4:c5:a9 txqueuelen 1000(以太网)
iptables:
iptables -A 输入 -i eth1.100 -j 接受
iptables -A 输出 -o eth1.100 -j 接受
iptables -A FORWARD -i eth1.100 -o $EXTERNAL_INTERFACE -j 接受
iptables -A FORWARD -i $EXTERNAL_INTERFACE -o eth1.100 -j 接受