Openvpn
OpenVPN 連接每 2 分鐘重置一次
我有一個在 AWS 的 Ubuntu 上執行的 OpenVPN 伺服器,並在 macOS 上使用 Tunnelblick 連接到它。我連接到其他 VPN 伺服器沒有問題,但這個伺服器似乎每 2 分鐘超時/重置一次。
我的 OVPN 配置文件:
client dev tun proto udp remote ............... 1194 resolv-retry infinite nobind user nobody group nogroup persist-key persist-tun remote-cert-tls server cipher AES-256-CBC verb 3 cipher AES-128-CBC auth SHA256 key-direction 1 <ca> -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- </ca> <cert> Certificate: Data: Version: 3 (0x2) ... -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- </cert> <key> -----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY----- </key> <tls-auth> # # 2048 bit OpenVPN static key # -----BEGIN OpenVPN Static key V1----- ... -----END OpenVPN Static key V1----- </tls-auth>
連接時,伺服器推送以下設置:
PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 8.8.8.8,route 172.16.0.0 255.255.240.0,route 172.16.16.0 255.255.240.0,route 172.16.128.0 255.255.240.0,route 172.16.144.0 255.255.240.0,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5,peer-id 1,cipher AES-256-GCM'
(特別注意
ping 10,ping-restart 120
)提升客戶端的日誌級別,看起來連接正在發送數據包:
2021-09-03 11:31:21.848620 UDP WRITE [62] to [AF_INET]...:1194: P_ACK_V1 kid=0 pid=[ #13 ] [ 6 ] 2021-09-03 11:31:21.848768 UDP WRITE [130] to [AF_INET]...:1194: P_DATA_V2 kid=0 DATA len=129 2021-09-03 11:31:21.848856 UDP WRITE [226] to [AF_INET]...:1194: P_DATA_V2 kid=0 DATA len=225
然而,連接總是在大約 2 分鐘後斷開。客戶端日誌狀態:
2021-09-03 11:40:26.121900 [cc-vpn] Inactivity timeout (--ping-restart), restarting 2021-09-03 11:40:26.122379 SIGUSR1[soft,ping-restart] received, process restarting 2021-09-03 11:40:26.122504 MANAGEMENT: >STATE:1630683626,RECONNECTING,ping-restart,,,,, 2021-09-03 11:40:26.448969 MANAGEMENT: CMD 'hold release'
除了重新啟動連接之外,伺服器日誌中沒有任何內容。
考慮到將設置推送到客戶端,2 分鐘超時是有道理的
ping-restart 120
,但我不清楚為什麼它認為它一直處於非活動狀態。我錯過了什麼?客戶端上是否有阻止 ping 正確發送到伺服器的設置?特別將 ping/ping-restart 添加到客戶端配置似乎沒有幫助(我認為它無論如何都會被伺服器 PUSH 覆蓋)。
我該如何調試它並找出為什麼連接沒有保持活動狀態?
這通常表明有多個客戶端在使用此密鑰/證書對:
- (1) 認證
- (2) 認證;伺服器看到相同的證書,所以它認為它只是被替換了連接,並且 (1) 將不再接收 keepalive ping
- (1) 錯過了一些 ping,決定連接斷開並重新連接,現在 (2) 不會收到 ping
- (2) 錯過一些 ping,決定連接斷開並重新連接,現在 (1) 不會收到 ping
您會看到發生了什麼,並且很清楚
ping-restart
這裡涉及如何設置不活動超時。為了避免這種情況發生,您必須小心管理您的 VPN CA。尤其:
- 跟踪您的密鑰的安裝位置以及誰負責安裝每個密鑰的設備。有辦法聯繫任何擁有有效 VPN 密鑰的人(例如記錄他們的電話號碼、電子郵件等,您可以設置 OpenSSL,以便在證書頒發期間要求提供該數據,並將該數據直接記錄到證書和 CA 索引中) .
- 切勿多次使用相同的密鑰/證書;永遠不要將密鑰/證書放入模板;如果您複製某些系統,請清除那裡的密鑰。每次部署系統時,必須始終生成密鑰並重新頒發證書。
- 如果一些使用者在他們有一個活動的時候要求(另一個)密鑰/證書,他們必須解釋原因。他們可能失去了舊數據,因為重新安裝了作業系統並且他們忘記了保存 VPN 配置;或者他們可能只需要在額外的電腦上安裝 VPN。管他呢。評估他們的解釋,您要麼在發布另一個密鑰之前先撤銷舊密鑰,要麼與另一個 CN 發布密鑰以避免衝突。
- 教育您的使用者始終通知您他們的密鑰/證書不再使用(它已失去或其頒發的原因已失去),以便您可以撤銷它。然後你必須撤銷它。
- 非常重要的是,教育使用者在懷疑密鑰/證書被盜時立即通知您,在這種情況下您必須立即撤銷它**。**
這些是稱為“網路安全”的過程的一部分。沒有一定的紀律,VPN 就不可能是安全的,無論它使用的軟體和最先進的加密技術多麼完美。