VPN 서비스를 다시 시작하면 그것을 쓰는 모든 세션이 끝나므로, 창은 패키지 관리자가 아니라 대화를 중심으로 짜야 한다. 사용자는 민감한 작업을 마칠 충분한 사전 안내가 필요하고, 당신에게는 곧 멈출 터널에 의존하지 않는 돌아갈 길이 필요하다. 플레이북의 나머지는 모두 이 두 사실을 다루기 쉽게 만들기 위해 있다. 둘 중 하나만 건너뛰어도 일상적인 업데이트가 출구 없는 중단이 된다.

아래 순서는 의도적이며, 각 단계는 다음 단계가 필요로 하는 것을 만들고, 어느 단계든 시작되기 전에 변경을 끝낼 수 있다.

바꾸기 전에 이미 있는 서비스를 기록한다

기억하는 유닛이 아니라 설치된 유닛을 읽는데, systemctl cat [email protected] 은 유닛과 모든 drop-in을 출력하고 systemctl show [email protected] -p ExecStart -p User -p WorkingDirectory 은 실제로 무엇이 누구로서 도는지 보여 준다. 그 유닛이 지목한 바이너리에 물어보라(셸에서 실행한 openvpn --version 은 다른 빌드로 해석될 수 있다). 프로필 경로와 그것이 참조하는 모든 파일을 적는다.

수신 소켓도 살피면 ss -lunp | grep 1194 이 오늘 데몬이 어떤 주소와 프로토콜을 갖는지 알려 준다. 답이 프로필이 시사하는 것과 다르면 drop-in이나 환경 파일이 덮어쓰고 있고, 업그레이드는 그 놀라움을 물려받는다.

다른 사람도 쓸 수 있는 복구 세트를 꾸린다

복구 세트는 당신의 맥락 없이 동료가 03:00에 쓸 수 있어야 한다. 유효 설정과 참조된 모든 파일, PKI 소유자의 통제 아래 있는 신뢰 및 폐기 자료, 클라이언트별 할당과 훅, 오늘 설치된 정확한 패키지 버전을 포함한다. 파일 이름 하나를 복사한 것은 설정이 아니다. VPN 없이 당직 운영자가 닿을 수 있는 곳에 보관한다.

그 세트에도 접근 통제가 적용되는데, 개인 키나 백엔드 자격 증명이 들어 있기 때문이다. 패키지 버전이 바뀌었다고 CA를 다시 만들거나 신원을 다시 발급하지 않는다.

실제 클라이언트로 파일럿 리스너에서 연습한다

후보 릴리스는 같은 소켓의 운영 인스턴스 옆이 아니라, 자체 포트와 주소 계획을 가진 별도 리스너에서 돌린다. 사용자가 실제로 쓰는 클라이언트 엔진으로 접속하고, 까다로운 것도 포함한다. 주소 할당, 밀어 넣는 DNS, 중요한 애플리케이션 하나, 차단된 채로 남아야 할 경로 하나를 확인한다. 사용자 정의 훅은 서비스의 실제 권한과 파일 시스템 맥락에서 돌아야 한다(root 셸은 그것에 대해 아무것도 증명하지 못한다).

릴리스 노트는 새 기능만이 아니라 동작 변경을 위해 읽는다. 암호와 TLS의 기본값은 버전 사이에서 움직이고, 아직 파싱되는 프로필도 핸드셰이크에서 실패할 수 있다. 업그레이드에 프로필이나 인증서 변경이 필요하면 패키지 업데이트에 묶지 말고 별도 단계로 계획한다.

터널 밖의 경로에서 한 번만 전환한다

창은 서비스를 지나지 않는 콘솔이나 관리 네트워크에서 시작한다. 사용자에게 알렸고 두 번째 운영자가 되돌리는 법을 안다는 점을 확인한다. 준비한 변경을 소유자를 통해 적용하고, sudo systemctl restart [email protected] 로 다시 시작하며, journalctl -u openvpn-server@office -b -f 로 저널을 따라간다. 유닛 정의만 바뀌었다면 다시 읽는 것으로 충분하지만, 프로필이 바뀌었다면 프로세스를 다시 시작해야 한다.

모든 클라이언트가 다시 접속하고 일부 애플리케이션 세션은 이어지지 않으리라 예상한다. 그것을 견디지 못하는 워크로드와는 깔끔한 중단을 조율한다.

받아들이거나 되돌리고, 그다음 사용자에게 무엇이 바뀌었는지 알린다

받아들임이란 새 로그인과 실제 작업, 그리고 여전히 유효한 제한이다. 유닛이 살아 있고 상태 줄이 초록인 것은 프로세스 사실일 뿐이다. 창 안에서 기준을 못 채우면 준비한 방법으로 되돌린다(파일 하나를 복원하고 기대는 것이 아니며, 바뀐 바이너리나 서비스 정책은 설정 복원으로 되돌아가지 않는다). 창 동안에 한 폐기나 권한 변경은 되돌리기가 보안 작업을 취소하지 않도록 보존한다.

버전, 프로필 변경, 받아들임 결과를 다음 운영자를 위해 기록하고, 파일럿 리스너를 은퇴시키고, 지금 어느 프로필을 쓰라고 사용자에게 알린다. 그 기록 없이 끝나는 창은 다음 업데이트에서 다시 문제가 된다.

관련 글