v2rayN, v2rayNG 또는 v2flyNG가 실행 중으로 표시되지만 브라우저가 계속 시간 초과되거나 일부 웹사이트에 접속할 수 없거나 모든 요청이 실패할 때 유용합니다. 로컬 리스너, 트래픽 가로채기, DNS, 라우팅, 노드 출구, 로그 순서로 점검하고 각 단계마다 독립적으로 테스트하면 어느 구간에서 문제가 발생했는지 확인할 수 있습니다.
먼저 ‘연결됨’이 의미하는 계층을 구분하세요
클라이언트 화면의 실행 상태는 보통 코어 프로세스가 시작되었거나 Android에서 로컬 네트워크 인터페이스가 생성되었다는 뜻입니다. 원격 노드와의 핸드셰이크가 완료되었다는 의미도, 브라우저 트래픽이 프록시로 들어갔다는 의미도 아닙니다. 점검할 때는 경로를 애플리케이션 요청, 로컬 프록시 포트, DNS 조회, 원격 노드, 대상 웹사이트의 다섯 구간으로 나눠야 합니다.
v2rayN 7.14.3의 일반적인 설정을 예로 들면 로컬 SOCKS 포트는 보통 127.0.0.1:10808, HTTP 포트는 보통 127.0.0.1:10809입니다. 포트는 「설정」→「매개변수 설정」→「기본 설정」에서 변경할 수 있으므로 실제 점검에서는 현재 클라이언트에 표시된 값을 사용해야 하며 기본값을 그대로 복사해서는 안 됩니다.
먼저 브라우저 확장 프로그램의 독립 프록시 설정을 잠시 끄고, 시스템 프록시나 가상 네트워크 어댑터를 가로챌 수 있는 다른 프로그램을 종료한 뒤 클라이언트를 다시 시작하세요. 이는 문제를 바로 해결하는 방법이 아니라 동시에 사용되는 경로를 줄이기 위한 조치입니다. 한 애플리케이션은 시스템 프록시를 사용하고 다른 애플리케이션은 사용자 지정 SOCKS 포트를 사용해 테스트 결과가 서로 달라지는 상황을 피할 수 있습니다.
결론: 실행 상태만으로는 요청 테스트를 대신할 수 없습니다
로컬 포트가 리슨 중이 아니거나 브라우저가 요청을 해당 포트로 보내지 않았다면 원격 노드의 사용 가능 여부는 아직 테스트 대상이 아닙니다.
1단계: 로컬 포트와 시스템 프록시 확인
Windows에서는 먼저 PowerShell을 열고 v2rayN의 로컬 SOCKS 포트로 TCP 연결을 만들 수 있는지 확인하세요. 포트를 변경했다면 명령의 10808을 「매개변수 설정」에 표시된 값으로 바꾸세요. 테스트 성공은 포트가 리슨 중이라는 뜻일 뿐, 원격 출구가 정상이라는 뜻은 아닙니다.
Test-NetConnection 127.0.0.1 -Port 10808
결과의 TcpTestSucceeded는 True여야 합니다. False라면 먼저 v2rayN 기본 창에서 노드를 하나 선택했는지 확인한 다음 「서버」→「활성 서버로 설정」을 실행하고 코어를 다시 시작하세요. 그래도 실패하면 로그에서 포트 충돌이나 설정 로드 오류가 있는지 직접 확인하세요.
로컬 포트가 정상이라면 v2rayN의 시스템 프록시 모드를 확인하세요. 일반 브라우저로 테스트할 때는 트레이 메뉴에서 「시스템 프록시 자동 구성」을 선택할 수 있습니다. Windows의 「설정」→「네트워크 및 인터넷」→「프록시」에는 클라이언트가 기록한 로컬 프록시 설정이 표시되어야 합니다. 클라이언트를 종료한 뒤에도 이전 프록시 주소가 남아 있다면 시스템 프록시를 끈 후 클라이언트를 다시 시작하세요.
- 사용 가능한 서버를 하나 명확히 선택하고 활성 서버로 설정합니다.
- 로컬 리스닝 주소가
127.0.0.1인지 확인하고 SOCKS와 HTTP 포트가 중복되지 않았는지 확인합니다. - 「시스템 프록시 자동 구성」을 활성화한 뒤 브라우저를 완전히 종료하고 다시 엽니다.
- 독립적인 프록시 규칙이 없는 브라우저 창에서 서로 다른 도메인 두 곳에 접속해 모두 실패하는지 특정 도메인만 실패하는지 기록합니다.
2단계: 브라우저를 거치지 않고 프록시 출구 테스트
브라우저에 이전 프록시 설정, DNS 캐시 또는 확장 프로그램 규칙이 남아 있을 수 있습니다. 문제가 브라우저 이전 단계에 있는지 이후 단계에 있는지 확인하려면 로컬 프록시 포트로 직접 요청을 보내세요. macOS와 Linux에서는 터미널에서 curl을 사용할 수 있으며, Windows에서도 해당 명령줄 도구가 설치되어 있다면 같은 테스트를 실행할 수 있습니다.
curl --proxy socks5h://127.0.0.1:10808 https://v2rayroot.com/ -I --connect-timeout 10
socks5h의 h는 도메인 조회를 SOCKS 경로를 통해 수행한다는 뜻입니다. HTTP/2 200, HTTP/1.1 200 또는 정상적인 리디렉션 상태가 반환되면 로컬 포트, 노드, 원격 DNS가 최소 한 번은 전체 요청을 처리할 수 있다는 의미입니다. 이 경우 웹페이지가 열리지 않는 원인은 브라우저 프록시, 캐시, 확장 프로그램 또는 시스템 연결 설정일 가능성이 높습니다.
명령 실행 직후 127.0.0.1에 연결할 수 없다는 메시지가 나오면 로컬 리스닝 문제입니다. 약 10초 후 시간 초과가 발생한다면 로컬 포트는 대개 요청을 받아들였지만 원격 노드나 대상 방향에서 응답하지 않은 것입니다. 하나의 도메인만 실패한다면 라우팅 규칙, 도메인 조회 또는 대상 서비스 상태를 확인하고 모든 설정을 바로 바꾸지는 마세요.
| 테스트 결과 | 경로 판단 | 다음 단계 |
|---|---|---|
| 로컬 포트 연결 거부 | 코어가 리슨하지 않거나 포트 입력이 잘못됨 | 10808 확인, 코어 재시작, 포트 충돌 점검 |
| 10초 연결 시간 초과 | 노드 핸드셰이크 또는 출구 이상 | 노드를 바꾸고 코어 로그 확인 |
| 명령 성공, 브라우저 실패 | 프록시 핵심 경로 정상 | 브라우저 및 시스템 프록시 설정 초기화 |
| 일부 도메인만 실패 | DNS 또는 분기 규칙 적용 이상 | 비교를 위해 잠시 전체 프록시 사용 |
3단계: DNS와 라우팅 분기 점검
DNS 문제는 노드 지연 시간 테스트에는 값이 표시되지만 도메인을 입력하면 웹페이지가 계속 대기하는 방식으로 나타나는 경우가 많습니다. 지연 시간 테스트는 노드 주소에 직접 연결할 수 있지만 브라우저는 대상 도메인도 조회해야 합니다. 먼저 시스템 터미널에서 nslookup v2rayroot.com을 실행해 로컬 환경에서 주소를 얻는지 확인한 다음 앞서 소개한 socks5h 명령을 사용해 로컬 조회 결과와 프록시 측 조회 결과를 비교하세요.
IP 주소로는 접속되지만 도메인으로는 접속되지 않는다면 DNS를 우선 점검하세요. v2rayN 7.x에서는 「설정」→「매개변수 설정」에서 DNS 관련 설정으로 이동할 수 있습니다. 점검 단계에서는 복잡한 규칙을 여러 그룹 추가하지 말고 클라이언트의 기본 설정으로 되돌린 뒤 저장하고 코어를 다시 시작하세요. 시스템에서는 DNS 캐시도 지울 수 있습니다. Windows에서는 ipconfig /flushdns를 사용한 다음 브라우저를 완전히 종료하고 다시 여세요.
일부 웹사이트만 실패한다면 라우팅 모드를 잠시 전체 프록시로 바꿔 비교하세요. 전체 모드에서는 정상이고 규칙 모드에서는 실패한다면 노드 자체는 정상일 가능성이 높으며 도메인 규칙, IP 규칙 또는 직접 연결 출구에 문제가 집중되어 있을 수 있습니다. 사용자 지정 규칙을 확인할 때는 우선순위에 특히 주의하세요. 앞쪽 규칙이 먼저 적용되므로 범위가 지나치게 넓은 직접 연결 규칙 하나가 대상 요청을 프록시 우회로 만들 수 있습니다.
- 모든 도메인 실패: 시스템 DNS, 클라이언트 DNS 설정, 노드 도메인 조회 가능 여부를 확인하세요.
- 도메인은 실패하지만 IP는 성공: 문제를 DNS로 한정하고 프로토콜 매개변수는 당장 변경하지 마세요.
- 전체 모드 성공: 사용자 지정 라우팅 규칙을 하나씩 비활성화해 잘못된 직접 연결 또는 차단 조건을 찾으세요.
- 전체 모드도 실패: 노드 핸드셰이크, 전송 계층, 서버 출구를 계속 점검하세요.
지연 시간이 120ms로 표시되는데 웹페이지는 왜 계속 시간 초과되나요?
지연 시간 테스트는 특정 탐색 요청만 확인합니다. curl --proxy socks5h://127.0.0.1:10808로 전체 HTTPS 요청을 보낸 뒤 노드에 실제 출구 기능이 있는지 판단하세요.
전체 프록시로 전환하면 정상으로 돌아오는데 어디를 수정해야 하나요?
「설정」→「라우팅 설정」에서 사용자 지정 규칙 순서를 확인하세요. 최근 추가한 도메인, GeoIP 또는 직접 연결 규칙을 먼저 비활성화하고 한 그룹씩만 복원하면서 다시 테스트하세요.
구독을 업데이트한 뒤 갑자기 모든 노드가 열리지 않나요?
활성 서버가 삭제되거나 교체되지 않았는지 확인하고 노드를 다시 선택해 활성 서버로 설정하세요. 노드 매개변수가 전체적으로 바뀌었다면 업데이트 후 새 설정을 불러오도록 코어를 반드시 다시 시작해야 합니다.
Android에서 실행됨으로 표시되는데 앱이 여전히 네트워크에 연결되지 않나요?
v2rayNG 또는 v2flyNG에서 먼저 앱별 프록시와 사용자 지정 라우팅을 끄고 노드 하나만 남겨 전체 모드로 테스트하세요. 정상 작동을 확인한 뒤 앱 범위와 분기 규칙을 복원합니다.
4단계: 로그로 노드, 프로토콜, TLS 문제 판단
로컬 포트와 트래픽 연결이 모두 정상이라면 로그가 원격 문제를 판단하는 주요 근거입니다. v2rayN에서는 기본 화면의 로그 영역에서 코어 출력을 확인할 수 있고 「설정」→「매개변수 설정」에서 로그 수준을 조정할 수도 있습니다. 점검에는 보통 info면 충분합니다. 정보가 부족할 때만 일시적으로 상세 수준을 높이고 완료 후 원래대로 되돌려 반복 기록이 판단을 방해하지 않도록 하세요.
VMess와 VLESS라는 프로토콜 이름만으로 설정이 올바르다고 증명할 수는 없습니다. 서버 주소, 포트, 사용자 식별자, 전송 방식, TLS, SNI, 경로, 서비스 이름이 서버 측 설정과 일치해야 합니다. 구독을 가져오면 보통 이러한 필드가 자동으로 채워지지만 그중 하나라도 수동으로 수정하면 TCP 연결은 성립해도 TLS 또는 프로토콜 인증이 실패할 수 있습니다.
오류:failed to listen TCP on 127.0.0.1:10808
원인 및 해결: 로컬 포트를 다른 프로세스가 이미 사용 중입니다. 중복 실행된 클라이언트를 종료하거나 「설정」→「매개변수 설정」에서 사용 중이지 않은 포트로 바꾼 뒤 저장하고 코어를 다시 시작하세요.
오류:failed to find an available destination
원인 및 해결: 아웃바운드 서버 주소를 조회할 수 없거나 사용 가능한 대상이 없습니다. 노드 주소의 철자를 확인하고 기본 DNS 설정으로 되돌린 뒤 코어를 다시 시작하세요.
오류:lookup server.example: no such host
원인 및 해결: 노드 도메인 조회에 실패했습니다. 현재 네트워크의 DNS 사용 가능 여부를 확인하고 구독을 다시 업데이트한 뒤 노드 주소가 수동으로 잘려 있지 않은지 확인하세요.
오류:TLS handshake timeout
원인 및 해결: 클라이언트가 TLS 연결을 시도했지만 제한 시간 안에 핸드셰이크를 완료하지 못했습니다. 서버 포트, SNI, 전송 방식, 시스템 시간을 확인한 뒤 같은 구독의 다른 노드로 비교 테스트를 진행하세요.
오류:connection reset by peer
원인 및 해결: 연결이 원격 서버까지 도달했지만 상대편에서 강제로 재설정했습니다. 프로토콜과 전송 매개변수가 일치하는지 확인하고 다른 노드도 테스트해 단일 노드 문제인지 로컬 네트워크 제한인지 구분하세요.
같은 구독에서 노드 세 개 중 하나만 실패한다면 먼저 해당 노드의 설정이나 서버 상태 문제로 판단하세요. 모든 노드에서 완전히 동일한 로컬 포트 오류가 발생한다면 로컬 설정을 먼저 수정해야 합니다. 모든 TLS 노드가 실패한다면 시스템 날짜, 시간대, 분 단위 시간이 정확한지도 확인하세요. 시간이 크게 어긋나면 인증서 유효 기간 판단에 문제가 생길 수 있습니다.
결론: 동일한 오류가 점검 범위를 결정합니다
단일 노드 오류는 노드 매개변수를, 모든 노드 오류는 로컬 포트·DNS·시스템 환경을 확인하세요. 오류가 동일한지 먼저 비교하는 편이 노드를 무작정 바꾸는 것보다 원인을 찾기 쉽습니다.
5단계: 최소 설정으로 복구한 뒤 기능을 하나씩 추가
앞의 네 단계를 거쳐도 원인을 확인할 수 없다면 최소 설정으로 기준 상태를 만드세요. 최근 정상 구독에서 업데이트한 노드 하나만 남기고 사용자 지정 DNS, 라우팅 규칙, 앱별 프록시, TUN을 끈 뒤 시스템 프록시만 활성화합니다. 클라이언트를 다시 시작한 후 로컬 포트를 테스트하고 프록시 요청 하나를 실행한 다음 브라우저를 여세요.
최소 설정이 정상이라면 정해진 순서대로 기능을 복원하세요. 먼저 DNS, 다음으로 라우팅 분기, 그다음 브라우저 또는 애플리케이션 수준 규칙, 마지막으로 TUN을 복원합니다. 항목 하나를 복원할 때마다 같은 테스트 도메인 두 곳에 접속하고 실패가 시작된 단계를 기록하세요. 이렇게 하면 수십 개의 매개변수 사이에서 추측하지 않고 문제를 한 설정 계층으로 좁힐 수 있습니다.
Android에서 v2rayNG 또는 v2flyNG를 사용할 때도 같은 방식으로 진행하세요. 먼저 노드 하나를 선택하고 사용자 지정 라우팅을 끈 뒤 일반 웹페이지에 접속되는지 확인하고 앱별 설정을 복원합니다. v2rayNG는 Xray 코어를, v2flyNG는 v2fly 코어를 사용합니다. 동일한 구독을 가져와도 코어 지원 범위와 구체적인 전송 매개변수의 차이로 결과가 달라질 수 있습니다.
- 노드 하나, 기본 DNS, 시스템 프록시 또는 기본 네트워크 연결 방식으로 재설정합니다.
127.0.0.1:10808또는 현재 설정된 포트에 연결할 수 있는지 확인합니다.socks5h를 사용하는 요청을 실행해 도메인 조회와 출구 연결이 모두 성공하는지 확인합니다.- 라우팅 규칙을 복원하고 전체 모드와 규칙 모드의 차이를 비교합니다.
- 마지막으로 TUN, 앱별 적용 범위 및 기타 고급 설정을 복원합니다.
| 단절 지점 | 대표적인 증상 | 중점 대응 |
|---|---|---|
| 로컬 리스닝 | 10808 연결 거부 | 코어 시작, 설정 형식, 포트 충돌 |
| 트래픽 연결 | 명령은 성공하지만 브라우저는 실패 | 시스템 프록시, 브라우저 확장 프로그램, 이전 설정 |
| DNS | IP는 접속되지만 도메인은 실패 | 조회 방식, 캐시, 노드 도메인 |
| 라우팅 | 전체 모드는 정상이고 규칙 모드는 실패 | 규칙 우선순위, 직접 연결 조건, 차단 조건 |
| 노드 출구 | 여러 대상에서 핸드셰이크 시간 초과 | 서버 상태, 프로토콜 매개변수, TLS 및 SNI |