如何在 Open vSwitch 路由器上的 VLAN 之间转发数据包?
How to forward packets between VLANs on Open vSwitch router?
我正在尝试配置 OVS 路由器。我想实现的是,通过在OVS路由器上添加流,如果将网线插入WAN端口(端口1),则与交换机端口(端口2-5)连接的设备可以访问互联网。
我在 OVS 路由器的文件 /etc/config/network
中的 VLAN 配置是:
eth1.1: 0t, 2
eth1.2: 0t, 3
eth1.3: 0t, 4
eth1.4: 0t, 5
eth1.5: 1, 6
ovs-vsctl show
的输出是:
root@OpenWrt:~# ovs-vsctl show
84d9ab2f-a3e6-46e3-874f-156ef975d673
Bridge "br0"
Controller "tcp:<an IP address>"
is_connected: true
fail_mode: standalone
Port "eth1.4"
Interface "eth1.4"
Port "eth1.2"
Interface "eth1.2"
Port "eth1.1"
Interface "eth1.1"
Port "br0"
Interface "br0"
type: internal
Port "eth1.3"
Interface "eth1.3"
ifconfig
的截断输出是:
br0: 192.168.3.1
eth0: 192.168.0.105 (There is another home router)
eth1, eth1.1-1.4
由于子网提供的 IP 前缀为 192.168.3.*,而路由器本身分配的 IP 为 192.168.0.,我想知道添加一个流以转发来自 192.168 的数据包是否有帮助。 3. 到 192.168.0.104.
所以我假设是不是正确的,比如一台IP为192.168.3.10的机器,它要查询google,路径应该是192.168.3.10->192.168.0.105-> 192.168.0.1(家庭路由器)->外部?
这是基于Layer3构建流量。但我想知道是否可以在 VLAN 之间建立流?根据我的配置,WAN 端口是 port1,属于 VLAN 5。您认为从 VLAN 1(机器连接)到 VLAN 5 和从 VLAN 5 到 VLAN 1 的双向添加流量是否可行?如果是这样,请问有什么例子吗?
另一个细节。 ifconfig
的输出显示 eth0 接口被分配了 IP 192.168.0.105,这意味着它连接到我的家庭路由器 (192.168.0.1)。那么我需要将这些之间的数据包转发到 IP 地址吗?
非常感谢任何帮助。
以下命令添加两条规则,将数据包从 VLAN 5 和端口 5 发送到具有 VLAN 1 的端口 1,反之亦然:
ovs-ofctl add-flow br0 in_port=5,dl_vlan=5,actions=mod_vlan_vid:1,output:1
ovs-ofctl add-flow br0 in_port=1,dl_vlan=1,actions=mod_vlan_vid:5,output:5
我已经解决了这个问题。以下是解决方法。
主要想法是构建一个 linux 网桥与 OVS 网桥连接,当我需要 VLAN 能够与外部互联网通信时。我可以使用 brctl 来操作 linux 网桥。首先我尝试了:
brctl addbr br-lan
brctl addif br-lan br0
然后所有的机器都可以上网了。但不幸的是,只有几分钟。之后,路由器崩溃了。除非我重置它,否则我无法再访问 OVS 路由器。这可能是由不正确的网桥配置引起的。我尝试了很多方法,最后这个有效:
brctl addbr br-lan
ifconfig br-lan 192.168.3.1
brctl addif br-lan br0
ifconfig br0 0.0.0.0
我考虑过linuxbridge br-lan本来应该是和eth0(wan)连接的。据我所知,br0 可能表示 'local',IP 地址为 192.168.3.1。所有 VLAN 都使用此 IP 地址进行通信。如果我将 'local' 移动到与 wan 端口连接的 linux 网桥,它应该可以工作。
感谢所有查看并试图帮助我的人!
我正在尝试配置 OVS 路由器。我想实现的是,通过在OVS路由器上添加流,如果将网线插入WAN端口(端口1),则与交换机端口(端口2-5)连接的设备可以访问互联网。
我在 OVS 路由器的文件 /etc/config/network
中的 VLAN 配置是:
eth1.1: 0t, 2
eth1.2: 0t, 3
eth1.3: 0t, 4
eth1.4: 0t, 5
eth1.5: 1, 6
ovs-vsctl show
的输出是:
root@OpenWrt:~# ovs-vsctl show
84d9ab2f-a3e6-46e3-874f-156ef975d673
Bridge "br0"
Controller "tcp:<an IP address>"
is_connected: true
fail_mode: standalone
Port "eth1.4"
Interface "eth1.4"
Port "eth1.2"
Interface "eth1.2"
Port "eth1.1"
Interface "eth1.1"
Port "br0"
Interface "br0"
type: internal
Port "eth1.3"
Interface "eth1.3"
ifconfig
的截断输出是:
br0: 192.168.3.1
eth0: 192.168.0.105 (There is another home router)
eth1, eth1.1-1.4
由于子网提供的 IP 前缀为 192.168.3.*,而路由器本身分配的 IP 为 192.168.0.,我想知道添加一个流以转发来自 192.168 的数据包是否有帮助。 3. 到 192.168.0.104.
所以我假设是不是正确的,比如一台IP为192.168.3.10的机器,它要查询google,路径应该是192.168.3.10->192.168.0.105-> 192.168.0.1(家庭路由器)->外部?
这是基于Layer3构建流量。但我想知道是否可以在 VLAN 之间建立流?根据我的配置,WAN 端口是 port1,属于 VLAN 5。您认为从 VLAN 1(机器连接)到 VLAN 5 和从 VLAN 5 到 VLAN 1 的双向添加流量是否可行?如果是这样,请问有什么例子吗?
另一个细节。 ifconfig
的输出显示 eth0 接口被分配了 IP 192.168.0.105,这意味着它连接到我的家庭路由器 (192.168.0.1)。那么我需要将这些之间的数据包转发到 IP 地址吗?
非常感谢任何帮助。
以下命令添加两条规则,将数据包从 VLAN 5 和端口 5 发送到具有 VLAN 1 的端口 1,反之亦然:
ovs-ofctl add-flow br0 in_port=5,dl_vlan=5,actions=mod_vlan_vid:1,output:1
ovs-ofctl add-flow br0 in_port=1,dl_vlan=1,actions=mod_vlan_vid:5,output:5
我已经解决了这个问题。以下是解决方法。
主要想法是构建一个 linux 网桥与 OVS 网桥连接,当我需要 VLAN 能够与外部互联网通信时。我可以使用 brctl 来操作 linux 网桥。首先我尝试了:
brctl addbr br-lan
brctl addif br-lan br0
然后所有的机器都可以上网了。但不幸的是,只有几分钟。之后,路由器崩溃了。除非我重置它,否则我无法再访问 OVS 路由器。这可能是由不正确的网桥配置引起的。我尝试了很多方法,最后这个有效:
brctl addbr br-lan
ifconfig br-lan 192.168.3.1
brctl addif br-lan br0
ifconfig br0 0.0.0.0
我考虑过linuxbridge br-lan本来应该是和eth0(wan)连接的。据我所知,br0 可能表示 'local',IP 地址为 192.168.3.1。所有 VLAN 都使用此 IP 地址进行通信。如果我将 'local' 移动到与 wan 端口连接的 linux 网桥,它应该可以工作。
感谢所有查看并试图帮助我的人!