여러 스크립트 경고는 일정 문제에 대한 불평처럼 들리므로, 당연한 해결책은 경고가 사라질 때까지 줄을 다시 정렬하는 것입니다. 그것은 일정 문제에 대한 불평이 아닙니다. 나중에 나온 --up 정의가 해당 단계에 이미 저장된 명령을 대체하며, 파서가 그렇게 알려 줍니다. 즉 두 스크립트 중 정확히 하나만 실행된 적이 있다는 뜻입니다. 다른 하나는 뒤에서 대기하는 것이 아니라 사라졌습니다.

그래서 이 경고는 치명적이지 않아도 주목할 가치가 있습니다. 경고가 예고하는 것은 조용히 일어나지 않게 된 DNS 업데이트나 경로 변경이기 때문입니다.

경고는 순서에 관한 것이 아닙니다

OpenVPN은 up 단계에 사용자 스크립트 명령을 하나만 저장합니다. 파서가 프로필, 포함된 파일 또는 명령줄에서 다른 정의를 만나면 이미 보관하던 것을 대체하고 경고를 냅니다. 아무것도 이어 붙지 않고, 아무것도 두 번 실행되지 않으며, 순서에 관한 질문도 존재하지 않습니다. 살아남는 명령은 파서가 마지막으로 본 것이므로, 줄을 옮기면 승자가 바뀌고 다른 스크립트는 죽은 채로 남을 수 있습니다.

같은 패턴이 다른 스크립트 단계에도 적용됩니다. 각각 명령 하나입니다. 두 작업이 모두 일어나야 한다면 목록처럼 보이는 두 지시가 아니라 단일 진입점이 필요합니다.

실제 실행에서 두 정의를 모두 찾으세요

편집한 프로필이 아니라 데몬이 실제로 받은 것에서 시작하세요. ps -ef와 유닛의 ExecStart는 명령줄을 보여 주며, 여기에는 컨테이너 진입점이나 래퍼에서 --up가 추가되었을 수 있습니다. 배포판의 init 파일도 같은 일을 할 수 있습니다. systemctl cat openvpn-server@server는 서비스 자체가 무엇을 더하는지 보여 주고, 구성 디렉터리에 대한 재귀 grep은 파일 수준 정의를 찾습니다. 중복은 보통 서로 다른 계층에서 오며, 파일 하나를 편집해도 아무것도 바뀌지 않는 이유가 바로 그것입니다.

스크립트를 다른 디렉터리로 복사하거나 이름을 바꾸는 것도 지시를 없애지 않습니다. 파서는 파일이 아니라 정의를 셉니다.

하나의 hook이 작업을 맡게 하세요

지속적인 해결책은 두 동작을 의도한 순서로 실행하는 단일 디스패처입니다. set -eu이 있는 짧은 shell 스크립트가 필요한 통합을 호출한 다음 로컬 동작을 호출하고, 인수 경계가 유지되도록 "$@"을 전달하면 동작이 검증 가능한 한곳에 머뭅니다. 인수를 전달하는 것은 인수를 보존할 뿐, 두 도우미가 같은 인터페이스를 기대한다는 것을 증명하지 않으므로 각자의 계약을 읽으세요. 실패 시 무엇을 해야 하는지, 부분 변경을 되돌려야 하는지 결정하세요.

시작 프로그램이 지원되는 확장 hook을 제공한다면 직접 만든 연결보다 그것을 선호하세요. 컨테이너 이미지나 공급업체 패키지에는 추가 작업을 위한 문서화된 위치가 있는 경우가 많고, 그것을 사용하면 업그레이드가 디스패처를 덮어쓰지 않습니다.

정리는 해당 down 단계에 속합니다. DNS를 다시 쓰거나 경로를 추가하는 up 동작에는 문서화된 되돌리기가 필요합니다. 그리고 시작만 처리하는 디스패처는 절반의 설계입니다.

침묵이 아니라 통합을 확인하세요

중복 경고를 없애는 것은 쉬운 부분이고, 통합은 여전히 작동해야 합니다. 연결 후 resolvectl status로 또는 /etc/resolv.conf를 읽어 리졸버 상태를 확인하고, ip route로 경로를 확인하세요. 그다음 연결을 끊고 다시 연결하세요. 서둘러 연결한 hook은 이전 세션의 무언가를 남기기 쉽습니다. journalctl -u openvpn-server@server -b는 디스패처가 실행되었는지, 무엇을 출력했는지 보여 줍니다.

hook의 권한은 있어야 할 곳에 두세요. script-security를 높이거나 데몬을 더 많은 권한으로 실행하는 것은 대체된 hook에 대한 해결책이 아닙니다. 앞으로의 모든 스크립트, 공격자가 이름을 붙이는 스크립트까지 무엇을 할 수 있는지를 넓힐 뿐입니다.

수정이 진짜라는 표시는 로그의 침묵이 아닙니다. 두 번의 재연결 후에도 DNS 응답, 경로 항목, 정리가 모두 제대로 작동하는 것입니다.

관련 글