VPN이 연결됐는데 작동하지 않는 경우는 대개 하나의 고장만으로 설명되지 않습니다. 클라이언트의 ‘연결됨’ 표시는 클라이언트와 원격 노드 사이에서 어떤 연결 과정이 완료됐다는 뜻일 뿐, 브라우저·데스크톱 앱·시스템 서비스의 트래픽까지 모두 이 경로로 전달된다는 의미는 아닙니다. 외부 IP가 바뀌지 않거나 DNS가 여전히 로컬 네트워크에서 해석되거나 특정 앱이 프록시를 우회하면 ‘연결됨으로 표시되지만 접속 결과는 그대로인’ 현상이 나타날 수 있습니다.
문제를 확인할 때 노드를 계속 바꿔 가며 운에 맡기지 마세요. 더 정확한 방법은 연결 경로를 여러 단계로 나누는 것입니다. 클라이언트가 세션을 만들었는지, 시스템이 프록시 또는 가상 네트워크 인터페이스 설정을 받아들였는지, 대상 앱이 분할 라우팅 규칙을 적용받았는지, 도메인 해석이 예상한 경로를 사용하는지, 원격 서비스가 현재 외부 출구를 허용하는지를 각각 확인해야 문제 지점을 찾을 수 있습니다.
먼저 ‘연결됨’과 ‘트래픽이 실제로 전달됨’을 구분하세요
클라이언트마다 ‘연결됨’을 정의하는 방식은 완전히 같지 않습니다. Shadowsocks, VMess, Trojan 또는 VLESS를 사용할 때 클라이언트가 먼저 로컬 프록시 포트를 열고 원격 노드를 테스트할 수 있습니다. 이때 시스템 프록시 설정을 읽거나 프록시 주소가 명시적으로 설정된 앱만 요청을 로컬 포트로 보냅니다. 해당 설정을 읽지 않는 앱은 계속 네트워크에 직접 접속할 수 있습니다.
Hysteria2와 TUIC는 일반적인 TCP 전달과 다른 전송 방식을 사용하는 경우가 많지만, 시스템 트래픽을 실제로 인계하는지는 클라이언트 실행 모드에 달려 있습니다. 프로토콜 연결에 성공했다고 해서 라우팅 테이블, 가상 네트워크 인터페이스, 분할 라우팅 규칙이 모두 올바르게 설치됐다는 뜻은 아닙니다. 프로토콜은 클라이언트와 노드 사이의 전송 방식을 정하고, 시스템 인계는 어떤 로컬 트래픽이 이 전송 경로로 들어갈지를 정하므로 둘을 혼동해서는 안 됩니다.
시스템 프록시 모드는 운영체제의 프록시 설정을 따르는 프로그램에 주로 영향을 줍니다. TUN 모드는 가상 네트워크 인터페이스와 라우팅 규칙으로 더 넓은 범위의 네트워크 요청을 받으므로 시스템 프록시를 읽지 않는 데스크톱 앱에 더 적합한 경우가 많습니다. 앱 내 프록시는 지정한 소프트웨어에만 적용됩니다. 세 모드는 하나의 클라이언트에서 동시에 나타날 수 있지만 활성화 이름, 권한 요구 사항, 규칙 구현은 플랫폼마다 다릅니다.
| 관찰된 현상 | 문제가 있을 수 있는 단계 | 우선 확인할 항목 |
|---|---|---|
| 모든 앱의 외부 출구가 바뀌지 않음 | 시스템 프록시, TUN 라우팅 또는 클라이언트 인계 | 실행 모드, 시스템 권한, 프록시 스위치 |
| 브라우저에서는 작동하지만 데스크톱 앱에서는 작동하지 않음 | 앱이 시스템 프록시를 읽지 않음 | TUN 모드, 앱 내 프록시, 분할 라우팅 규칙 |
| 외부 출구는 바뀌었지만 도메인 해석 위치가 이상함 | DNS 경로 | 클라이언트 DNS 설정, 브라우저 보안 DNS |
| 일부 웹사이트는 접속되지만 일부는 결과가 그대로임 | 규칙 기반 라우팅, 캐시 또는 대상 서비스 정책 | 규칙 적용 기록, 시크릿 창, 외부 출구 지역 |
| 노드를 바꿨는데 기존 페이지에 이전 지역이 계속 표시됨 | 연결 재사용, 캐시 또는 세션 상태 | 기존 연결 종료, 페이지 다시 열기, 앱 종료 |
외부 IP로 공용 네트워크 요청 경로 확인하기
외부 IP는 가장 직접적인 외부 증거입니다. 확인하기 전에 경로를 끊고 사이트의 IP 조회를 열어 현재 네트워크의 위치 정보를 기록하세요. 그런 다음 대상 노드에 연결하고 조회 페이지를 다시 여세요. 주소와 위치 정보가 예상대로 바뀌면 해당 브라우저의 공용 네트워크 요청이 원격 출구를 거친다는 뜻입니다. 결과가 완전히 같다면 브라우저가 트래픽 인계를 받았는지 추가로 확인해야 합니다.
테스트할 때 오래 열어 둔 페이지를 단순히 새로 고치는 것만으로 판단하지 마세요. 브라우저가 연결 풀, 프록시 인증 상태 또는 페이지 캐시를 유지할 수 있고 일부 사이트는 지역 정보를 세션에 저장합니다. 더 확실한 방법은 테스트 탭을 닫고 새 브라우징 세션을 만든 뒤 다시 조회하는 것입니다. 브라우저에 별도의 프록시 확장이 설치되어 있다면 시스템 프록시를 덮어쓰거나 현재 도메인을 직접 연결로 강제하고 있지 않은지도 확인하세요.
- 클라이언트 연결을 끊고 현재 외부 출구 위치를 조회해 기록합니다.
- 대상 노드에 연결하고 클라이언트가 로컬 포트만 시작한 상태에 머물러 있지 않은지 확인합니다.
- 새 브라우징 세션을 만든 뒤 외부 출구 위치를 다시 조회합니다.
- 다른 앱에서도 같은 조회를 반복해 결과가 일치하는지 비교합니다.
- 클라이언트 연결 로그에서 테스트 요청이 프록시 규칙 또는 직접 연결 규칙에 적용됐는지 확인합니다.
외부 출구가 바뀌었다는 사실만으로 테스트한 앱의 공용 네트워크 요청이 경로를 통과했다는 점을 확인할 수 있을 뿐, 모든 앱이 같은 경로를 사용한다는 뜻은 아닙니다. 브라우저는 시스템 프록시를 사용하고 명령줄 도구는 직접 연결할 수 있으며, 데스크톱 앱은 자체 네트워크 스택을 사용할 수 있습니다. 시스템 업데이트, 로컬 네트워크 기기, 백그라운드 서비스 역시 같은 규칙의 적용을 받지 않을 수 있습니다. 따라서 외부 출구 확인 후에는 DNS와 앱별 결과도 점검해야 합니다.
DNS가 예상한 경로로 해석되는지 확인하기
DNS는 도메인을 연결 가능한 주소로 변환합니다. 웹 콘텐츠가 원격 출구를 통해 전송된다고 해서 도메인 해석까지 반드시 같은 경로를 이용하는 것은 아닙니다. 시스템이 계속 로컬 네트워크에서 제공하는 DNS를 사용하면 접속 요청과 해석 요청이 서로 다른 경로로 이동합니다. 이를 흔히 DNS 유출이라고 합니다. 이 현상은 로컬 네트워크의 해석 위치를 노출할 수 있고, 대상 지역에 적합하지 않은 해석 결과로 분할 라우팅 판단을 흐릴 수도 있습니다.
확인할 때는 연결 전후의 DNS 해석 서비스 위치를 비교해야 합니다. 외부 출구는 바뀌었지만 해석 서비스가 여전히 현재 로컬 네트워크에 속한 것으로 명확히 표시된다면, 클라이언트에서 원격 DNS, 암호화 DNS 또는 TUN이 인계하는 해석 모드를 활성화했는지 확인하세요. 옵션 이름은 클라이언트마다 다르므로 ‘자동’이라는 표시만으로 적용 여부를 판단하지 말고 연결 로그와 외부 조회 결과를 함께 확인하는 것이 좋습니다.
브라우저가 자체 보안 DNS 설정을 사용해 운영체제나 클라이언트가 지정한 해석기를 우회할 수도 있습니다. 이것이 반드시 오류라는 뜻은 아니지만 클라이언트 규칙과 브라우저 해석 경로가 달라질 수 있습니다. 특정 브라우저에서만 DNS 결과가 이상하다면 일시적으로 브라우저가 시스템 설정을 따르게 한 뒤 다시 확인하세요. 기업 네트워크의 보안 소프트웨어가 해석을 관리하는 경우에는 해당 네트워크의 관리 정책을 따라야 합니다.
- ✅ 외부 출구 위치가 선택한 노드 지역과 일치하고 DNS 위치도 클라이언트 설정에 부합합니다.
- ✅ 다른 브라우저에서도 결과가 같다면 특정 브라우저의 독립적인 해석 설정이 원인이 아닙니다.
- ✅ 클라이언트 로그에서 도메인 해석 요청과 예상한 프록시 또는 원격 해석 경로를 확인할 수 있습니다.
- ❌ 외부 출구는 바뀌었지만 DNS는 계속 로컬 접속 네트워크를 가리킵니다.
- ❌ 브라우저와 시스템 도구의 DNS 위치가 완전히 다르고 분할 라우팅 규칙으로 차이를 설명할 수 없습니다.
- ❌ DNS를 변경한 뒤 기존 페이지를 새로 고치기만 하고 기존 연결과 해석 캐시를 정리하지 않았습니다.
DNS 설정을 변경한 뒤에는 기존 해석 결과가 만료되도록 해야 합니다. 대상 앱을 종료했다가 다시 열고, 경로를 끊은 뒤 다시 연결하며, 필요한 경우 운영체제가 제공하는 DNS 캐시 초기화 기능을 사용하세요. 출처가 불분명한 정리 명령을 함부로 복사하지 마세요. 운영체제마다 명령과 권한 모델이 다르며 잘못 조작하면 정상적인 네트워크 설정에 영향을 줄 수 있습니다.
브라우저·클라이언트·시스템 서비스를 앱별로 확인하기
앱별 확인의 목적은 ‘어떤 프로그램은 작동하고 어떤 프로그램은 작동하지 않는지’를 찾는 것입니다. 먼저 시스템 프록시를 확실히 따르는 브라우저를 기준으로 삼고, 그다음 시스템 프록시를 반드시 읽는다고 할 수 없는 데스크톱 앱을 테스트한 뒤 명령줄 도구나 시스템 서비스를 확인하세요. 매번 하나의 조건만 바꿔야 차이가 앱 때문인지, 모드 때문인지, 노드 때문인지 판단할 수 있습니다.
브라우저는 작동하지만 데스크톱 앱은 작동하지 않음
이 경우는 대개 시스템 프록시는 적용됐지만 데스크톱 앱이 이를 읽지 않는다는 뜻입니다. 일부 앱은 자체 프록시 페이지를 사용하고, 일부 앱은 시작할 때 시스템 설정을 읽어야 하며, 또 다른 앱은 TUN 모드에서만 통합 인계가 가능합니다. 먼저 앱의 네트워크 설정에서 ‘시스템 설정 따르기’, ‘직접 연결’ 또는 사용자 지정 프록시 옵션이 있는지 확인한 뒤 앱 내 프록시와 TUN 중 적절한 방식을 선택하세요.
앱에서 HTTP 또는 SOCKS 프록시를 직접 입력할 수 있다면 클라이언트가 실제로 수신 중인 로컬 주소와 포트를 사용하세요. 경험만으로 포트를 입력하지 말고 구독 링크를 프록시 주소로 넣지도 마세요. 구독 링크는 클라이언트에 노드 설정을 배포하는 용도이고, 프록시 주소는 로컬 앱이 클라이언트에 연결하는 진입점이므로 목적이 다릅니다.
데스크톱 앱은 작동하지만 브라우저는 작동하지 않음
브라우저 확장 프로그램, 독립 보안 DNS, 시작 매개변수, 기업 정책이 시스템 설정을 덮어쓸 수 있습니다. 먼저 프록시 경로를 바꾸는 확장 프로그램을 비활성화하고 브라우저가 ‘시스템 설정 따르기’를 선택했는지 확인한 다음 새 브라우징 세션으로 테스트하세요. 특정 사용자 프로필에서만 문제가 발생한다면 클라이언트 전체를 바로 재설치하기보다 임시 프로필을 만들어 비교하는 편이 좋습니다.
일부 도메인에만 적용되지 않음
이때는 규칙 모드를 중점적으로 확인해야 합니다. 일반적인 모드로는 전역 프록시, 규칙 기반 라우팅, 전역 직접 연결이 있습니다. 규칙 기반 라우팅은 도메인, 주소 범위, 프로세스 또는 규칙 세트에 따라 경로를 결정합니다. 대상 도메인이 직접 연결 규칙에 적용되면 다른 웹사이트는 정상인데 해당 사이트만 로컬 출구를 계속 사용하는 결과가 나타날 수 있습니다. 노드를 반복해서 바꾸기보다 클라이언트 로그의 규칙 적용 항목을 확인하는 것이 효과적입니다.
구독·프로토콜·노드 설정 확인하기
클라이언트에 구독을 가져온 뒤 노드는 보이지만 실제 트래픽이 전혀 흐르지 않는다면 ‘구독을 가져오는 데 성공한 것’과 ‘노드 연결에 성공한 것’을 구분해야 합니다. 구독 링크는 설정을 가져오는 입구일 뿐이며 일반적으로 노드 주소, 포트, 프로토콜, 인증 매개변수를 포함합니다. 클라이언트가 구독을 성공적으로 내려받았다고 해서 모든 노드가 현재 네트워크 환경에서 세션을 만들 수 있다는 뜻은 아닙니다.
가져올 때는 클라이언트가 명확히 지원하는 구독 형식을 선택하세요. Shadowsocks, VMess, Trojan, VLESS, Hysteria2, TUIC는 매개변수 구조가 서로 다르므로 프로토콜 이름만 바꿔 서로 대체할 수 없습니다. 클라이언트 버전이 구독에 포함된 전송 방식을 지원하지 않으면 노드 이름은 표시되지만 올바르게 연결되지 않을 수 있습니다. 서비스 제공자가 권장하는 클라이언트를 우선 사용하고 클라이언트의 구독 업데이트 기능으로 설정을 가져오세요. 인증 필드는 직접 삭제하거나 수정하지 마세요.
노드에는 연결되지만 데이터가 흐르지 않을 때는 로그에서 핸드셰이크, 인증, 도메인 해석, 라우팅 정보를 확인할 수 있습니다. 인증 실패는 대개 만료된 설정이나 매개변수 불일치를 가리키고, 연결 시간 초과는 로컬 네트워크, 노드 주소 또는 전송 방식과 관련될 수 있습니다. 요청이 직접 연결로 표시되면 규칙 문제이고, 로그에 로컬 포트 시작 정보만 있고 원격 세션이 없다면 클라이언트가 아직 실제로 노드에 접속하지 않았을 가능성이 있습니다.
중계, 직접 연결, IEPL 전용 회선은 서로 다른 경로 구성 방식을 뜻합니다. 직접 연결은 일반적으로 사용자 네트워크가 노드 진입점에 직접 접속하는 방식이고, 중계는 먼저 중계 진입점으로 들어간 뒤 대상 출구로 전달하는 방식입니다. IEPL 전용 회선은 국가 간 구간의 전용 전송 구성에 초점을 둡니다. 이들은 경로와 적용 상황에 영향을 주지만 로컬 기기의 프록시 인계를 대신하지는 않습니다. 회선 자체가 정상이어도 시스템 프록시가 활성화되지 않았거나 규칙이 직접 연결에 적용되면 앱은 해당 회선을 이용하지 않습니다.
플랫폼별 일반적인 차이와 처리 순서
데스크톱 운영체제는 대개 시스템 프록시와 가상 네트워크 인터페이스 모드를 모두 지원하지만 TUN에는 추가 권한이 필요한 경우가 많습니다. 권한이 부여되지 않아도 클라이언트 화면에는 노드가 연결된 것으로 표시될 수 있지만 라우팅이 완전히 설치되지 않을 수 있습니다. 이런 경우 시스템에 네트워크 확장, 가상 네트워크 인터페이스 또는 관리자 권한 승인 요청이 나타났는지 확인하고 승인한 뒤 연결을 다시 만드세요.
모바일 운영체제는 일반적으로 시스템이 제공하는 VPN 인터페이스로 트래픽을 인계합니다. 다른 네트워크 도구, 콘텐츠 필터 또는 기업 관리 설정이 관련 인터페이스를 사용 중이면 새 연결이 예상대로 작동하지 않을 수 있습니다. 시스템 네트워크 설정에서 현재 적용된 구성을 확인하고 앱 내부 버튼만 보지 마세요. 절전 정책이 백그라운드에서 클라이언트 연결을 유지하지 못하게 할 수도 있어, 전면에서는 잠시 작동하다가 앱을 전환하면 끊기는 현상이 나타날 수 있습니다.
명령줄 프로그램마다 프록시 환경 변수 지원 방식이 다릅니다. 어떤 도구는 HTTP 프록시를 읽고, 어떤 도구는 SOCKS를 지원하며, 어떤 도구는 시스템 프록시를 완전히 무시합니다. 명령줄 요청을 테스트할 때는 먼저 해당 도구의 프록시 문서를 확인하세요. 프록시를 지원하지 않는 프로그램까지 통합적으로 인계하려면 브라우저 확인 결과를 터미널에 그대로 적용하기보다 TUN 모드를 검토해야 합니다.
- ✅ 먼저 클라이언트에서 올바른 노드와 실행 모드를 선택했는지 확인합니다.
- ✅ 그런 다음 외부 출구 조회로 기준 브라우저를 확인합니다.
- ✅ 이어서 DNS 위치와 브라우저의 독립 해석 설정을 점검합니다.
- ✅ 그다음 문제가 있는 앱에서 프록시, 권한, 규칙 적용 여부를 따로 확인합니다.
- ✅ 마지막으로 노드나 프로토콜을 바꾸어 한 번에 여러 조건을 변경하지 않도록 합니다.
- ❌ 로그를 확인하지 않은 채 설정을 연속으로 바꾸면 원래 문제를 재현할 수 없게 됩니다.
그래도 작동하지 않을 때의 전체 점검 목록
기본 확인을 마친 뒤에도 원인을 찾지 못했다면 로컬 기기에서 원격 서비스까지 경로 순서대로 다시 점검하세요. 먼저 잘못된 구독 선택과 클라이언트 모드 문제를 제외하고, 그다음 시스템 권한, 앱의 설정 덮어쓰기, DNS와 캐시를 확인한 뒤 마지막으로 노드 연결과 대상 서비스 제한을 살펴보세요. 이렇게 해야 원인과 결과의 관계를 명확하게 유지할 수 있습니다.
- 현재 선택한 노드가 오래된 설정이나 중복 그룹이 아니라 현재 사용 중인 구독에서 가져온 것인지 확인합니다.
- 클라이언트 모드가 시스템 프록시, TUN, 앱 내 프록시 중 예상한 옵션으로 설정되어 있는지 확인합니다.
- 운영체제가 프록시, 가상 네트워크 인터페이스, 네트워크 확장 권한을 허용했는지 확인합니다.
- 경로를 끊고 원래 외부 출구를 기록한 다음 다시 연결해 새 브라우징 세션으로 비교합니다.
- DNS 위치를 확인하고 브라우저가 해석 경로를 별도로 덮어쓰고 있지 않은지 확인합니다.
- 클라이언트 로그에서 테스트 도메인을 찾아 직접 연결 규칙이 아니라 프록시 규칙에 적용됐는지 확인합니다.
- 다른 앱에서 외부 출구 확인을 반복해 문제가 전체적인지 특정 앱에만 해당하는지 판단합니다.
- 기존 페이지와 연결을 닫은 뒤 다시 테스트해 캐시, 세션, 연결 재사용의 영향을 제외합니다.
- 설정을 바꾸지 않은 상태에서 노드를 변경해 특정 노드의 연결 문제인지 판단합니다.
- 필요한 로그와 재현 절차를 보관한 뒤 구체적인 장애 정보를 서비스 지원팀에 전달합니다.
문의를 제출할 때 운영체제, 클라이언트 이름, 사용 모드, 프로토콜 유형, 문제가 발생한 앱, 외부 출구 변경 여부, DNS 변경 여부, 로그의 오류 유형을 함께 적는 것이 좋습니다. 인증 정보와 전체 구독 링크는 스크린샷이나 문의 본문에 포함하지 마세요. 개인정보를 가린 로그가 ‘연결되지 않음’이라는 설명보다 원인 파악에 훨씬 유용합니다.
최종 판단 기준은 클라이언트 아이콘의 색이 바뀌었는지가 아니라 대상 앱의 요청 경로가 예상과 일치하는지입니다. 외부 출구 위치가 올바르고 DNS 경로를 설명할 수 있으며 분할 라우팅 규칙이 올바르게 적용되고, 앱별 차이를 각자의 프록시 설정으로 설명할 수 있어야 합니다. 이 순서대로 확인하면 ‘연결된 것처럼 보이지만 실제로는 경로를 이용하지 않는’ 문제 대부분을 구체적인 단계로 좁힐 수 있습니다.