为什么我的 OpenVPN 服务器会记录“MULTI:来自客户端的错误源地址”?

为什么我的 OpenVPN 服务器会记录“MULTI:来自客户端的错误源地址”?

我有一个 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 台服务器上。因此,只要第二台(错误的)服务器仍在连接,流量就会被路由到正确的服务器。当第二台服务器连接时,问题就出现了。

相关内容