Pi에서 VPN을 구축하는 대부분의 경우는 서버 레시피로 시작해서 연결되지 않는 스마트폰으로 끝납니다. 순서가 거꾸로입니다. 스마트폰 클라이언트는 특정 프로토콜을 특정 인증 교환으로 구현하며, 서버는 그 교환에 맞춰야 하고 그 반대가 아닙니다. 앱을 먼저 정하면 반나절의 디버깅이 짧은 점검 목록으로 바뀝니다.

재구축을 아끼는 순서

Pi에 무엇이든 설치하기 전에 스마트폰의 운영체제와 정확한 VPN 앱을 적어 두세요. 이 조합이 어떤 프로토콜이 가능한지를 결정합니다. 프로필에 낯익은 필드가 우연히 들어 있다고 해서 클라이언트 앱이 다른 클라이언트가 되는 것은 아닙니다.

프로필의 공유 비밀, 또는 익숙해 보이는 포트 번호가 하나의 프로토콜을 다른 것으로 바꾸지는 않습니다. 교환은 앱이 구현한 것과 맞거나, 읽을 것이 거의 없는 단계에서 실패합니다. "잘못된 프로토콜"이라고 쉬운 말로 알려 주는 진단은 없습니다. 시간 초과, 인증서 오류, 또는 조용한 재시도 루프가 나오며, 모두 서버 문제처럼 보입니다.

앱이 고정되면 서버 선택이 좁아지고 나머지 구축에 목표가 생깁니다.

스마트폰 앱이 실제로 구현하는 것

공개된 클라이언트 목록은 서비스가 아니라 애플리케이션을 설명합니다. Android용 OpenVPN Connect 앱은 OpenVPN 서버를 기대하며, 서버 측을 제공하지 않습니다. 프로필이 비슷해 보인다고 해서 IPsec이나 L2TP 클라이언트가 되는 것도 아닙니다.

이 구분은 오래된 안내서를 따를 때 가장 중요합니다. 현재 앱이 버린 프로토콜을 위해 쓰인 레시피는 Pi에 깔끔하게 설치되고도 스마트폰에서는 여전히 실패하며, 이는 프로토콜 불일치가 아니라 설정 오류처럼 읽힙니다.

서버 패키지를 정하기 전에 앱의 현재 문서에서 어떤 프로필 형식을 가져오는지 확인하세요. 다섯 분의 독서가 재구축보다 낫습니다.

네 부분 합의

네 가지를 적어 함께 보관하세요. 스마트폰의 운영체제와 앱 버전, Pi의 서버 구현, 인증과 신뢰 정책, 그리고 외부 엔드포인트이며, 네 가지 중 하나가 나머지 셋을 무효로 만들 수 있습니다.

앱 업그레이드, 서버 패키지 변경, 또는 새 인증 기관이 합의를 깨뜨리며, 실패는 매번 스마트폰에서 똑같이 보입니다. 네 가지를 적어 둔 것이 바로 어느 부분이 움직였는지 식별하게 해 줍니다.

자격 증명의 역할은 따로 있습니다

프로필이 클라이언트 인증서를 쓰는지, 사용자 이름과 비밀번호를 쓰는지, 아니면 지원되는 조합을 쓰는지 정하고 양쪽을 일치시키세요. 서버의 신원과 신뢰된 CA 자료도 클라이언트가 받아들일 것과 맞아야 합니다.

CA의 공개 인증서와 서명용 개인 키는 서로 다른 객체입니다. 스마트폰 프로필에는 공개 부분만 들어갑니다. 서명 키를 스마트폰에 두는 것은 신원을 만들 수 있는 능력을 넘겨주는 일이며, 이는 CA의 목적과 정반대입니다. 그 파일은 전체 구축에서 가장 민감한 객체로 다루세요.

프로필을 손으로 조립하는 대신 서비스가 지원하는 내보내기와 가져오기 흐름을 쓰세요. 손으로 만든 프로필은 모바일 앱이 무시하거나 거부하는 데스크톱 전용 지시를 담는 경우가 많습니다.

무엇보다도, 오래된 예제를 연결시키려고 인증서 검증을 "모든 서버 허용"으로 바꾸지 마세요. 그것은 호환성 문제를 인증 우회로 바꾸고, 동작하기 때문에 대개 운영까지 살아남습니다.

도달 가능성은 별도의 계약

스마트폰은 실제 업스트림 구성을 통해 서버의 외부 엔드포인트에 도달해야 합니다. 가정용 공유기의 변환, 필터링, 통신사 NAT가 모두 그 사이에 있습니다. 동적 DNS 이름은 엔드포인트에 안정적인 이름만 줄 뿐; 들어오는 경로를 만들지는 않습니다.

그다음 연결된 뒤 클라이언트가 무엇에 도달할 수 있는지—사설 접두사인지 전체 인터넷 출구인지, 그 전달과 응답 경로, DNS 동작, 그리고 IPv6이 범위에 있는지—정의하세요. 성공적인 로그인은 그중 어느 것도 증명하지 않습니다.

의도한 스마트폰과 프로필을 직접 받아들이고, 권한 없는 자원이 닿을 수 없는 상태로 남는지와 폐기가 실제로 접근을 제거하는지 확인하세요. 데스크톱 클라이언트에서의 성공은 그 데스크톱 클라이언트를 검증할 뿐, 손에 든 스마트폰을 검증하지 않습니다. OpenVPN Connect 목록 은 일치하는 서비스를 기대하는 클라이언트 애플리케이션의 구체적인 예입니다.

관련 글