OpenVPN无法访问其他客户端,arp回复客户端而不是服务器

我在运行Ubuntu 16.04的三个VirtualBox虚拟机上configuration了OpenVPN。

networkingconfiguration如下: networkingconfiguration图 。

服务器configuration:

local 192.168.2.2 port 1194 proto udp dev tap0 ca ca.crt cert server.crt key server.key dh dh2048.pem ifconfig-pool-persist ipp.txt server-bridge 192.168.0.2 255.255.255.0 192.168.0.50 192.168.0.100 client-to-client keepalive 10 20 cipher AES-128-CBC comp-lzo persist-key persist-tun verb 3 

客户端configuration:

 client dev tap proto udp remote 192.168.2.2 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key cipher AES-128-CBC comp-lzo verb 3 

我正在使用OpenVPN随附的网启动和网桥停止脚本来使用网桥。 连接打开没有问题。 我可以从客户端ping服务器和服务器的客户端。 问题是我无法ping客户端到客户端,例如ping从远程客户端(lab3)到另一个客户端(lab2),只能From 192.168.0.50 icmp_seq=1 Destination Host Unreachable

看来这个问题与ARP有关,因为当我在服务器上的br0的tcpdump上,我看到有一个问题ARP, Request who-has 192.168.0.1 tell 192.168.0.50, length 28 。 然后在客户端(lab2)上看到:

 ARP, Request who-has 192.168.0.1 tell 192.168.0.50, length 46 ARP, Reply 192.168.0.1 is-at 08:00:27:c8:1c:c7, length 28 

但答复似乎没有达到任何机器。

当OpenVPN连接打开时,路由表似乎是正确的:

服务器:

 default via 10.0.2.1 dev enp0s3 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.4 192.168.0.0/24 dev br0 proto kernel scope link src 192.168.0.2 192.168.2.0/24 dev enp0s9 scope link 192.168.2.0/24 dev enp0s9 proto kernel scope link src 192.168.2.2 

客户:

 default via 10.0.2.1 dev enp0s3 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.7 192.168.0.0/24 dev enp0s8 proto kernel scope link src 192.168.0.1 

远程客户端:

 default via 10.0.2.1 dev enp0s3 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.6 192.168.0.0/24 dev tap0 proto kernel scope link src 192.168.0.50 192.168.2.0/24 dev enp0s8 proto kernel scope link src 192.168.2.1 

任何想法如何让消息在两个客户端之间stream动? 我做错了什么或缺lessconfiguration中的东西吗?

这是通过将GW的networking适配器连接到192.168.0.0/24networking从VirtualBox设置为混杂模式解决的,因此桥接的接口处于混杂模式。 总而言之,VirtualBox需要混合模式才能够正确桥接,但至less我可以在这里提及它!

你应该检查你的VPN服务器是否启用了ipv4转发:

 cat /proc/sys/net/ipv4/ip_forward 

1 =启用,0 =禁用

启用它:

 echo 1 > /proc/sys/net/ipv4/ip_forward 

要使此设置在重新启动后生效,请确保以下行位于/etc/sysctl.conf中:

 net.ipv4.ip_forward = 1