原始问题

原始问题

原始问题

我已经设置了一个 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

答案1

您添加的两个 OpenVPN 规则允许流量,前提是源端口1194,不是目的端口。这可能产生两个后果:

  1. 即使客户端使用1194源端口,在通过 NAT 时,该端口也可能会发生变化。因此客户端将被拒绝访问。
  2. 如果有人使用1194作为源端口,他就可以访问您的所有UDP服务。

您可能想要在目标端口上添加规则:

ufw allow in on eth0 proto udp to any port 1194

至于为什么防火墙允许 OpenVPN 访问,当允许 OpenSSH 时,这是一个有趣的问题:您可以将输出添加到iptables -nvL ufw-user-input问题中,或者检查在建立 OpenVPN 会话时哪个规则计数器会增加。

答案2

(密钥方向)值keydir不匹配。请--key-direction 1在 OpenVPN 客户端配置中指定,然后您就会找到答案。允许的值为 0 和 1。

相关内容