原始问题
我已经设置了一个 OpenVPN 服务器和一个 OpenVPN 客户端。
问题是客户端只能在服务器防火墙允许传入的 OpenSSH 连接时启动连接。
当客户端能够发起连接时,这些是服务器的防火墙规则。
$ ufw status verbose
To Action From
-- ------ ----
22/tcp (OpenSSH) ALLOW IN Anywhere // <---
Anywhere on eth0 ALLOW IN 1194/udp
Anywhere on tun0 ALLOW IN Anywhere
22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6) // <---
Anywhere (v6) on eth0 ALLOW IN 1194/udp (v6)
Anywhere (v6) on tun0 ALLOW IN Anywhere (v6)
Anywhere ALLOW OUT 1194/udp on eth0
Anywhere ALLOW OUT Anywhere on tun0
Anywhere (v6) ALLOW OUT 1194/udp (v6) on eth0
Anywhere (v6) ALLOW OUT Anywhere (v6) on tun0
我们ufw delete allow OpenSSH
在服务器上运行后,客户端无法发起 VPN 连接
这是当客户端无法启动连接时我们收到的日志输出。
$ sudo openvpn --config /etc/openvpn/client.conf
...
OpenVPN 2.4.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on May 14 2019
library versions: OpenSSL 1.1.1 11 Sep 2018, LZO 2.08
Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Control Channel MTU parms [ L:1621 D:1184 EF:66 EB:0 ET:0 EL:3 ]
Data Channel MTU parms [ L:1621 D:1450 EF:121 EB:406 ET:0 EL:3 ]
Local Options String (VER=V4): 'V4,dev-type tun,link-mtu 1557,tun-mtu 1500,proto UDPv4,keydir 1,cipher AES-256-CBC,auth SHA1,keysize 256,tls-auth,key-method 2,tls-client'
Expected Remote Options String (VER=V4): 'V4,dev-type tun,link-mtu 1557,tun-mtu 1500,proto UDPv4,keydir 0,cipher AES-256-CBC,auth SHA1,keysize 256,tls-auth,key-method 2,tls-server'
TCP/UDP: Preserving recently used remote address: [AF_INET]xxx.xxx.xxx.xxx:1194
Socket Buffers: R=[212992->212992] S=[212992->212992]
UDP link local: (not bound)
UDP link remote: [AF_INET]xxx.xxx.xxx.xxx:1194
如果 VPN 服务器不允许传入的 OpenSSH 连接,客户端如何启动 OpenVPN 连接?
编辑
这是我们的客户端配置:
ca ca.crt
cert vpn_client_01.crt
cipher AES-256-CBC
client
dev tun
key vpn_client_01.key
nobind
persist-key
persist-tun
proto udp
remote vpn.xxx.ca 1194
remote-cert-tls server
resolv-retry infinite
tls-auth ta.key 1
verb 4
(
keydir
键方向)值不匹配。在你的 OpenVPN 客户端配置中指定--key-direction 1
,你应该被整理出来。允许的值为 0 和 1。如果源端口是
1194
而不是目标端口,则您添加的两个 OpenVPN 规则允许流量。这可能会产生两个后果:1194
其用作源端口,在通过 NAT 时也可能会发生变化。所以客户端将被拒绝访问。1194
用作源端口,他可以访问您的所有UDP
服务。您可能希望在目标端口上添加规则:
至于为什么防火墙允许 OpenVPN 访问,当允许 OpenSSH 时,这是一个有趣的问题:您可以将 的输出添加
iptables -nvL ufw-user-input
到问题中,或者检查在建立 OpenVPN 会话时增加了哪个规则计数器。