OpenVPN 클라이언트 다시 연결: 세 가지 제어, 세 가지 범위
세션 하나를 끊는 것, 모든 UDP 클라이언트에 알리는 것, 데몬을 다시 시작하는 것은 서로 다른 작업입니다. 먼저 범위를 정하고 새 세션을 확인하십시오.
누군가 VPN 클라이언트를 다시 연결해 달라고 요청하는데, 그 요청은 세 가지 다른 뜻일 수 있습니다. 인증된 세션 하나를 끊는 것, UDP 서버가 사라진다고 모든 클라이언트에 알리는 것, 또는 데몬 자체를 다시 시작하는 것일 수 있습니다. 각기 영향 범위가 다르고, 잘못 선택하면 한 사용자를 위한 수정이 서비스 중단이 됩니다. 범위가 곧 결정이며 명령은 그에 따릅니다.
어떤 제어를 쓸지 묻기 전에 누가 영향을 받아야 하는지 물으십시오.
인스턴스 하나: 관리 인터페이스
구성된 관리 인터페이스는 연결된 인스턴스를 나열하고 그중 정확히 하나를 끊을 수 있습니다. 각 세션은 클라이언트 식별자를 가지며, client-kill CID 공통 이름이 아니라 그 식별자를 대상으로 합니다. 오래된 로그에서 복사한 값은 더 이상 존재하지 않는 세션을 가리키므로 현재 상태 출력에서 살아 있는 식별자를 읽으십시오. 인스턴스를 끊으면 그 연결만 끝나고 다른 것은 끝나지 않습니다.
새 연결을 보장하지는 않습니다. 클라이언트가 돌아오는지는 재시도 설정, 남은 원격 항목, 인증 요구 사항, 그리고 감독 애플리케이션이 아직 실행 중인지에 달려 있습니다. 돌아온 클라이언트는 새 식별자를 받으며, 그래서 식별자를 비교하는 것이 오래된 것과 새로운 것을 구분하는 유일하게 신뢰할 수 있는 방법입니다.
UDP 종료 알림은 클라이언트별 명령이 아닙니다
explicit-exit-notify 종료와 재시작 이벤트에 관한 구성 지시문입니다. UDP 클라이언트에서는 세션이 끝난다고 상대에게 알리며, 숫자 인수는 알림이 몇 번 반복되는지를 제어합니다. 서버가 UDP로 동작할 때는 연결된 클라이언트에 재시작 제어 메시지를 보내며, 문서화된 값은 같은 서버로의 재연결과 다른 원격 항목으로의 이동을 구분합니다. 넓은 대상이 있는 수명 주기 신호입니다.
그 안에는 임의의 시점에 임의의 클라이언트를 선택하는 것이 없습니다. 재연결 버튼으로 다루면 연결된 모든 세션에 한 번에 도달합니다.
신호는 세션이 아니라 프로세스에 작용합니다
SIGUSR1 설정을 다시 읽지 않고 연결을 다시 시작하도록 실행 중인 프로세스에 요청하며, 영속성 옵션이 그 재시작에서 무엇이 살아남는지를 결정합니다. SIGHUP 더 나아가 설정 파일을 다시 읽고 리소스를 다시 엽니다. SIGTERM 그리고 SIGINT 질서 있는 종료를 요청합니다. 이는 프로세스 수준 작업이며, 다중 클라이언트 서버에서는 프로세스가 담당하는 모든 세션에 영향을 주고 티켓에 적힌 세션만이 아닙니다.
프로세스가 서비스 관리자 아래에서 동작할 때는 프로세스 목록에서 찾은 PID에 신호를 보내지 말고 관리자 자체의 제어를 사용하십시오. 재시작과 다시 로드는 같은 데몬에 다른 일을 하므로, 관리자가 어떤 신호를 보내는지 유닛을 읽어 확인하십시오.
제어를 고르기 전에 범위를 정하십시오
세 가지 질문으로 정해집니다. 누가 영향을 받아야 하는가: 사용자 한 명, 한 서버의 모든 클라이언트, 아니면 데몬과 그것이 담당하는 모든 것. 무엇이 살아남아야 하는가: 구성, 터널 상태, 아니면 둘 다 아님. 누가 권한을 가지는가: 관리 통합, 서비스 소유자, 아니면 종료 알림을 제어하는 네트워크 운영자. 이에 답하면 제어 하나만 맞습니다.
재연결 버튼을 얻으려고 인증 없는 제어 리스너를 추가하면 포트에 닿을 수 있는 누구에게나 그 버튼보다 훨씬 많은 것을 넘겨줍니다.
연결 끊김이 아니라 새 세션을 확인하십시오
연결 끊김 이벤트는 이전 세션이 끝났음을 증명합니다. 새 세션이 인증되고 주소를 받고 경로를 설치하고 사용자가 필요로 한 리소스에 도달하는지에 대해서는 아무것도 말하지 않습니다. 새 식별자를 확인하고, 다음으로 터널 상태, 다음으로 실제 리소스 하나를 확인하십시오. 그 세 단계가 재연결과 작동하는 연결의 차이입니다.
변경 기록에 범위를 적으십시오. 클라이언트가 공유 서버의 마흔 명 중 한 명이었다면 '클라이언트를 다시 연결했다'는 설명이 아닙니다.