在 OpenStack 中设置 OpenVPN L2 隧道

Setting up an OpenVPN L2 Tunnel in OpenStack

我正在尝试为 OpenStack 中虚拟机中的 L2 隧道设置 OpenVPN 服务器。为此,我有一个具有以下网络接口的虚拟机:

- ens3 -> 192.168.1.1/24 -> Management network for SSH
- ens8 -> 10.1.1.1/24 -> Bridged network for VPN

我使用 brctl 创建了一个桥,使用命令 ip tuntap add mode tap tap0 创建了一个 tap 接口,并使用 ens8 桥接了它们。这是结果:

$ brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.322e8b731919       yes             ens8
                                                    tap0

网桥也在10.1.1.1/24网络中分配了一个IP

$ ifconfig
br0   Link encap:Ethernet  HWaddr 32:2e:8b:73:19:19
      inet addr:10.1.1.5  Bcast:10.1.1.255  Mask:255.255.255.0
      inet6 addr: fe80::f816:3eff:fe3b:f580/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1454  Metric:1
      RX packets:813 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1833 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:51891 (51.8 KB)  TX bytes:147062 (147.0 KB)

ens3  Link encap:Ethernet  HWaddr fa:16:3e:20:47:bf
      inet addr:192.168.45.9  Bcast:192.168.45.255  Mask:255.255.255.0
      inet6 addr: fe80::f816:3eff:fe20:47bf/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1454  Metric:1
      RX packets:3099003 errors:0 dropped:0 overruns:0 frame:0
      TX packets:3086646 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:272510540 (272.5 MB)  TX bytes:250832632 (250.8 MB)

ens8  Link encap:Ethernet  HWaddr fa:16:3e:3b:f5:80
      inet6 addr: fe80::f816:3eff:fe3b:f580/64 Scope:Link
      UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1454  Metric:1
      RX packets:3276694 errors:0 dropped:0 overruns:0 frame:0
      TX packets:3020598 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:255802571 (255.8 MB)  TX bytes:245085174 (245.0 MB)

lo    Link encap:Local Loopback
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:65536  Metric:1
      RX packets:180 errors:0 dropped:0 overruns:0 frame:0
      TX packets:180 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1
      RX bytes:13920 (13.9 KB)  TX bytes:13920 (13.9 KB)

tap0  Link encap:Ethernet  HWaddr 32:2e:8b:73:19:19
      UP BROADCAST PROMISC MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

但是我无法从网桥 ping 通 10.1.1.1/24 网络中的任何其他机器。这在 ens8 界面之前是有效的。我的想法是首先在其上设置桥接接口和 运行 OpenVPN 服务器。但是,如果没有与外界的连接,我什至不确定它是否可行。以太网桥之类的 L2 设备甚至可以在 OpenStack VM 中工作吗?在这里设置 L2 隧道的最佳方法是什么?

修复方法是对网桥和物理接口使用相同的 MAC 地址。出于某种原因,OpenStack 正在根据 MAC 过滤数据包。要更改 MAC,请使用以下命令。

ifconfig br0 hw ether <new_MAC>