Linux
當伺服器防火牆不允許傳入的 OpenSSH 連接時,VPN 客戶端無法啟動與 VPN 伺服器的連接
原始問題
我已經設置了一個 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
如果源埠是
1194
而不是目標埠,則您添加的兩個 OpenVPN 規則允許流量。這可能會產生兩個後果:
- 即使客戶端將
1194
其用作源埠,在通過 NAT 時也可能會發生變化。所以客戶端將被拒絕訪問。- 如果有人
1194
用作源埠,他可以訪問您的所有UDP
服務。您可能希望在目標埠上添加規則:
ufw allow in on eth0 proto udp to any port 1194
至於為什麼防火牆允許 OpenVPN 訪問,當允許 OpenSSH 時,這是一個有趣的問題:您可以將 的輸出添加
iptables -nvL ufw-user-input
到問題中,或者檢查建立 OpenVPN 會話時增加了哪個規則計數器。