대화형 로그인 후 OpenConnect를 백그라운드로 전환하는 방법
로그인을 포그라운드에서 끝낸 뒤 터널을 클라이언트 자체의 백그라운드 모드로 넘깁니다. 찾기 쉽고 멈추기 쉬운 상태를 유지하는 점검 항목입니다.
MFA 프롬프트를 마치면 터널이 올라오고, 터미널을 닫으면 연결도 함께 끊깁니다. 이는 인증이 아니라 감독의 문제이며 OpenConnect에는 이를 해결하는 스위치가 이미 있습니다. 상호작용 부분이 정말 끝난 뒤, 시작이 끝났을 때 클라이언트가 백그라운드로 분기하게 하는 것이 해법입니다. 아래는 점검 순서입니다. 순서대로 진행하고 자신의 게이트웨이에 맞지 않는 첫 항목에서 멈추십시오.
로그인 시 게이트웨이가 요구하는 것을 확인하십시오
명령을 입력하기 전에 배포가 강제하는 자격 증명 경로를 적어 두십시오. 인증서만, 비밀번호와 토큰, SAML 공급자를 통한 브라우저 왕복은 각각 다르게 동작하며 백그라운드 모드는 어느 것도 건너뛸 수 없습니다. 이 옵션은 시작 후에 일어나는 일을 바꿀 뿐, 시작 중에는 바꾸지 않습니다.
유혹적인 우회는 프롬프트를 자동화하는 것입니다. 비밀번호 프롬프트를 인식하면 고정 응답을 입력하는 래퍼는 게이트웨이가 일회용 코드를 요구하는 순간 깨지고, 다른 계정이 읽을 수 있는 파일에 자격 증명을 남깁니다. 사람이 세션을 승인해야 한다면 사람을 과정에 남겨 두십시오.
첫 세션을 포그라운드에서 실행하고 출력을 읽으십시오
한 번 정상적으로 연결해 전체 핸드셰이크를 출력하게 하십시오. 사용 프로토콜, 인증서나 토큰 경로, 서버가 할당하는 터널 주소, 연결 수락 전의 모든 경고를 기록하십시오. 그 기록이 기준선이며 나중에 클라이언트 문제와 게이트웨이 변경을 저렴하게 구분하는 유일한 방법입니다. 터미널 버퍼 밖에 저장하십시오.
그다음 같은 호출에 백그라운드 모드와 PID 파일을 더해 반복하십시오. 예는 openconnect --background --pid-file /run/openconnect.pid vpn.example.net이며, 게이트웨이가 요구하는 프로토콜과 인증 옵션은 같은 줄에 두십시오. OpenConnect 설명서는 이 옵션을 시작 완료 후 백그라운드에서 계속하는 것으로 설명하며, 그래서 상호작용 단계를 먼저 끝내야 합니다.
실행 중인 프로세스를 찾기 쉽고 멈추기 쉽게 만드십시오
PID 파일은 살아 있는 프로세스와 일치하는 동안만 증거입니다. 서비스 계정이 소유한 디렉터리에 두고, 신호를 보내기 전에 기록된 번호를 프로세스 표와 비교하십시오. 재부팅과 충돌은 파일을 남기며, 오래된 파일 때문에 중지 스크립트가 터널이 살아 있는데도 성공을 보고하는 일이 흔합니다. 점검을 중지 절차의 일부로 보십시오. 선택 단계가 아닙니다.
검증된 PID에 신호를 보낸 뒤 종료 상태를 믿는 대신 터널 인터페이스가 실제로 사라졌는지 확인하십시오. 인터페이스 구성에 높은 권한이 필요하면 신호는 보낼 권한이 있는 계정에서 나와야 합니다.
백그라운드 모드를 슈퍼바이저 아래에 겹치지 마십시오
systemd 같은 슈퍼바이저는 자기가 띄운 프로세스를 소유한다고 기대하므로 분기하는 클라이언트는 혼란을 줍니다. 슈퍼바이저는 실행기가 끝나는 것을 보지만 실제 연결은 계속 살아 있으므로 재시작 로직, 상태 보고, 중지 시간 제한은 더 이상 사실이 아닌 것을 설명합니다. 유닛은 지원되는 포그라운드 구성으로 작성하고 데몬 작업은 슈퍼바이저에 맡기십시오.
--background은 사람이 시작하고 떠나는 세션에 남겨 두십시오. 누군가 로그인하기 전부터 존재하는 터널이 필요하다면 빠진 것은 승인된 비대화형 ID와 갱신 계획이며, 명령줄 플래그로는 둘 다 얻을 수 없습니다. 부팅 스크립트에 플래그를 더하면 첫 자격 증명 만료에서 조용히 실패하는 터널이 됩니다.
세션 쿠키를 자격 증명으로 취급하십시오
OpenConnect는 --authenticate를 통한 별도 인증 단계를 문서화하며, 그 결과물은 --cookie-on-stdin로 되돌릴 수 있습니다. 이 쌍은 통합 작업용이며 만들어 내는 것은 그것을 만든 비밀번호만큼 민감합니다.
값을 셸 기록, 로그, 여는 모든 티켓 밖에 두십시오. 인계 스크립트는 쿠키와 함께 클라이언트가 받은 검증된 엔드포인트 정보도 보존해야 합니다. 잃으면 나중 실행이 인증한 적 없는 호스트에 연결될 수 있으며, 이는 단순히 실패하는 연결보다 나쁩니다.
터미널을 닫기 전에 목록을 확인하십시오
네 가지가 참이어야 합니다. 대화형 로그인이 포그라운드에서 끝났고, PID 파일이 검증한 프로세스를 가리키며, 슈퍼바이저 문제가 어느 쪽으로든 정리되었고, 쿠키에 평문 파일이 아닌 저장 계획이 있습니다. 넷이 모두 맞으면 터미널을 떠나도 안전하고 터널은 계속 실행됩니다.
하나가 실패하면 나머지를 건드리기 전에 그 항목을 고치십시오. 나머지 점검으로는 보상할 수 없습니다. 첫 실행의 포그라운드 기록도 보관하십시오. 다음에 터널이 경고 없이 끊길 때 그 기준선이 게이트웨이 측 변경과 클라이언트 측 변경을 구분합니다.