我正在尝试在本地网络和互联网之间建立有效的连接。首先,我在 eth0(LAN)和 eth1(互联网)之间设置了一个网桥(br0,具有其他接口没有的 IP 地址),并在 iptables 中创建了 nat 规则以伪装 LAN 中本地 IP 的源 IP。一切正常,我可以从子网 192.168.1.0 访问互联网。
现在我想创建两个 vlan:100 和 200。我尝试使用 vconfig 创建 eth0.100 和 eth0.200,但我不知道如何将它们连接到互联网。来自我本地 LAN 的数据包到达时带有 vlan ID 100/200 标签,流量通过 eth1。但我如何才能让数据包返回正确的 eth0.x?
我考虑过创建两个网桥,一个用于 VLAN 100,一个用于 VLAN 200,并将它们连接到 eth1。但是,我该如何路由从互联网接收到的数据包,使其到达正确的网桥呢?
当前设置:
eth0 <--> br0 <--> eth1
建议的:
1.
eth0.100 <--> br100 <--> eth1
eth0.200 <--> br200 <--> eth1
2.
eth0.100 & eth0.200 <--> br0 <--> eth1
答案1
您需要将流量从 LAN 路由到 WAN。
这是由路由器而不是网桥完成的,因此它应该看起来像这样:
eth0 (192.168.1.0/24) <==> eth1 (公共互联网)
对于 VLAN 100 和 200,如何将流量路由到正确的 VLAN?通过为每个 VLAN 创建不同的子网,这样您的主机就知道哪个 VLAN 是正确的输出接口,所以现在应该看起来像这样:
eth0.100 (192.168.100.0/24) <==> eth1 (公共互联网)
eth0.200 (192.168.200.0/24) <==> eth1 (公共互联网)
记住两种情况的 NAT:
iptables -I POSTROUTING -t nat -o eth1 -j MASQUERADE