--errors-to-stderr 가 포함된 명령줄은 불평처럼 보이지만 불평이 아닙니다. 이 단어는 옵션 이름의 일부이며, 로그 파일의 이름이 파일 내용에 대해 아무것도 말해 주지 않는 것과 같습니다. 설정을 바꾸기 전에 실제로 무엇을 읽고 있는지 확인하세요.

결정에는 세 갈래가 있습니다: 그 줄이 실행 자체인 경우, 프로그램이 출력한 것인 경우, 또는 VPN이 시작되기 전에 래퍼가 되풀이한 텍스트인 경우입니다. 각 갈래는 볼 곳이 다르며, 그중 하나만 VPN 자체의 메시지입니다.

옵션 이름은 상태 메시지가 아닙니다

Community OpenVPN의 경우 --errors-to-stderr는 오류 출력을 표준 출력 대신 표준 오류로 보냅니다. 이것은 스트림 선택이며 심각도 필터가 아니고, 오류를 만들지 않습니다. 나중에 --log 또는 --log-append를 쓰면 같은 메시지를 파일로 돌릴 수 있으므로 플래그의 효과는 명령의 나머지 부분에 달려 있습니다. 상류의 로깅 참조 문서가 그 순서를 정합니다.

따라서 플래그의 존재는 오류가 어디로 갈지를 알려 줍니다. 오류가 발생했다는 것은 알려 주지 않습니다.

실행 줄인가 프로세스 출력인가

누가 그 텍스트를 출력했는지 묻는 것부터 시작하세요. 서비스 단위, 애플리케이션 번들, 셸 래퍼는 VPN 프로세스가 무언가를 쓰기 전에 전체 argv를 되풀이하는 경우가 많습니다. 조각만 본다면 그 되풀이는 상태 줄과 구별되지 않습니다.

그 줄이 래퍼에서 왔다면 VPN은 아직 실행되지 않았고 보고할 것이 없습니다. 출력에서 더 아래로 내려가 타임스탬프나 하위 시스템 이름이 있는 첫 메시지를 찾으세요.

그 줄이 VPN 프로세스에서 왔다면 그것은 여전히 호출일 뿐입니다. OpenVPN은 자기 명령줄을 오류로 출력하지 않으며, 중요한 메시지는 그 뒤에 이어집니다.

프로세스와 그 결과를 찾으세요

프로세스가 아직 실행 중인지 확인하세요. 살아서 다시 시도하는 클라이언트는 곧바로 종료된 클라이언트와 아주 다르게 보이며, 같은 명령줄이 둘 다 앞에 있습니다.

그다음 프로세스를 소유한 구성 요소를 통해 결과를 읽으세요. systemd에서는 단위의 저널이고, 데스크톱 앱에서는 앱 자체의 로그나 콘솔입니다. 종료 상태와 마지막 메시지가 옵션 이름이 암시할 뿐인 질문에 답합니다.

설정 구문 분석 오류, 없는 파일, 거부된 자격 증명, 피어 시간 초과는 서로 다른 네 가지 사건입니다. 모두 같은 스트림으로 도착합니다. 네 가지 다른 수정이 필요합니다. 프로필을 건드리기 전에 어느 것인지 판단하고, 도움을 요청할 때 정확한 메시지를 인용하세요.

플래그가 제자리를 얻는 때

플래그는 표준 출력이 데이터를 나르고 오류가 그것을 오염시켜서는 안 될 때, 또는 래퍼가 두 스트림을 따로 잡을 때 제자리를 얻습니다. 터미널의 포그라운드 세션에서는 두 스트림이 모두 눈앞에 도착합니다. 그 경우 구분은 당신이 하는 일을 거의 바꾸지 않습니다.

주변 스크립트가 분리에 의존한다면 그대로 두세요. 이름이 무섭게 보인다고 제거하면 메시지가 나타나는 위치가 바뀔 뿐 다른 것은 고쳐지지 않습니다.

바꾸지 말아야 할 것

이 옵션을 수리 단계로 다루지 마세요. 삭제해도 인증서, 경로, 인증 실패는 고쳐지지 않습니다.

호출에 --config stdin가 있으면 설정은 표준 입력을 통해 공급됩니다. 이것은 파일을 어떻게 제공하는지에 관한 별개의 결정입니다. 한 번에 하나씩 바꾸고, 두 번째를 바꾸기 전에 실제 메시지를 다시 읽으세요.

관련 글