我设置了一个 Ubuntu OpenVPN 服务器。一切正常,VPN 客户端可以成功连接到 VPN 服务器。问题是我无法连接到 VPN 服务器后面的计算机
tun0 上的 tcp 转储 root@gtway-sr-s:~# tcpdump -i tun0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes
15:10:45.785732 IP 10.8.0.6 > 192.168.33.2: ICMP echo request, id 7, seq 48841, length 40
15:10:50.469529 IP 10.8.0.6 > 192.168.33.2: ICMP echo request, id 7, seq 48850, length 40
这是 em2 [192.168.33.2]
root@gtway-sr-s:~# tcpdump -i em2
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em2, link-type EN10MB (Ethernet), capture size 65535 bytes
15:15:15.460870 ARP, Request who-has 192.168.33.2 tell 192.168.33.1, length 28
15:15:15.461025 ARP, Reply 192.168.33.2 is-at e4:1f:13:bb:0f:f2 (oui Unknown), length 46
15:15:15.464351 IP 192.168.33.1 > 192.168.33.2: ICMP echo request, id 7, seq 49287, length 40
15:15:15.464544 IP 192.168.33.2 > 192.168.33.1: ICMP echo reply, id 7, seq 49287, length 40
15:15:16.187506 IP 192.168.33.2.60143 > 229.111.112.12.3071: UDP, length 4
15:15:20.448006 IP 192.168.33.1 > 192.168.33.2: ICMP echo request, id 7, seq 49296, length 40
15:15:20.448207 IP 192.168.33.2 > 192.168.33.1: ICMP echo reply, id 7, seq 49296, length 40
15:15:21.491924 IP 192.168.33.2.60143 > 229.111.112.12.3071: UDP, length 4
15:15:25.450927 IP 192.168.33.1 > 192.168.33.2: ICMP echo request, id 7, seq 49304, length 40
15:15:25.451132 IP 192.168.33.2 > 192.168.33.1: ICMP echo reply, id 7, seq 49304, length 40
15:15:26.823644 IP 192.168.33.2.60143 > 229.111.112.12.3071: UDP, length 4
15:15:30.459822 IP 192.168.33.1 > 192.168.33.2: ICMP echo request, id 7, seq 49315, length 40
15:15:30.460016 IP 192.168.33.2 > 192.168.33.1: ICMP echo reply, id 7, seq 49315, length 40
15:15:32.148672 IP 192.168.33.2.60143 > 229.111.112.12.3071: UDP, length 4
15:15:35.143425 ARP, Request who-has 192.168.33.1 (b0:83:fe:e3:2e:1a (oui Unknown)) tell 192.168.33.2, length 46
15:15:35.143431 ARP, Reply 192.168.33.1 is-at b0:83:fe:e3:2e:1a (oui Unknown), length 28
15:15:35.453679 IP 192.168.33.1 > 192.168.33.2: ICMP echo request, id 7, seq 49324, length 40
15:15:35.453861 IP 192.168.33.2 > 192.168.33.1: ICMP echo reply, id 7, seq 49324, length 40
15:15:37.485259 IP 192.168.33.2.60143 > 229.111.112.12.3071: UDP, length 4
15:15:40.455035 IP 192.168.33.1 > 192.168.33.2: ICMP echo request, id 7, seq 49333, length 40
15:15:40.455220 IP 192.168.33.2 > 192.168.33.1: ICMP echo reply, id 7, seq 49333, length 40
15:15:40.468865 ARP, Request who-has 192.168.33.2 tell 192.168.33.1, length 28
15:15:40.469000 ARP, Reply 192.168.33.2 is-at e4:1f:13:bb:0f:f2 (oui Unknown), length 46
15:15:42.827137 IP 192.168.33.2.60143 > 229.111.112.12.3071: UDP, length 4
15:15:45.461731 IP 192.168.33.1 > 192.168.33.2: ICMP echo request, id 7, seq 49343, length 40
15:15:45.461919 IP 192.168.33.2 > 192.168.33.1: ICMP echo reply, id 7, seq 49343, length 40
答案1
修改服务器配置文件以包含如下行:
push "route 192.168.73.0 255.255.255.0"
其中 192.168.73.0/24 是服务器后面的 LAN。请将其替换为您使用的任何内容。双引号必须保留下来,不要丢弃。
注意:
如果服务器后面的 LAN 和客户端所属的 LAN 在一定程度上重叠,则上述操作将失败,尤其是如果它们使用同一子网:在上面的例子中,如果客户端 LAN 和服务器 LAN 都是 192.168.73.0/255,则失败。这是一个问题,因为大多数自动设置的 LAN 都是 192.168.1.0/24 或 192.168.0.0/24,因此发生冲突的可能性很大。
这就是我将家里的 LAN 设置为 192.168.73.0/24 的原因。将 LAN 切换到不常见的子网是解决此类冲突的唯一方法。
编辑:
回复您的评论:
冲突不是发生在服务器后面的 LAN 和分配给 openvpn 客户端的 IP 号码之间,而是发生在两个 LAN 之间:你的客户端必须在其以太网/wifi 接口上有一个 IP 号码,必须不会与远程 LAN 冲突。忘记 openvpn 客户端的子网。
配置完上述内容后,还有一件事需要检查,那就是服务器是否可以将数据包从虚拟接口(我敢打赌,就
tun0
你的情况而言,是的,不是tap0
,对吧)传输到服务器的正常接口(我敢打赌,是 eth0,而不是 br0)。这可能由于两个原因而发生:a. 您未允许 IPv4 转发。作为 sudo,
echo 1 /proc/sys/net/ipv4/ip_forward
将会处理此事。
b. 您有一个阻止数据包转发的防火墙。
sudo iptables -F
将清除您的防火墙规则。
最后,您应该记得使用 MASQUERADE,如下所示:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 192.168.33.0/24 -j MASQUERADE