VPN客户端程序包未交付错误的源地址,数据包丢失

问题描述

我刚刚创建了一个VPN服务器,但是VPN客户端程序包 似乎路由不正确:

VPN-Server$ tcpdump icmp

20:12:07.585962 IP 10.0.0.10 > 93.184.216.34: ICMP echo request,id 7595,seq 16,length 64
20:12:08.609952 IP 10.0.0.10 > 93.184.216.34: ICMP echo request,seq 17,length 64

当VPN服务器执行ping操作时,它会回来 因此连接“服务器-> WAN”似乎还可以。

VPN-Server$ ping example.org

64 Bytes from example.org (93.184.216.34): icmp_seq=293 ttl=54 time=77.9 ms
64 Bytes from example.org (93.184.216.34): icmp_seq=294 ttl=54 time=79.7 ms

我通过使VPN客户端ping我的另一台服务器再次检查了这一点 并查看了另一台服务器上的tcpdump:

Other-Server$ tcpdump icmp

(silence)

我猜想VPN客户端发送数据包时,它就无法到达目的地。

首先,我查看了NAT表,但MASQUERADE看起来还不错:

VPN-Server$ iptables -nvL -t nat

Chain POSTROUTING (policy ACCEPT 357 packets,28699 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      ens18   10.0.0.0/24         0.0.0.0/0           

(no other rules)

现在我调查了服务器的路由...

VPN-Server$ ip r

default via 12.34.56.78 dev ens18 onlink 
10.0.0.0/30 via 10.0.0.2 dev tun0 
10.0.0.0/24 via 10.0.0.2 dev tun0 
10.0.0.2 dev tun0 proto kernel scope link src 10.0.0.1

(12.34.56.78实际上是正确的网关)

和客户...

VPN-Client$ ip r

default via 10.0.0.1 dev tun0 proto static metric 50 
default via 192.168.0.1 dev wlp3s0 proto dhcp metric 600 
10.0.0.1 dev tun0 proto kernel scope link src 10.0.0.10 metric 50 
10.0.0.1 via 10.0.0.1 dev tun0 proto static metric 50 
11.22.33.44 via 192.168.0.1 dev wlp3s0 proto static metric 600 
192.168.0.0/24 dev wlp3s0 proto kernel scope link src 192.168.0.13 metric 600 
192.168.0.1 dev wlp3s0 proto static scope link metric 600

是的,VPN服务器(此处显示为11.22.33.44)将路由推送到客户端。

openvpn.log文件显示一些有趣的行:

VPN-Server$ tail openvpn.log

Tue Aug 11 20:46:03 2020 us=933486 tst/13.37.42.69:34394 MULTI: bad source address from client [192.168.0.13],packet dropped
Tue Aug 11 20:46:03 2020 us=933524 tst/13.37.42.69:34394 MULTI: bad source address from client [192.168.0.13],packet dropped

对于这些行,openvpn建议告诉VPN服务器, 使用VPN客户端可以访问整个192.168.0.0/24网络 (https://openvpn.net/faq/multi-bad-source-address-from-client-packet-dropped-or-get-inst-by-virt-failed/)。 这可能意味着所有192.168.0.0/24请求将由某个VPN客户端提供服务。 如果是这样,那么其他VPN客户端呢?

在这一点上,我完全迷路了,希望能有所帮助 因为我完全需要在家工作。

如果有兴趣,我添加服务器配置:

VPN-Server$ cat /etc/openvpn/server.conf 

port 1194
proto tcp-server # yes,no UDP
dev tun

ca ca.crt
cert server.crt
key server.key
dh dh2048.pem

mode server
tls-server

ifconfig 10.0.0.1 10.0.0.2
ifconfig-pool 10.0.0.200 10.0.0.251
route 10.0.0.0 255.255.255.0
push "route 10.0.0.1"

ifconfig-pool-persist ipp.txt

client-config-dir ccd
route 10.0.0.0 255.255.255.252

push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 10.0.0.1"

tls-auth ta.key 0
key-direction 0

user nobody
group nogroup

persist-key
persist-tun

# Removed some config for logging,compression,cipher/auth/keepalive.
# There is nothing else configured.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...