Openvpn

OpenVPN 連接每 2 分鐘重置一次

  • September 4, 2021

我有一個在 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 就不可能是安全的,無論它使用的軟體和最先進的加密技術多麼完美。

引用自:https://serverfault.com/questions/1076565