휴대폰은 아무 문제 없이 공유기의 VPN에 연결되는데, 같은 다운로드 페이지의 프로필을 쓰는 노트북은 시간 초과됩니다. 그 두 시도 사이에 인증서 쪽에서 달라진 것이 없는 것은, 노트북이 인증서가 중요해지는 지점에 아예 도달하지 못했기 때문입니다. 공유기는 TUN과 TAP에 대해 별도의 리스너를 게시하며, 동작하는 프로필은 자기 장치 유형에 속한 리스너를 골라야 합니다.

세 가지 후보 결함, 즉 포트인지 장치 유형인지 아니면 데이터 채널의 암호 협상인지 중 무엇을 좇을지 정하는 것이 여기서의 전부입니다.

서로 맞아야 하는 세 가지

장치 유형, 프로필의 인터페이스 줄, 리스너 포트는 셋이 아니라 하나의 선택입니다. dev tun을 선언하면서 TAP 리스너를 겨냥한 프로필은 세션을 끝낼 수 없고, 반대도 똑같이 실패합니다. 쓰고 있는 모델과 펌웨어에 대해서는 빌드마다 번호가 달라지므로 안내서가 아니라 공유기 자체의 VPN 페이지에서 포트를 읽으세요. 그 번호 옆에 모델과 펌웨어 버전을 적어 두면 다음 사람이 검증할 수 있습니다.

현장 보고에는 한 펌웨어에서 TUN에 12973, TAP에 12974 같은 쌍이 있고 다른 펌웨어에서는 다른 번호라는 사례가 있습니다. 이것은 빌드가 다르다는 증거로 읽어야지, 복사할 상수로 보면 안 됩니다. 그다음 프로필에는 거리에 맞는 호스트 이름, 즉 바뀔 WAN 주소가 아니라 공유기의 동적 DNS 이름이 필요합니다.

포트와 인터페이스 줄을 고치면 프로필은 remote 줄 하나와 dev 줄 하나만 있는 평범한 클라이언트 구성처럼 보입니다. 둘이 어긋나면 아무리 다시 시도해도 세션은 생기지 않습니다.

로그는 출력되는 순서대로 읽으세요

OpenVPN 클라이언트는 사건이 일어난 순서대로 보고하므로, 조용해지기 직전의 줄이 점검할 계층을 알려 줍니다. 실행이 TLS Error: TLS key negotiation failed에서 끝나거나, 첫 응답을 기다리다 그냥 포기한다면 인증서 비교는 일어나지 않은 것입니다. 그것은 도달 가능성, 리스너, 또는 뒤에 아무것도 없는 포트를 가리킵니다. 어느 것도 CA 파일을 바꿔서 고쳐지지 않습니다.

VERIFY OK까지 갔다가 실패하는 실행은 전혀 다른 곳에 있고 원인도 따로입니다. 파일을 건드리기 전에 이 두 결과를 구분하면 한 번도 조회되지 않은 인증서 묶음을 헤매는 전형적인 우회를 피할 수 있습니다. 핸드셰이크는 끝났는데 터널이 올라오지 않는다면 도달 가능성이 아니라 암호 협상을 보세요.

현대 클라이언트가 기대하는 암호 목록을 추가하세요

최근 OpenVPN 클라이언트는 가정용 펌웨어가 아직 제시하는 예전 기본값을 거부하며, 증상은 핸드셰이크가 성공한 직후의 협상 실패입니다. 해결은 클라이언트가 무엇을 받아들일지 지정하는 프로필 한 줄로, data-ciphers를 AES-256-GCM, AES-128-GCM, CHACHA20-POLY1305, AES-128-CBC 순서로 설정하면 됩니다. 공유기가 구현하지 않은 알고리즘은 그냥 선택되지 않으므로, 목록이 길어도 협상이 조금 길어질 뿐입니다.

암호를 나열한다고 해서 공유기에 없는 암호가 생기지는 않습니다. 협상이 계속 실패하면 공유기 페이지에 자체 암호 설정이 있는지, 그 설정에 클라이언트가 받아들이는 항목이 최소 하나 있는지 확인하세요. 공통 원소가 없는 두 목록은 잘못된 포트와 똑같은 실패를 만들므로 양쪽 끝을 다 볼 가치가 있습니다.

사본을 손으로 고치는 대신 한 번 가져오세요

고친 파일을 NetworkManager로 가져오면 조금씩 다른 프로필이 가득한 폴더를 피할 수 있습니다(nmcli connection import type openvpn file client.ovpn을 실행한 뒤 이름으로 올리면 됩니다). 가져온 프로필을 편집하는 유일한 사본으로 두고, 반복 다운로드로 쌓이는 중복은 지우세요.

그다음 LAN 밖에서 시험하세요. 같은 네트워크에서 연결하는 것은 트래픽이 터널을 아예 지나지 않을 수도 있어 거의 아무것도 증명하지 못합니다. 요청이 실제로 공유기를 통해 나가는지 확인해야 하며, 클라이언트가 연결됨으로 표시되는 것만으로는 부족합니다.

경고를 어떻게 다룰지 정하세요

가정용 펌웨어는 보통 자체 인증 기관을 만들고, 클라이언트는 펌웨어가 억제할 수 없는 방식으로 검증에 대해 불평합니다. 모든 경고를 치명적으로 보는 대신 그 불평이 지키려는 대상에 중요한지 판단하고, 메시지 하나를 잠재우려고 검증을 전역으로 끄지 마세요. 평가한 경고는 문서화된 위험이고, 꺼 버린 검증 설정은 문서화되지 않은 위험입니다.

펌웨어가 정말 중요한 경고를 고칠 지원되는 방법을 제공하지 않는다면, 그 공백은 VPN을 다른 곳에서 호스팅할 이유가 됩니다. 프로필을 고칠지, 경고를 받아들일지, 엔드포인트를 옮길지는 그 인증서를 얼마나 신뢰하는지에 대한 결정입니다. 아이콘이 초록색이 될 때까지 대화 상자를 클릭하는 대신 의도적으로 결정하고, 어떤 선택을 했는지 적어 두세요.

관련 글