프로필은 내려받아지고 가져온 뒤 파일의 12번째 줄에서 Unrecognized option 메시지와 함께 멈추며, 그 메시지에는 keysize이 나옵니다. 계정에는 아무 변화가 없고 서버는 다른 클라이언트를 계속 받아들입니다. 달라진 것은 클라이언트 자체입니다. Ubuntu 24.04는 OpenVPN 2.6을 설치하지만 내보내기는 2.4용으로 작성되었습니다. 수리는 짧은 삭제 연속이고 순서가 중요합니다. 오래된 옵션 각각이 다음 줄이 읽히기 전에 구문 분석을 중단시키기 때문입니다.

파일을 건드리기 전에 오류 줄을 읽으십시오

OpenVPN은 구문 분석이 멈춘 파일과 줄을 알려주므로 실행 한 번에 문제 하나만 고칠 수 있습니다. 프로필을 데스크톱 애플릿이 아니라 터미널에서 실행하십시오. 애플릿은 보통 stderr를 삼키고 줄 번호가 얻을 수 있는 유일한 확실한 단서입니다: sudo openvpn --config /etc/openvpn/client/provider.ovpn. 그 줄을 고치고 다시 실행하면 다음 실패는 다른 옵션을 지목합니다.

구문 분석 오류는 어떤 TLS 핸드셰이크보다도 항상 먼저 나타나므로, 인증서를 언급하는 메시지는 이미 구문 단계를 통과한 것입니다. 이 구분 덕분에 인증에서만 실패하는 파일을 편집하지 않게 됩니다. 메시지의 중간이 아니라 첫 단어를 읽으십시오.

세 가지 실패 등급, 세 가지 다른 수리

오래된 내보내기는 세 가지로 구별되는 방식으로 실패하며, 그것들을 하나의 문제로 뭉치는 것 때문에 사람들이 결코 고장 나지 않은 패키지를 다시 설치합니다. 메시지의 표현이 파일을 열기 전에 어느 등급인지 알려줍니다.

  • 구문 분석 오류는 파일과 줄을 지목하고 트래픽이 생기기 전에 멈춥니다.
  • 협상 오류는 연결한 뒤 두 끝이 공통 암호나 허용 가능한 데이터 채널에 합의하지 못했다고 보고합니다.
  • 인증 오류는 가장 멀리 가며 인증서, 사용자 또는 거부된 자격 증명을 지목합니다.

프로필 편집은 첫 번째 등급만 고칩니다. 협상은 터널 양쪽 끝의 결정이 필요하고, 거부된 자격 증명은 구문 문제가 전혀 아닙니다. 메시지에 공통 암호나 데이터 채널이 나온다면 아래 삭제는 아무것도 바꾸지 않습니다.

2.6이 제거한 옵션을 이 순서로 삭제하십시오

이 줄들은 각각 스스로 구문 분석을 멈추므로 클라이언트가 하나씩 보고합니다. 목록을 따라 내려가며 삭제할 때마다 다시 실행하십시오.

먼저 keysize을 지우십시오. 현대적인 대응이 없고 그 존재가 보통 현재 클라이언트가 어차피 거부하는 암호를 뜻하기 때문입니다. 다음으로, 암호 협상을 제어했지만 2.5에서 폐기되었고 2.6에는 없는 ncp-disable을 지우십시오. ns-cert-type server 대신 remote-cert-tls server을 넣으십시오. 같은 의도를 지원되는 검사로 표현한 것입니다. 2.6 변경 이력은 남은 제거 항목을 대체 항목 옆에 나열하므로, 구문 분석기가 여전히 거부하는 모든 것에는 문서화된 답이 있습니다.

첫 편집 전에 원본 프로필의 사본을 남기십시오. 공급자는 내보내기를 다시 만들며, 손대지 않은 파일과의 diff가 내 변경과 그들의 변경을 구분하는 가장 빠른 방법입니다. 삭제로 클라이언트가 시작되지만 터널이 여전히 실패한다면 협상 등급으로 넘어간 것이고 남은 줄은 원인이 아닙니다. 클라이언트 버전을 파일 이름에 넣어 다음 사람이 어느 릴리스용 편집인지 알 수 있게 하십시오.

BF-CBC는 제한된 대체 수단으로만 유지하십시오

일부 공급자는 여전히 BF-CBC로 종료하며, OpenVPN 2.6은 도움 없이 이것과 협상하지 않습니다. 암호의 블록이 64비트이기 때문입니다. 좁은 수리는 대체 목록과 옛 OpenSSL 공급자이며, 클라이언트 전체를 내리는 것이 아닙니다.

providers legacy default
data-ciphers AES-256-GCM:AES-128-GCM
data-ciphers-fallback BF-CBC

첫 줄은 옛 공급자를 불러와 OpenSSL이 그 암호를 여전히 만들 수 있게 하고, 둘째 줄은 이를 지원하는 상대를 위해 현대적 협상을 유지하며, 셋째 줄은 서버가 더 나은 것을 제시하지 않을 때만 적용됩니다. 이것은 의도적인 터널 약화이므로 파일 옆에 왜 존재하는지 기록하십시오. 대체는 목적지가 아니라 다리이므로 동시에 공급자에게 내보내기 재생성을 요청하십시오.

--compat-mode을 만능 답으로 삼지 마십시오. 한 번에 여러 동작을 바꾸며 협상과 재협상의 기본값도 포함하므로 어떤 변경이 효과가 있었는지 결코 알 수 없습니다. 위의 세 줄을 명시적으로 선택하십시오. 각각이 자기 효과를 밝히고 있습니다.

클라이언트가 실제로 불러오는 프로필로 확인하십시오

가져온 연결은 흔히 시스템 디렉터리로 복사되므로 다운로드 폴더의 파일을 편집해도 아무것도 바뀌지 않을 수 있습니다. 실제로 실행되는 사본을 찾으십시오: sudo grep -rl "remote " /etc/NetworkManager/system-connections /etc/openvpn. 그다음 터널을 시작하고 실제로 선택된 데이터 채널 암호를 보고하는 로그 줄을 읽으십시오. 대체 수단에서 핸드셰이크를 마치는 연결은 서버가 현대적인 것을 한 번도 제시하지 않았다는 뜻입니다.

공급자가 기대하는 네트워크가 아닌 곳에서 시험하십시오. 캡티브 포털이나 필터링된 게스트 네트워크가 프로필 결함으로 보이지 않게 하기 위해서입니다. 지원 요청에는 항상 클라이언트 버전을 적으십시오.

터널이 올라오면 반드시 통과해야 하는 요청 하나와 통과해서는 안 되는 요청 하나를 보내고, 리졸버 응답이 예상대로 바뀌었는지 확인하십시오. 프로필이 이제 구문 분석되지만 연결이 여전히 실패한다면 구문 문제는 뒤로한 것이고 오류 문구가 새 등급을 지목할 것입니다. 편집한 파일은 대상 OpenVPN 릴리스를 적은 메모와 함께 버전 관리에 두십시오.

관련 글