我目前正在 OpenVPN 中试验桥接模式,到目前为止只使用了 tun 适配器。我在 Virtualbox (Ubuntu 22.04 LTS) 中设置了 3 个虚拟机 (Oracle Virtualbox) 和内部网络。
VM01(VPN 桥):2 个接口
enp0s3:192.168.10.10/24 intnet1
enp0s8:192.168.20.10/24 intnet2
VM02:1 个接口
enp0s3:192.168.10.11/24 Virtualbox 网络 intnet1
VM03:1 个接口
enp0s3:192.168 .20.11/24 虚拟盒网络 intnet2
没有 VPN,它可以按预期工作,我可以从 VM01 ping 到 VM02、VM03。但对于 VM02,我无法 ping 通 VM03。
VM02 和 VM01 之间的连接是模拟互联网连接,目标是模拟互联网连接之间的 VPN 以桥接网络 192.168.10.0/24。
VM02(192.168.10.0/24) <--VPN--> VM01(VPN 桥) <--桥--> 网络 192.168.20.0/24
我使用 OpenVPN 的脚本来创建网桥
#!/bin/bash
#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################
# Define Bridge Interface
br="br0"
# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"
# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth="enp0s8"
eth_ip="192.168.20.10"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.20.255"
for t in $tap; do
openvpn --mktun --dev $t
done
brctl addbr $br
brctl addif $br $eth
for t in $tap; do
brctl addif $br $t
done
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
ifconfig $eth 0.0.0.0 promisc up
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
在 VM02 和 VM01 之间建立 VPN 连接后,我想使用 ping 192.168.20.11 从 VM02 ping 到 VM03,似乎桥接器收到 ARP 请求,并且还可以找到正确的 MAC 地址,但它似乎没有做更多的事情。
Ping 到 VPN 主机工作正常(从 VM02:ping 192.168.20.10)。我还在网络适配器上激活了混杂模式。