![为什么我的 OpenVPN 服务器会记录“MULTI:来自客户端的错误源地址”?](https://linux22.com/image/757922/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%20OpenVPN%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BC%9A%E8%AE%B0%E5%BD%95%E2%80%9CMULTI%EF%BC%9A%E6%9D%A5%E8%87%AA%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%9A%84%E9%94%99%E8%AF%AF%E6%BA%90%E5%9C%B0%E5%9D%80%E2%80%9D%EF%BC%9F.png)
我有一个 OpenVPN 服务器,它有两种“类型”的客户端:
- 具有 DHCP 分配的地址。这些设备能够 ping 服务器,没有任何问题。
- 通过客户端特定文件使用静态分配的地址。这些只能在服务器(重新)启动后 ping 服务器几秒钟。
我的服务器有 ip 10.10.0.1
,客户端有静态 ip。10.10.0.20
具有动态地址的客户端的 ip 在范围内10.10.1.2 - 10.10.255.254
当我检查服务器日志时,我看到MULTI: bad source address from client [10.10.0.20], packet dropped
一些谷歌搜索告诉我这与服务器端的路由有关,但我找不到问题所在。我也不明白为什么在服务器(重新)启动后,ping 服务器(或反过来)会在短时间内起作用
服务器配置:
port 3194
proto udp
dev tun
mode server
topology subnet
ca server_cert/ca.crt
cert server_cert/ovpn-server.crt
key server_cert/ovpn-server.key # This file should be kept secret
dh server_cert/dh.pem
tls-server
cipher AES-256-CBC
ifconfig 10.10.0.1 255.255.0.0
ifconfig-pool 10.10.1.2 10.10.255.254 255.255.0.0
;route 10.10.0.0 255.255.0.0
;push "route-gateway 10.10.0.1 255.255.0.0"
push "route 10.10.0.0 255.255.0.0"
ifconfig-pool-persist ipp.txt
client-config-dir ccd
client-to-client
duplicate-cn
keepalive 10 120
persist-key
persist-tun
status openvpn-status.log
log-append /var/log/openvpn.log
verb 4
explicit-exit-notify 1
服务器端客户端特定配置(ccd/device_y):
ifconfig-push 10.10.0.20 255.255.0.0
iroute 10.10.0.20 255.255.0.0 # I also tried without this line!
客户端配置:
root@ngin-web01:/home/xxxx# cat /etc/openvpn/client.conf
client
dev tun
proto udp
port 3194
remote vpn.domain.de 3194
#resolv-retry infinite
nobind
#persist-key
#persist-tun
# Certificates
ca keys/ca.crt
cert /etc/openvpn/keys/ngin-web01.crt
key /etc/openvpn/keys/ngin-web01.key
# Cryptographic cipher
cipher AES-256-CBC
# Loglevel
log-append /var/log/openvpn.log
verb 6
客户端日志:
...
...
Thu Sep 24 12:49:51 2020 us=673375 UDP WRITE [108] to [AF_INET]195.14.252.254:3194: P_DATA_V2 kid=0 DATA len=107
Thu Sep 24 12:49:52 2020 us=35844 UDP READ [40] from [AF_INET]195.14.252.254:3194: P_DATA_V2 kid=0 DATA len=39
Thu Sep 24 12:49:52 2020 us=697265 TUN READ [84]
Thu Sep 24 12:49:52 2020 us=697488 UDP WRITE [108] to [AF_INET]195.14.252.254:3194: P_DATA_V2 kid=0 DATA len=107
Thu Sep 24 12:49:53 2020 us=721179 TUN READ [84]
Thu Sep 24 12:49:53 2020 us=721379 UDP WRITE [108] to [AF_INET]195.14.252.254:3194: P_DATA_V2 kid=0 DATA len=107
Thu Sep 24 12:49:54 2020 us=745211 TUN READ [84]
Thu Sep 24 12:49:54 2020 us=745412 UDP WRITE [108] to [AF_INET]195.14.252.254:3194: P_DATA_V2 kid=0 DATA len=107
Thu Sep 24 12:49:55 2020 us=769216 TUN READ [84]
...
...
服务器日志:
Thu Sep 24 12:49:51 2020 us=674779 axc-ngin-web01/10.128.12.20:52693 MULTI: bad source address from client [10.10.0.20], packet dropped
Thu Sep 24 12:49:52 2020 us=699030 axc-ngin-web01/10.128.12.20:52693 MULTI: bad source address from client [10.10.0.20], packet dropped
Thu Sep 24 12:49:53 2020 us=723591 axc-ngin-web01/10.128.12.20:52693 MULTI: bad source address from client [10.10.0.20], packet dropped
Thu Sep 24 12:49:54 2020 us=746800 axc-ngin-web01/10.128.12.20:52693 MULTI: bad source address from client [10.10.0.20], packet dropped
更新
我也在服务器日志中注意到了这一点,这让我认为它“了解到”该设备ngin-web01
具有其真实 IP 10.128.12.21
。这是否与我遇到的问题有关?
Fri Sep 25 09:59:20 2020 us=631531 10.128.12.21:36203 [ngin-web01] Peer Connection Initiated with [AF_INET]10.128.12.21:36203
Fri Sep 25 09:59:20 2020 us=631861 ngin-web01/10.128.12.21:36203 MULTI: Learn: 10.10.0.20 -> ngin-web01/10.128.12.21:36203
Fri Sep 25 09:59:20 2020 us=631898 web01/10.128.12.21:36203 MULTI: primary virtual IP for ngin-web01/10.128.12.21:36203: 10.10.0.20
答案1
我解决了这个问题。由于人为错误,证书(静态客户端的证书)被分发到了 2 台服务器上。因此,只要第二台(错误的)服务器仍在连接,流量就会被路由到正确的服务器。当第二台服务器连接时,问题就出现了。