특정 사설 서비스는 VPN을 통해 응답하는데 일반 인터넷 트래픽은 동료의 컴퓨터와 전혀 다르게 동작해서, Ubuntu 클라이언트가 고장 났다고 결론 내리고 싶어집니다. 그 결론은 한 단계를 건너뜁니다. 사설 작업이 정상이라는 관찰과 공용 경로가 다르다는 관찰은 별개의 두 가지이며, 차이는 보통 클라이언트 자체가 아니라 각 클라이언트가 설치한 트래픽 정책에 있습니다.

저장된 구성과 실제 네트워크 상태를 비교하는 데는 명령 세 개면 충분하고, 추측이 답하려던 질문에 답해 줍니다.

먼저 저장된 프로필, 다음은 실제 상태

가져온 OpenVPN 연결은 자체적인 NetworkManager 프로필이 됩니다. 원본 .ovpn 파일은 가져오기가 끝나는 순간 더 이상 진실의 원천이 아니므로, 나중에 그 파일을 편집해도 사용 중인 연결은 바뀌지 않습니다. 비교가 처음 어긋나는 지점이 바로 여기이며, 조용히 어긋납니다.

nmcli -f connection.id,connection.uuid,ipv4.never-default,ipv4.routes,ipv4.dns connection show office-vpn

이름이 충돌하면 UUID를 읽어야 하며, 중복된 이름은 재설치와 프로필 복원을 거쳐도 남기 때문에 사용하지 않는 사본을 한 시간 동안 편집할 수 있습니다. 보이는 값은 저장된 의도를 설명합니다: 프로필이 기본 경로를 가져갈 수 있는지, 어떤 경로가 저장되었는지, 어떤 리졸버와 검색 도메인을 요청하는지입니다. 연결이 활성화될 때 무슨 일이 일어났는지는 설명하지 않는데, 플러그인이나 서버 푸시가 프로필에 없는 상태를 추가할 수 있기 때문입니다. 그래서 다음 명령이 중요합니다.

그다음 시스템이 그 의도를 실제로 어떻게 처리했는지, 정책 규칙과 기본 테이블만이 아니라 모든 테이블을 포함해 보세요. 저장된 속성은 입력이고, 설치된 테이블은 결과입니다.

ip -4 rule show
ip -4 route show table all

두 목적지, 한 번의 비교

작동하는 사설 목적지 하나와 일반 공용 목적지 하나를 골라 각각 어떤 경로로 갈지 커널에 물어보세요. 두 컴퓨터 모두에서 이렇게 해야 모호한 차이가 구체적인 차이가 됩니다.

ip -4 route get 10.40.0.20
ip -4 route get 203.0.113.20

주소는 여러분의 것으로 바꿔 넣을 예시입니다; 중요한 것은 숫자가 아니라 짝입니다. 각 출력에 나오는 인터페이스, 원본 주소, 테이블을 비교하세요. 사설 조회가 터널을 가리키고 공용 조회도 터널을 가리킨다면 전체 터널이고, 다른 클라이언트는 분할 터널일 수 있으며 그 반대일 수도 있습니다.

두 클라이언트가 똑같은 텍스트를 출력하라고 요구하지 마세요. OpenVPN의 redirect-gateway def1는 보통 하나의 기본 경로가 아니라 두 개의 절반 프리픽스 경로로 표현되며, 이를 다르게 표시하는 관리자가 틀린 것은 아닙니다. 판단해야 할 것은 조회가 보여 주는 적용 범위이지 서식이 아닙니다.

두 클라이언트가 정당하게 다른 지점

클라이언트 기본값은 정책 선택이며 서로 달라도 됩니다. 어떤 제품은 전체 터널을 선호하고, 다른 제품은 로컬 기본값을 유지하며 사설 프리픽스만 라우팅하고, 세 번째는 서버가 푸시한 것을 따를 수 있습니다. 차이는 주어진 요구 사항과 모순될 때만 결함입니다.

따라서 각 클라이언트를 서로 비교하지 말고 승인된 분할 또는 전체 터널 의도와 비교하세요. 사설 트래픽은 터널을 쓰고 로컬 인터넷 경로는 로컬로 남아야 한다는 요구 사항이라면, 전체 터널이 버그이고 분할 터널이 맞으며, 어느 클라이언트가 무엇을 했는지와 무관합니다. 어느 구성이든 보기 전에 의도를 적어 두세요, 그렇지 않으면 처음 살펴본 클라이언트가 조용히 기준이 됩니다.

DNS는 두 번째 축이며 독립적으로 실패합니다. 올바른 경로라도 사설 영역에 답할 수 없는 리졸버로 질의를 보낼 수 있고, 올바른 리졸버가 잘못된 경로를 고쳐 주지는 않습니다. 둘 다 확인하고, 사설 이름은 확인되는데 사설 주소는 확인되지 않는 상황을 두 계층이 따로 해결되고 있다는 증거로 보세요.

비교를 깨끗하게 유지하기

연결 소유자는 한 번에 하나만 두세요. 가져온 프로필 옆에서 명령줄 OpenVPN 세션을 실행하면 자체 경로와 리졸버 상태가 설치되어, 그 혼합은 어느 클라이언트의 동작도 아닙니다. 다른 하나를 측정하기 전에 하나를 내리세요. 무엇이 아직 상태를 붙잡고 있는지 모르겠다면 재부팅하세요, 한 시간 전의 낡은 경로가 정책 문제와 똑같이 보이기 때문입니다.

다른 조건도 모두 고정하세요: 같은 엔드포인트, 같은 계정, 같은 소프트웨어 버전, 같은 네트워크입니다. 동료의 Windows 노트북에서 성공한 것은 다른 클라이언트, 다른 리졸버 통합, 어쩌면 다른 서버 프로필을 시험한 것이므로 Ubuntu 관리자에 대한 증거가 아닙니다.

NetworkManager의 IPv4 설정 참조는 never-default와 저장된 경로 속성을 정확히 정의하므로, 관리되는 값을 바꾸기 전에 읽어 볼 가치가 있습니다. 그리고 이 비교의 범위를 기억하세요: IPv4만 다루며, 고유한 기본값과 고유한 놀라움 방식을 지닌 대응 IPv6 정책에 대해서는 아무 말도 하지 않습니다.

관련 글