【问题标题】:How to forward packets between VLANs on Open vSwitch router?如何在 Open vSwitch 路由器上的 VLAN 之间转发数据包?
【发布时间】:2017-12-24 00:13:42
【问题描述】:

我正在尝试配置 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 的数据包是否有帮助。 em> 到 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 地址吗?

非常感谢任何帮助。

【问题讨论】:

    标签: router openvswitch vlan


    【解决方案1】:

    以下命令添加两条规则,将数据包从 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
    

    【讨论】:

    • 非常感谢您的回复。正如我所提到的,端口 1 在 VLAN5 中,端口 5 应该属于 VLAN 4。所以我尝试了:ovs-ofctl add-flow br0 in_port=5,dl_vlan=4,actions=mod_vlan_vid:5,output:1ovs-ofctl add-flow br0 in_port=1,dl_vlan=5,actions=mod_vlan_vid:4,output:5,但它不起作用。由于我的 OVS 路由器的 IP 为 192.168.3.1,它与家庭路由器 192.168.0.1 相连,因此我与 OVS 路由器连接的机器的 IP 为 192.168.3.10。如果我只是用上面的数据包转发数据包,你认为我还需要将数据包从 192.168.3.* 转发到 192.168.0.* 吗,非常感谢。
    【解决方案2】:

    我已经解决了这个问题。以下是解决方案。

    主要想法是建立一个与 OVS 网桥连接的 linux 网桥,当我需要 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
    

    我认为 linux bridge br-lan 最初应该与 eth0 (wan) 连接。据我所知,br0 可能意味着“本地”,IP 地址为 192.168.3.1。所有 VLAN 都使用该 IP 地址进行通信。如果我将“本地”移动到与 wan 端口连接的 linux 网桥,它应该可以工作。

    感谢所有查看并试图帮助我的人!

    【讨论】:

      猜你喜欢
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 2022-06-16
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多