我已经在具有单个物理接口的基于 openwrt 的系统中创建了两个 VLAN 桥。
*) eth0->lan->br-lan
*) br-lan->br-lan.2(VLAN INTF)->br-vlan2(BRIDGE INTF)
*) br-lan->br-lan.20(VLAN INTF)->br-vlan20(BRIDGE INTF)
我正在 ubuntu 机器上运行 DHCP 服务器。
我正在尝试在 VLAN 之间进行路由以打开 VLAN 间通信。但我无法成功。
我所做的是
iptables -t nat -I POSTROUTING -o br-vlan2 -j MASQUERADE
iptables -A FORWARD -i br-vlan2 -o br-vlan20 -mstate --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i br-vlan20 -o br-vlan2 -j
ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
我尝试使用转发规则更新 /etc/config/firewall
config zone
option name 'vlan2'
list network 'br-lan.2'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
config zone
option name 'vlan20'
list network 'br-lan.20'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
config forwarding
option src 'br-lan.2'
option dest 'br-lan.20'
config forwarding
option src 'br-lan.20'
option dest 'br-lan.2'
这里出了什么问题?我是路由器概念的新手。
编辑:
我的设置如下
IP: 192.168.2.10 192.168.20.10
GW: 192.168.2.1 192.168.20.1
|client 1| |client 2|
^ ^
____|______________|________
| br-vlan2 | br-vlan20 |
_____________ |192.168.2.2 | 192.168.20.2 |
| | |_____________|______________|
| 192.168.1.1 | | |br-lan IP: 192.168.1.2|
| router |---->|eth0| GW: 192.168.1.1 |
|_____________| |____|_______________________|
| x86 machine as AP |
|____________________________|
答案1
普通的 OpenWRT 路由器通常在 CPU 中有一个以太网接口,该接口内部连接到“智能交换机”芯片。交换机的其他端口作为插孔在外部可用,一个端口通常标记为“WAN”,其他端口为“LAN”。交换机的配置方式如下:CPU 交换机链路为中继(所有 VLAN 都已标记),一个端口(“WAN”)设置为未标记一个 VLAN,其余端口(“LAN”)设置为未标记其他 VLAN。这本质上是标准的“单板路由器”设置,其中交换机用作低端口数路由器的简单端口扩展器。
其余部分看起来与您的情况完全一样,Linux 计算机具有单个以太网接口。为了补充交换机设置,它被拆分为 VLAN 子接口。然后,根据其功能配置这些子接口:LAN 被放入带有 WLAN 接口的网桥中,而 WAN 则配置为不带网桥。
此设置如下所示(eth0 是路由器的唯一接口):
- eth0 有两个 VLAN 子接口,.1 和 .2
- eth0.1、wlan0 和 wlan1 合并为 br-lan,分配 IP 地址并放入 LAN 区域
- eth0.2 也已分配地址。
如果你真的需要桥梁,可以这样做:
config interface 'vlan20'
option ifname 'eth0.20'
option type 'bridge'
option proto 'static'
option netmask '255.255.255.0'
option ipaddr '192.168.20.1'
config interface 'vlan2'
option ifname 'eth0.2'
option type 'bridge'
option proto 'static'
option netmask '255.255.255.0'
option ipaddr '192.168.2.1'
这将被转换为:将创建两个 VLAN 子接口eth0
,并创建两个桥接器,br-vlan20
和br-vlan2
。每个 VLAN 子接口将参与其自己的桥接器。然后为桥接器分配 IP。
如果您不需要桥接器(例如,您不打算添加其他接口),只需option type 'bridge'
从定义中删除行即可。
请注意,在这种情况下,链接另一端的设备eth0
必须准备好处理标记帧!
这种情况的防火墙设置可能如下所示:
config zone
option name 'zone20'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
option network 'vlan20'
config zone
option name 'zone2'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
option masq '1'
option network 'vlan2'
config forwarding
option src 'zone20'
option dest 'zone2'
config forwarding
option src 'zone2'
option dest 'zone20'
注意防火墙中的 选项如何与配置文件中的 名称相对应zone
。Linux接口名称仅在配置文件中出现一次,其他地方则不会出现。但是和选项与选项相对应。network
interface
network
network
forwarding
src
dst
zone
name