클라이언트에 '연결됨'이 표시된다는 건 로컬 터널 프로세스가 떴다는 뜻일 뿐, 트래픽이 실제로 회선을 통해 나간다는 뜻은 아닙니다. VPN이 제대로 적용됐는지 확인하는 순서는 정해져 있습니다. 먼저 외부 IP와 접속 국가를 보고, 다음으로 DNS 조회가 어디로 가는지 확인하고, 마지막으로 앱별로 하나씩 검증합니다. 세 단계를 모두 통과해야 해당 회선이 지금 기기에서 실제로 쓸 수 있는 상태라고 볼 수 있습니다.
순서를 바꾸면 원인을 좁힐 수 없습니다. 앱부터 테스트하면 접속이 안 될 때 회선이 적용되지 않은 건지, 조회 경로가 잘못된 건지, 아니면 앱 자체가 접속 지역을 따지는 건지 구분할 수 없습니다. 외부 IP와 DNS라는 두 계층을 먼저 확정해 두면 남는 문제는 반드시 앱 쪽입니다.
3단계 자가 점검의 순서와 판정 기준
아래 표가 3단계 전체입니다. 각 단계마다 눈으로 확인할 수 있는 판정 기준이 있고, 처음 걸리는 행에서 멈춰 그 문제를 먼저 해결한 뒤 다음으로 넘어가면 됩니다.
| 순서 | 확인 항목 | 통과 기준 | 통과하지 못할 때의 전형적인 증상 |
|---|---|---|---|
| 1 | 외부 IP와 접속 국가 | 표시된 국가가 선택한 회선과 일치 | 여전히 국내 접속 국가로 표시되거나 선택한 회선의 국가와 다름 |
| 2 | DNS 조회 경로 | 조회 요청이 회선 쪽에서 처리되고 국내 통신사로 넘어가지 않음 | 조회 서버가 여전히 국내 통신사 주소 |
| 3 | 앱 계층 연결 | 대상 앱을 연속해서 사용할 수 있고 지역 제한 오류가 없음 | 페이지는 열리지만 기능이 제한되거나 인증을 반복 요구함 |
2단계는 가장 자주 건너뛰는 단계입니다. IP 접속 국가만 확인하고 바로 쓰기 시작하면 접속은 되지만 페이지 로딩이 느리고, 일부 리소스가 로드되지 않고, 로그인할 때 추가 인증을 요구받습니다. 이런 증상은 대개 회선 자체가 아니라 조회 경로에서 나옵니다.
점검하는 동안에는 변수를 하나만 바꾸세요: 회선 전환, 분할 규칙 수정, 클라이언트 교체를 동시에 하지 마세요. 한 번에 한 곳만 바꿔야 통과든 실패든 해당 설정과 바로 연결 지을 수 있습니다.
1단계: 외부 IP와 접속 국가 확인
외부 IP는 대상 사이트가 보는 주소이고, 트래픽이 회선을 탔는지 판단하는 가장 직접적인 증거입니다. 확인 방법은 두 가지이며 용도가 다릅니다.
GUI에서 확인하는 방법: 브라우저 시크릿 창을 열고 방문 IP를 보여주는 아무 페이지나 접속하면 IP와 접속 국가가 함께 표시됩니다. 시크릿 창을 쓰는 이유는 캐시와 확장 프로그램을 피하기 위해서입니다. 브라우저 확장에 설정된 프록시는 클라이언트가 기록한 시스템 프록시를 덮어쓰기 때문에, 일반 창에서 확인한 결과가 생각한 회선이 아닐 수 있습니다.
명령줄에서 확인하는 방법: 브라우저 프록시 설정의 영향을 받지 않아 '브라우저만 회선을 타고 다른 프로그램은 타지 않는다' 같은 문제를 찾을 때 적합합니다.
# IP만 추출, 스크립트로 점검할 때 적합
curl -s https://api.ipify.org
# 접속 국가와 통신사까지 함께 볼 때는 JSON으로
curl -s https://ipinfo.io/json
판정 기준은 하나입니다. 접속 국가가 선택한 회선과 일치하면 됩니다. 도시 단위까지 맞출 필요는 없습니다. IP 위치 데이터베이스 자체에 오차가 있어 데이터센터 주소가 인접 도시나 심지어 인접 국가로 표기되는 일도 흔합니다. 홍콩, 도쿄, 싱가포르처럼 노드가 밀집한 지역은 도시 필드의 참고 가치가 제한적이므로 국가 필드를 기준으로 보세요.
IPv6에서 자주 새는 구멍
대부분의 회선은 기본적으로 IPv4만 처리합니다. 기기에 사용 가능한 IPv6 주소가 있고 대상 사이트가 IPv6를 지원하면 브라우저는 IPv6 직접 연결을 우선합니다. 그 결과 IPv4 외부 IP는 해외인데 실제 요청은 국내에서 나가게 됩니다. 점검할 때 IPv6 항목을 보세요. 국내 주소대가 표시된다면 IPv6가 회선을 타지 않는 것이므로 클라이언트에서 IPv6를 끄거나, 듀얼 스택을 처리하는 모드로 바꿔야 합니다.
주의: 설정을 바꾼 뒤에는 다시 연결한 다음 확인하세요. 일부 운영체제는 네트워크 인터페이스 상태가 바뀌면 기본 라우트를 다시 만들기 때문에 기존 터널이 기본 라우트에 남아 있지 않을 수 있습니다.
2단계: DNS 누수 확인
DNS 누수란 트래픽은 회선을 타는데 도메인 조회 요청은 여전히 국내 통신사 DNS 서버로 나가는 상황입니다. 터널이 처리하는 건 IP 계층 트래픽이고, 조회 요청은 터널이 만들어지기 전에 나갈 수도 있고 운영체제가 인터페이스 우선순위에 따라 국내 리졸버로 보낼 수도 있습니다.
결과는 두 갈래입니다. 하나는 조회 결과와 접속 지역이 어긋나는 경우입니다. CDN은 조회 출발지를 기준으로 노드를 배정하기 때문에, 돌려받은 노드가 국내에 가깝고 회선 출구에서는 멀어 페이지는 열리지만 느리거나 일부 리소스 로드가 실패합니다. 다른 하나는 이상 징후 판정입니다. 대상 서비스가 해외 외부 IP와 국내 조회 출발지를 동시에 보게 되면 리스크 관리 차원에서 2차 인증을 요구할 가능성이 높아집니다.
| 플랫폼 | 확인 방법 | 확인할 항목 |
|---|---|---|
| Windows | 명령 프롬프트에서 ipconfig /all 실행 |
'DNS 서버' 항목이 국내 통신사 주소인지 |
| macOS | 터미널에서 scutil --dns 실행 |
nameserver[0]이 가리키는 주소 |
| Linux | 터미널에서 resolvectl status 실행 |
현재 링크의 DNS와 암호화 조회 상태 |
| 브라우저 | 설정에서 '보안 DNS' 검색 | 켜져 있는지, 켜져 있으면 시스템 DNS를 거치지 않음 |
그다음 조회 요청이 실제로 어디로 가는지 확인합니다. nslookup이나 dig로 고정된 도메인을 조회하면 출력의 Server가 현재 사용 중인 리졸버입니다. 여전히 국내 통신사를 가리킨다면 조회가 회선을 타지 않는 것입니다.
nslookup example.com
dig +short example.com
브라우저의 보안 DNS는 터널을 거치지 않습니다
Chrome, Edge, Firefox에는 모두 '보안 DNS', 즉 DNS over HTTPS가 내장되어 있습니다. 이걸 켜면 브라우저가 직접 암호화 조회를 하므로 시스템 DNS 설정을 읽지 않습니다. 이 상태에서는 클라이언트가 시스템 조회를 처리하더라도 브라우저의 조회 요청이 브라우저에 지정된 조회 서비스로 곧장 나가 접속 지역과 어긋날 수 있습니다. 점검 단계에서는 먼저 이 기능을 끄고 회선 자체에 문제가 없는지 확인한 뒤 켤지 결정하세요.
통과 기준: 시스템 리졸버가 회선 쪽 주소(또는 접속 지역과 일치하는 주소)로 표시되고, nslookup 출력이 더 이상 국내 통신사 주소가 아니어야 합니다. 두 조건을 모두 만족하면 3단계로 넘어갑니다.
3단계: 앱별로 하나씩 검증
외부 IP와 DNS가 정상이라고 해서 모든 앱이 다 되는 건 아닙니다. 프로그램마다 프록시 설정을 읽는 방식이 다르므로, 이 단계에서는 실제로 쓰는 프로그램을 하나씩 확인합니다.
- 브라우저: 시크릿 창으로 대상 사이트를 열어 페이지가 온전히 로드되고 로그인 상태가 정상인지 확인합니다. 확장 프로그램을 설치했다면 시크릿 모드에서 확장의 영향을 먼저 배제하세요.
- 데스크톱 클라이언트: 어떤 프로그램은 시스템 프록시만 읽고, 어떤 프로그램은 SOCKS만 인식하며, 어떤 프로그램은 시스템 프록시를 전혀 읽지 않아 TUN 모드로만 처리할 수 있습니다. 판별법은 간단합니다. 클라이언트를 종료한 뒤에도 프로그램이 평소처럼 인터넷이 된다면 애초에 프록시를 타지 않던 프로그램입니다.
- 명령줄 도구: 대부분의 명령줄 프로그램은 환경 변수만 인식합니다.
curl은http_proxy와https_proxy가 필요하거나, 아예 TUN 모드로 아무 설정 없이 처리하게 하는 편이 낫습니다. - 모바일: iOS와 Android 모두 백그라운드에서 연결을 회수합니다. 백그라운드에서 돌아온 뒤에는 클라이언트 상태를 먼저 확인하고 앱을 여세요. 오래 백그라운드에 둔 뒤 바로 쓰면 끊겨 있는 경우가 많습니다.
- 지역 판정이 엄격한 서비스: 이런 서비스는 외부 IP, 조회 출발지, 계정의 과거 지역을 함께 봅니다. 세 가지가 어긋나면 네트워크가 뚫려도 차단됩니다.
통과의 표시는 일정 시간 연속으로 사용할 수 있고, 리소스 로드 실패가 없고, 인증을 반복 요구받지 않는 것입니다. 첫 화면만 열어 보고 넘어가는 건 통과가 아닙니다.
'연결은 됐는데 실제로는 회선을 타지 않는' 흔한 경우
아래 상황은 모두 클라이언트 화면에 연결됨이 표시되지만 트래픽이 의도대로 회선을 타지 않는 경우입니다. 발생 빈도 순으로 정리했습니다.
- ❌ 시스템 프록시가 기록되지 않음. 클라이언트는 연결됨인데 시스템 프록시 스위치가 꺼져 있어 브라우저가 국내 네트워크로 나갑니다. 시스템 프록시 설정이 로컬 루프백 주소와 포트를 가리키는지 확인하세요.
- ❌ TCP만 처리하는데 브라우저는 QUIC을 씁니다. HTTP/3는 UDP 443을 쓰므로, 회선이 TCP만 포워딩하면 브라우저가 프록시를 거치지 않고 직접 연결합니다. 브라우저에서 QUIC을 끄거나 UDP를 처리하는 모드로 바꾸세요.
- ❌ IPv6 직접 연결. 1단계에서 봤듯 IPv6가 처리되지 않으면 시스템이 국내 주소를 우선 사용합니다.
- ❌ 분할 규칙이 대상 도메인을 직접 연결로 판정. 규칙 세트가 오래됐거나 도메인 분류 데이터베이스가 불완전하면 대상 사이트가 직접 연결로 빠집니다.
- ❌ 다중 네트워크 인터페이스 우선순위 오류. 가상 머신을 설치하거나 두 번째 인터페이스를 연결하면 기본 라우트가 다른 인터페이스로 나갈 수 있습니다.
- ❌ 터널은 끊겼는데 화면이 갱신되지 않음. 하트비트 실패 후에도 클라이언트가 연결됨으로 표시되는 경우가 있으니 다시 연결한 뒤 확인하세요.
- ✅ 반대도 성립합니다. 세 단계를 모두 통과했는데 앱이 안 된다면 문제는 회선이 아니라 앱 자체의 지역 정책에 있습니다.
분할 모드: 어떤 사이트는 회선을 타고 어떤 사이트는 타지 않는 이유
클라이언트는 보통 전역, 규칙(분할), 직접 연결 세 가지 모드를 제공합니다. 전역 모드는 모든 트래픽이 회선을 타므로 자가 점검에서 통과하기 가장 쉽고, 규칙 모드는 도메인이나 IP 소속에 따라 경로를 정해 유연하지만 '일부는 타고 일부는 타지 않는' 문제가 가장 자주 생깁니다.
- 전역: 모든 트래픽이 회선을 탑니다. 자가 점검이나 임시 사용에 적합하고, 장기간 쓰면 트래픽을 낭비하고 국내 서비스가 느려질 수 있습니다.
- 규칙: 규칙 세트로 판단해 직접 연결에 해당하면 국내로, 나머지는 회선으로 보냅니다. 규칙 세트는 주기적으로 갱신해야 하며 오래되면 잘못 판정합니다.
- 직접 연결: 끄는 것과 같습니다. 문제가 회선 자체 때문인지 확인할 때 씁니다.
점검할 때는 모드를 잠시 전역으로 바꾸고 외부 IP를 다시 확인하세요. 전역에서 통과하고 규칙에서 통과하지 못하면 문제는 회선이 아니라 규칙 세트에 있습니다.
자가 점검을 통과한 뒤
세 단계를 모두 통과했다면 이 회선이 지금 기기와 지금 네트워크에서 쓸 수 있다는 뜻입니다. 다음으로 볼 것은 장기적인 성능입니다. 저녁 피크 시간에 안정적인지, 오래 연결해도 끊기지 않는지, Wi-Fi에서 모바일 핫스팟으로 바꿨을 때 자동으로 복구되는지입니다. 이런 항목은 한 번에 판정할 방법이 없고 실제로 얼마간 써 보며 관찰해야 합니다.
자가 점검이 반복해서 통과되지 않으면 먼저 다른 회선으로 바꿔 다시 테스트하세요. 외부 IP가 대상 서비스에서 제한됐거나 라우팅이 멀리 돌아가는 문제는 클라이언트 설정을 바꿔서 해결되지 않습니다. VPNEH는 현재 90+개 국가, 190+개 회선을 제공하며 월 구독은 ¥9.9부터 60GB가 포함됩니다. 첫 결제 후 14일 이내에는 이유를 묻지 않고 전액 환불을 신청할 수 있으니, 점검 단계에서 회선을 바꿔 가며 시험해 보세요.