올바른 OpenVPN 연결 끊기: 포그라운드, systemd, NM
터널을 끊는 명령은 누가 연결을 시작했는지에 따라 달라집니다. 신호를 보내기 전에 포그라운드, systemd, NetworkManager, OpenVPN 3 소유자를 비교하십시오.
터미널 창을 닫는 것은 터널을 닫는 것과 같지 않고, 프로세스를 죽이는 것은 서비스를 중지하는 것과 같지 않습니다. Linux에서 실제로 연결을 끊는 명령은 어떤 구성 요소가 연결을 시작해 그 수명 주기를 소유하는지에 달려 있습니다. 아래 비교는 가장 자주 마주칠 네 가지 구성과 각각에 필요한 식별자를 다룹니다.
포그라운드 및 데몬화된 클라이언트
터미널에서 직접 시작한 클라이언트는 그 터미널에 속합니다. Ctrl+C가 인터럽트를 전달하고, 클라이언트가 인터페이스를 정리하며 터널이 끝납니다. 다른 무엇에도 알릴 필요가 없습니다.
셸 래퍼를 통해 시작해 백그라운드에 남겨 둔 클라이언트는 특정 누구의 것도 아니며, 바로 이 경우에 사람들이 killall을 찾습니다. 먼저 프로세스를 찾고 명령줄에 의도한 프로필이 언급되는지 확인한 다음 정상 종료 신호를 보내십시오. 감독자 아래에서 죽인 감독 대상 프로세스는 그냥 다시 시작되므로, 신호를 고르는 것보다 소유자를 식별하는 것이 더 중요합니다. 다른 터널이 그룹을 공유하지 않는다고 확인한 뒤에만 프로세스 그룹에 신호를 보내십시오.
SIGUSR1은 연결 끊기가 아니라 클라이언트에 터널 재시작을 요청하는 신호입니다.
systemd 인스턴스
유닛이 연결을 소유할 때 중지할 객체는 유닛입니다. openvpn-client@office 같은 템플릿 인스턴스는 프로필 이름을 담고 있으며, 인스턴스 대신 템플릿 대상을 중지하면 호스트의 모든 클라이언트에 영향을 줄 수 있습니다.
systemctl list-units 'openvpn-client@*'
systemctl stop [email protected]
인스턴스가 어떤 프로필을 로드했는지 확실하지 않으면 유닛의 ExecStart를 읽으십시오.
활성화된 유닛은 다음 부팅에서 다시 돌아오지만, 이는 지금 중지하는 것과 별개의 결정입니다. 연결이 돌아오지 않아야 한다고 결정한 뒤에만 비활성화하고, 그 결정을 다음 관리자가 찾을 수 있는 곳에 기록하십시오.
NetworkManager 프로필
NetworkManager가 관리하는 프로필은 신호를 보낼 수 있는 프로세스가 아닙니다. 관리자가 수명 주기를 소유하며, 조작할 객체는 표시 이름이 아니라 UUID로 식별되는 활성 연결입니다. 활성 목록을 먼저 읽으면 예상하지 못한 이름으로 두 번째 터널이 실행 중인지도 알 수 있습니다.
nmcli connection show --active
nmcli connection down uuid actual-uuid
표시 이름은 중복되고 프로필 파일 이름은 식별자가 아니므로 목록에서 UUID를 복사하십시오. 연결이 곧바로 돌아오면 기본 연결의 secondaries 항목, dispatcher 스크립트, 또는 자동 연결 플래그가 그것을 활성화하고 있습니다. 관리자의 연결을 중지하는 것이 올바른 첫 단계이며, 재활성화가 다음 질문입니다. 재활성화를 멈추려고 프로필을 삭제하지 마십시오, 내일 필요할 수 있는 자격 증명도 함께 사라지기 때문입니다.
관리자의 명령 참조는 down 대상이 어떻게 선택되는지 문서화합니다.
OpenVPN 3 세션
OpenVPN 3 Linux는 터널마다 프로세스를 두는 대신 세션 모델을 사용합니다. 서비스가 아는 세션을 살펴본 뒤 하나의 세션 경로에 대해 조작합니다. 경로가 식별자이며 구성 이름과 바꿔 쓸 수 없습니다.
openvpn3 sessions-list
openvpn3 session-manage --path /net/openvpn/v3/sessions/... --disconnect
모든 세션을 끊는 것은 다른 동작이며 의도적으로 해야 합니다.
같은 호스트가 여러 사용자의 세션을 보유할 수 있으므로 조작 전에 목록을 만들고, 끝내려는 세션의 소유자를 확인하십시오.
나중에 확인할 것
이 중지 작업 뒤에 활성 연결 목록에 더 이상 터널이 없고, 인터페이스가 사라졌으며, 내부 주소에 대한 경로 조회가 더 이상 터널 장치를 선택하지 않는지 세 가지를 확인하십시오. 그다음 다음 부팅 시의 처리를 결정하십시오.
ip -brief address
ip route get 10.8.0.1
인터페이스를 직접 제거해도 소유자는 중지되지 않으며, 정리가 절반만 된 채로 남습니다.
지금 끊기, 다음 자동 시작 막기, 그 뒤 비VPN 트래픽 허용하기는 세 가지 별개의 선택입니다. 각각을 명시적으로 하십시오.