SSH로 OpenVPN을 시작하면 그 머신의 실행 컨텍스트 안에서 원격 머신 위에서 돌아갑니다. 이는 원격 버튼 누르기가 아니라 원격 네트워크의 변경입니다. 합리적인 두 방식은 감독이 있는 포그라운드 세션과 직접 소유한 서비스이며, 준비 과정과 자격 증명, 실패 시 동작이 서로 다릅니다.

두 가지 방식, 하나의 프로필

두 방식 모두 같은 프로필을 쓰고 둘 다 호스트의 라우팅을 바꿉니다. 다른 점은 시작할 때 누가 함께 있는지, 그리고 세션이 끝난 뒤에 무슨 일이 일어나는지입니다.

ModeUseful forWhat it needs
Supervised foreground sessionA connection with a human watching and able to typeA usable terminal, a reviewed profile and recovery access
Managed serviceAn unattended lifecycle that starts without a loginOwned configuration, supported credential delivery and restart policy

포그라운드 방식은 사람이 지켜보는 감독 연결을 위한 것입니다. 서비스 방식은 아무도 로그인하지 않은 채 올라와야 하는 연결을 위한 것입니다. 둘을 섞어 포그라운드 프로세스를 계속 돌리면서 같은 프로필로 서비스까지 켜는 것이 여기서 가장 흔한 자초한 고장입니다.

포그라운드 세션이 실제로 무엇인가

포그라운드 OpenVPN 프로세스는 터널이 살아 있는 동안 계속 돌아가야 합니다. Initialization Sequence Completed는 초기화가 끝났다는 뜻이지, 프롬프트가 돌아오기를 기다리라는 뜻이 아닙니다. 데스크톱 GUI는 그 오래 걸리는 작업을 창 뒤에 숨기며, 바로 그래서 사람들은 SSH 명령도 같은 방식으로 동작하리라 기대합니다. 그렇게 동작하지 않습니다.

애플리케이션의 접근 권한은 따로 확인하십시오. 점유된 터미널과 로그 한 줄은 성공도 실패도 증명하지 않습니다.

무인 서비스에 필요한 것

서비스는 자체 계정과 작업 디렉터리, 파일 시스템 제한을 가지고 시작하며, 이 모두가 여러분의 셸과 다릅니다. 우연히 서 있던 위치에 기대지 말고 명시적인 경로와 적절한 소유권을 쓰십시오. 유닛에 정말 원하는 재시작 정책을 주십시오, 백오프 없는 연결 루프가 로그를 채우고 상대를 짜증 나게 하니까요. 그다음 다음 로그인이 아니라 재부팅 후에 올라오는지 확인하십시오.

대화형 MFA는 설계상 무인 상황을 깨뜨립니다. 프로필이 사람이 입력하는 코드를 요구한다면 그것은 무인 서비스가 아니며, 저장된 일회용 코드는 자격 증명 설계가 아닙니다. 부팅할 때 발견하지 말고 의도적으로 결정하십시오.

자격 증명은 네 가지 서로 다른 입력

OpenVPN의 매뉴얼은 콘솔 입력, 자격 증명 파일, 개인 키 암호 문구, 관리 인터페이스가 주도하는 상호작용을 구분합니다. 사용자 이름과 비밀번호 쌍은 하나이고, 암호화된 키의 암호 문구는 또 다른 하나입니다. 요청에 따라 자격 증명을 제공하는 관리 인터페이스는 세 번째입니다. 한 번 우연히 통했다고 해서 모든 것을 한 파일에 이어 붙이지 말고, 인증 설계에 맞는 메커니즘을 고르십시오.

신원이나 사적 자료를 담은 프로필과 로그를 보호하십시오. 서비스 계정이 그것을 읽고, 올바른 그룹 구성원 자격을 가진 사람도 읽습니다.

하나의 소유자, 그리고 되돌아올 길

넓은 터널 경로를 켜기 전에 SSH 관리 경로를 보존하십시오. 끝점이 죽는 전체 터널 구성은 머신을 접근 불가로 남길 수 있고, 그러면 수리는 준비하지 않은 콘솔을 요구합니다. 승인된 대역 외 콘솔이나 의도적인 관리 복귀 정책이 보험입니다.

일상 운영을 위한 구성 소유자를 하나로 정하십시오. 자동 서비스와 포그라운드 프로세스가 같은 인터페이스, 경로, 리졸버 상태를 두고 경쟁하면 공급자 문제처럼 보이는 고장이 생깁니다. 감독 실행은 정상적인 인터럽트로 멈추고, 관리형 실행은 관리자를 통해 멈추되, openvpn이라는 이름의 모든 프로세스를 죽이지 마십시오.

기록해 둘 구분은 단순한데, 감독 실행은 여러분의 세션에 의존해도 되지만 무인 서비스는 그래서는 안 됩니다.

관련 글