OpenVPN 연결이 2분마다 재설정됩니다.

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-restart를 추가하는 것은 도움이 되지 않는 것 같습니다(어쨌든 서버 PUSH에 의해 재정의될 것이라고 가정합니다).

이것을 어떻게 디버깅하고 연결이 유지되지 않는 이유를 알아낼 수 있습니까?

답변1

이는 종종 이 키/인증서 쌍을 사용하는 클라이언트가 두 명 이상 있다는 신호입니다.

  • (1) 인증하다
  • (2) 인증합니다. 서버는 동일한 인증서를 보고 연결이 교체되었다고 생각하고 (1) 더 이상 연결 유지 핑을 수신하지 않습니다.
  • (1) 일부 핑을 놓치고 연결이 끊어졌다고 판단하고 다시 연결하면 이제 (2) 핑을 수신하지 않습니다.
  • (2) 일부 핑을 놓치고 연결이 끊겼다고 판단한 후 다시 연결하면 이제 (1) 핑이 수신되지 않습니다.

무슨 일이 일어나고 있는지 알 수 있으며 여기에 설정된 비활성 시간 제한이 어떻게 ping-restart관련되어 있는지도 분명합니다.

이런 일이 발생하지 않도록 하려면 VPN CA를 주의 깊게 관리해야 합니다. 특히:

  • 키가 설치된 위치와 각 키가 설치된 장치의 책임자를 추적하세요. 활성 VPN 키가 있는 사람에게 연락할 수 있는 방법이 있습니다(예: 전화번호, 이메일 등 기록, OpenSSL을 설정하면 인증서 발급 중에 해당 데이터를 요청하고 해당 데이터를 인증서 및 CA 색인에 직접 기록할 수 있음). .
  • 동일한 키/인증서를 두 번 이상 사용하지 마십시오. 키/인증서를 절대로 넣지 마세요.템플릿; 일부 시스템을 복제하는 경우 거기에서 키를 지우십시오. 키는 시스템이 작동할 때마다 항상 새로 생성되고 인증되어야 합니다.배치됨.
  • 일부 사용자가 활성 키/인증서를 가지고 있는 동안 (다른) 키/인증서를 요청하는 경우 이유를 설명해야 합니다. OS를 재설치하고 VPN 구성을 저장하는 것을 잊어버렸기 때문에 오래된 데이터가 손실되었을 수 있습니다. 아니면 추가 컴퓨터에 VPN이 필요할 수도 있습니다. 또는 무엇이든. 설명을 평가하면 먼저취소다른 키를 발급하기 전에 이전 키를 발급하거나, 충돌을 피하기 위해 다른 CN과 함께 키를 발급하세요.
  • 키/인증서가 더 이상 사용되지 않음(유실되었거나 발급 이유가 유실됨)을 항상 알리도록 사용자에게 교육하여 이를 취소할 수 있습니다. 그런 다음 이를 취소해야 합니다.
  • 매우 중요합니다. 사용자에게 다음 사항을 교육하세요.급히키/인증서가 도난당한 것으로 의심되는 경우 이를 귀하에게 알리고, 이 경우 즉시 이를 취소해야 합니다.

이는 "네트워크 보안"이라는 프로세스의 일부입니다. VPN은 아무리 완벽한 소프트웨어와 최첨단 암호화 기술을 사용하더라도 특정 규율 없이는 안전할 수 없습니다.


OpenVPN이 왜 이 조건을 감지하지 못하고 이를 로그 파일에 보고하지 않는지 궁금한 사람이 있다면 아래 설명과 같이 너무 신뢰할 수 없고 오해의 소지가 있습니다. 로그에는 원시 사실만 포함되어야 하며, 잘 확립된 유일한 사실은 동일한 CN이 다른 위치에서 반복적으로 연결된다는 것입니다. 왜 이런 일이 발생했는지에 대한 어떠한 가정도 포함해서는 안 됩니다.

위에서 설명한 보안 절차를 따르면 문제가 발생하지 않습니다. 그런 일이 발생하면 절차를 위반했다는 의미일 뿐입니다. 이 경우 VPN의 보안을 보장하기 위해 가장 안전한 방법은 키가 손상되었다고 가정하고 인증서를 즉시 취소하는 것입니다. 아마도 VPN이 어떤 사람(그 사람의 키였음)에 대해서는 중단될 것입니다. 그러나 이는 다음의 자연스러운 결과일 것입니다.그들의확립된 절차를 따를 수 없음: 일부 컴퓨터에서 VPN을 사용하고 있지 않다는 사실을 알리지 못하고 이를 다른 컴퓨터에 복사했거나 인증서가 도난당했습니다. 해당 주제에 대한 재교육을 받은 후 새 인증서를 발급할 수 있습니다.

관련 정보