Vpn
OpenVPN 無法訪問其他客戶端,arp 回復轉到客戶端而不是伺服器
我在三個執行 Ubuntu 16.04 的 VirtualBox VM 上配置了 OpenVPN。
網路配置如下: 網路配置圖片。
伺服器配置:
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
客戶端配置:
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 附帶的 bridge-start 和 bridge-stop 腳本來使用網橋。連接打開沒有問題。我可以從伺服器 ping 客戶端和從客戶端 ping 伺服器。問題是我無法 ping 客戶端到客戶端,例如從遠端客戶端(lab3)ping 到另一個客戶端(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
任何想法如何讓消息在兩個客戶端之間流動?我在配置中做錯了什麼或遺漏了什麼嗎?
這通過在 VirtualBox 設置中將連接到 192.168.0.0/24 網路的 GW 的網路適配器設置為混雜模式來解決,因此進行橋接的介面處於混雜模式。總而言之,沒有地方明確提到 VirtualBox 需要混雜模式才能正確橋接,但至少我可以在這裡提一下!
您應該檢查您的 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