在 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>
我正在尝试为 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>