이 점검 목록은 v2rayN 또는 v2rayNG가 실행 중이고 연결 상태도 표시되지만 브라우저와 다른 앱에서 인터넷에 접속할 수 없을 때 사용합니다. 노드, 시스템 시간, DNS, 라우팅, 트래픽 전달 순서로 점검하면 구독과 프로토콜 설정을 반복해서 수정하는 일을 줄일 수 있습니다.
먼저 ‘연결됨’이 어느 단계의 상태인지 확인하기
클라이언트에 실행 중이라고 표시된다고 해서 원격 노드와 실제 데이터 교환이 완료된 것은 아닙니다. v2rayN이 Xray 또는 V2Fly 코어를 실행한 뒤 확인되는 것은 로컬 프로세스가 실행 중이고 설정 파일이 기본적으로 해석되었다는 사실뿐입니다. v2rayNG 상단에 키 상태가 표시되거나 시스템에 VPN 연결이 나타나는 것도 Android의 트래픽 전달 서비스가 구축되었다는 뜻에 가깝습니다. 원격 주소가 해석되는지, 포트에 연결할 수 있는지, 프로토콜 매개변수가 일치하는지는 실제 연결 테스트로 확인해야 합니다.
웹 요청은 애플리케이션, 로컬 프록시 진입점, 라우팅 규칙, 프록시 아웃바운드, 원격 응답을 차례로 거칩니다. 어느 한 단계라도 실패하면 브라우저가 계속 로딩되거나 즉시 연결 재설정이 표시되거나 특정 사이트만 열리지 않을 수 있습니다. 따라서 클라이언트 트레이 아이콘의 색이 바뀌었다고 바로 DNS를 수정하지 말고, 노드 사용 가능성을 확인하기 전에는 라우팅 모드를 계속 바꾸지 마세요.
| 관찰 결과 | 오류 가능성이 높은 위치 | 다음 작업 |
|---|---|---|
| 모든 노드 테스트가 시간 초과 | 로컬 네트워크, 노드 주소 또는 원격 포트 | 먼저 시스템 프록시를 끄고 기본 네트워크와 노드 연결 상태를 확인하세요 |
| 실제 노드 연결 지연은 정상인데 브라우저가 열리지 않음 | 시스템 프록시, 브라우저 전용 프록시 또는 라우팅 규칙 | 로컬 포트와 브라우저가 사용하는 프록시 진입점을 확인하세요 |
| 도메인은 열리지 않지만 알려진 주소에 직접 접속하면 응답이 있음 | DNS 조회 경로 | DNS 설정을 바꾸고 코어를 재시작한 뒤 다시 테스트하세요 |
| 특정 도메인만 실패 | 사용자 지정 라우팅, 도메인 규칙 또는 DNS 분기 | 일시적으로 전역 프록시로 바꿔 규칙 때문인지 확인하세요 |
1단계: 노드 사용 가능성과 시스템 시간 확인
먼저 v2rayN 노드 목록에서 현재 노드를 선택하고 실제 연결 지연 테스트를 실행하세요. 일반 Ping은 대상 호스트가 ICMP에 응답하는지만 확인하므로 VMess, VLESS 또는 다른 프록시 연결이 핸드셰이크를 완료할 수 있는지는 보장하지 않습니다. 실제 연결 테스트는 현재 코어를 통해 아웃바운드 연결을 직접 수립하므로 첫 번째 필터로 더 적합합니다. 같은 구독의 여러 노드가 모두 시간 초과라면 먼저 구독을 업데이트한 뒤, 주소와 포트가 다른 노드 두 개를 골라 교차 테스트하세요.
테스트할 때 구체적인 수치를 기록해 두면 좋습니다. 예를 들어 노드 A의 실제 연결 지연이 186ms이고 세 번 연속 응답한 반면 노드 B는 세 번 모두 5000ms를 넘겨 시간 초과라면, 먼저 노드 A로 다음 단계를 점검해야 합니다. 지연 시간이 높다고 반드시 사용할 수 없는 것은 아니지만, 연속 시간 초과·연결 거부·즉시 핸드셰이크 실패는 대개 브라우저 설정을 바꾼다고 해결되지 않습니다.
- v2rayN 메인 화면에서 노드를 선택하고 실제 연결 지연 테스트를 실행하세요. Ping 결과로 대신 판단하지 마세요.
- 구독 노드를 최소 두 개 전환하고, 매번 테스트가 끝날 때까지 기다리세요. 너무 많은 연결을 동시에 시작하지 않는 것이 좋습니다.
- 실행 로그를 열어 테스트 시 새 아웃바운드 기록이 실제로 생성되었는지 확인하세요. 이전 결과를 읽은 것이 아니어야 합니다.
- v2rayNG에서 현재 설정의 테스트 기능을 누른 뒤 다른 노드로 바꿔 한 번 더 반복하세요.
- Wi-Fi에서 모두 실패한다면 다른 사용 가능한 네트워크로 테스트해 노드 문제와 현재 네트워크 제한을 구분하세요.
시스템 시간 오차는 시간 검증이 필요한 연결에도 영향을 줍니다. Windows에서는 ‘설정’ → ‘시간 및 언어’ → ‘날짜 및 시간’으로 이동해 시간 자동 설정을 켜고 즉시 동기화하세요. Android에서는 시스템 날짜 및 시간 설정에서 네트워크 제공 시간 사용을 활성화하세요. 기기 시간이 표준 시간과 몇 분 이상 차이 난다면 먼저 시간을 보정한 뒤 클라이언트 코어를 완전히 중지하고 다시 시작하세요.
오류: dial tcp: i/o timeout
원인 및 해결:제한 시간 안에 원격 주소와 포트에 TCP 연결을 완료하지 못했습니다. 같은 구독의 다른 노드로 바꾸고 다른 네트워크에서도 다시 테스트하세요. 모두 시간 초과라면 주소 해석과 네트워크 제한을 확인하세요.
오류: connect: connection refused
원인 및 해결:대상 주소에는 도달했지만 해당 포트가 연결을 거부했습니다. 구독을 업데이트하고 노드를 바꾸세요. 원격 거부를 해결하려고 로컬 포트를 반복해서 수정하지 마세요.
오류: invalid user
원인 및 해결:서버가 현재 사용자 매개변수를 받아들이지 않았습니다. 구독을 다시 업데이트하고 사용자 식별자, 암호화 방식, 노드 추가 매개변수를 수동으로 변경하지 않았는지 확인하세요.
2단계: DNS 해석 오류 위치 찾기
노드 테스트는 성공했지만 도메인을 입력한 뒤 웹페이지가 계속 대기한다면 DNS를 다음으로 확인해야 합니다. DNS는 도메인을 연결 가능한 주소로 변환하는 역할을 합니다. 프록시 아웃바운드가 정상이어도 로컬 DNS, 코어 DNS, 시스템 비공개 DNS의 조합이 현재 환경에 맞는다고 보장할 수는 없습니다. 특히 사용자 지정 설정을 가져왔거나 분기 규칙을 수정했거나 암호화 DNS를 활성화한 경우, 도메인 조회가 현재 네트워크에 적합하지 않은 경로로 전송될 수 있습니다.
v2rayN 7.x에서는 ‘설정’ → ‘매개변수 설정’에서 기본 설정과 DNS 관련 옵션을 확인할 수 있습니다. 사용자 지정 DNS 설정을 사용한다면 먼저 원본을 저장한 뒤 클라이언트 기본 설정으로 되돌려 비교하세요. 변경 후에는 코어를 재시작해야 하며, 브라우저 탭만 닫아서는 코어가 설정을 다시 불러오지 않습니다. Windows에서는 터미널에서 시스템에 내장된 조회 명령을 실행해 로컬에서 해석 결과를 얻는지도 확인할 수 있습니다.
nslookup example.com
ipconfig /flushdns
nslookup에서 주소가 반환되었다고 해서 시스템 조회 경로에 결과가 있다는 뜻일 뿐, 코어 내부에서도 같은 DNS를 사용한다는 의미는 아닙니다. 시스템 조회는 성공하지만 v2rayN 로그에서 계속 도메인 해석 실패가 발생한다면 코어 DNS 설정과 라우팅 규칙을 확인하세요. 시스템 조회 자체가 시간 초과라면 네트워크 어댑터 DNS를 자동으로 되돌리고 캐시를 비운 뒤 다시 테스트하세요.
오류: failed to find an available destination
원인 및 해결:아웃바운드 대상에 사용할 수 있는 주소를 얻지 못했습니다. 노드 도메인 또는 대상 도메인 해석 실패가 흔한 원인입니다. 노드 주소가 완전한지 확인하고 기본 DNS로 되돌린 뒤 코어를 재시작하세요.
오류: no such host
원인 및 해결:DNS 조회에서 해당 호스트 기록을 반환하지 않았습니다. 구독의 서버 도메인에 불필요한 공백이 없는지 확인하고 시스템 DNS와 코어 DNS를 각각 테스트하세요.
오류: context deadline exceeded
원인 및 해결:조회 또는 연결 작업이 대기 시간을 초과했습니다. 앞뒤 로그를 함께 확인해 시간 초과가 DNS에서 발생했는지 원격 연결에서 발생했는지 판단하세요. 이 한 줄만 보고 노드가 만료되었다고 단정하지 마세요.
3단계: 전역 프록시로 라우팅 규칙 오판 배제
라우팅 규칙은 요청을 프록시로 보낼지, 직접 연결할지, 차단할지를 결정합니다. 사용자 지정 규칙의 도메인, IP 대역, 포트, 인바운드 태그가 잘못 매칭되면 노드 자체는 정상인데 특정 사이트나 앱만 계속 접속할 수 없게 됩니다. 규칙은 보통 정해진 순서대로 매칭되므로, 범위가 지나치게 넓은 직접 연결 규칙이 이후의 프록시 규칙보다 먼저 요청을 가로챌 수 있습니다.
가장 직접적인 진단 방법은 규칙을 바로 삭제하는 것이 아니라 잠시 전역 프록시 모드로 바꾼 뒤 같은 도메인에 접속하는 것입니다. 전역 프록시에서는 열리지만 기존 라우팅 모드에서는 실패한다면 문제 범위를 분기 설정으로 좁힐 수 있습니다. 테스트가 끝나면 원래 모드로 되돌리고 사용자 지정 규칙의 매칭 대상과 아웃바운드 동작을 하나씩 확인하세요.
| 테스트 상황 | 전역 프록시 결과 | 기존 라우팅 결과 | 판단 |
|---|---|---|---|
| 같은 브라우저, 같은 도메인 | 접속 가능 | 접속 불가 | 도메인 및 IP 분기 규칙을 우선 확인 |
| 같은 노드, 여러 도메인 | 모두 실패 | 모두 실패 | 문제는 노드, DNS 또는 트래픽 진입점에 있을 가능성이 높음 |
| 브라우저는 성공하지만 독립 앱은 실패 | 브라우저 사용 가능 | 앱 사용 불가 | 앱이 시스템 프록시를 따르지 않을 수 있으므로 TUN 또는 앱 내 프록시가 필요함 |
| 도메인은 성공하지만 고정 IP는 실패 | 결과가 일치하지 않음 | 결과가 일치하지 않음 | IP 규칙, 대상 포트, 프로토콜 제한을 확인 |
VMess와 VLESS는 노드 연결 프로토콜이고, 라우팅 규칙은 어떤 요청을 해당 노드로 보낼지 결정합니다. 둘은 같은 항목으로 취급할 수 없습니다. 잘못된 직접 연결 규칙은 프로토콜 매개변수를 바꿔도 해결되지 않으며, 반대로 잘못된 사용자 식별자·전송 계층 매개변수·서버 포트는 전역 프록시로 바꿔도 해결되지 않습니다.
결론: 전역 프록시는 위치 파악용이며 기본 해법이 아님
같은 노드가 전역 모드에서는 작동하고 분기 모드에서는 실패한다면 노드 설정은 유지한 채 규칙 순서와 아웃바운드 동작을 집중적으로 확인하세요. 변수를 늘리지 않도록 노드를 계속 바꾸지 마세요.
4단계: v2rayN 시스템 프록시와 로컬 포트 확인
Windows, macOS, Linux 데스크톱 앱이 프록시 경로를 사용하는지는 시스템 프록시를 읽는지, 별도 프록시가 설정되어 있는지, 현재 TUN이 활성화되어 있는지에 따라 달라집니다. v2rayN 코어가 실행 중이면 보통 로컬에서 SOCKS 또는 HTTP 진입 포트를 수신합니다. 시스템 프록시가 실제 수신 포트를 가리키지 않으면 브라우저가 계속 직접 연결되거나, 이전 포트를 가리켜 페이지가 전혀 열리지 않을 수 있습니다.
v2rayN에서 먼저 ‘설정’ → ‘매개변수 설정’을 열고 로컬 SOCKS, HTTP 또는 혼합 진입 포트를 확인하세요. 일반적인 설정에서는 127.0.0.1:10808을 SOCKS 진입점으로 사용하고 127.0.0.1:10809를 HTTP 진입점으로 사용할 수 있지만, 실제 값은 현재 화면을 기준으로 해야 합니다. 그런 다음 트레이 메뉴에서 시스템 프록시 자동 설정을 선택하고 시스템 프록시 주소가 클라이언트의 현재 포트와 일치하는지 확인하세요.
- 로컬 주소는 먼저
127.0.0.1인지 확인하고, 원격 노드 주소를 시스템 프록시에 입력하지 마세요. - 포트를 변경한 뒤에는 반드시 코어를 재시작하고 시스템 프록시 설정을 다시 적용해야 합니다.
- 브라우저에 수동 프록시가 설정되어 있다면 프로토콜 유형과 포트가 일치하는지 확인하거나, 잠시 시스템 프록시 사용으로 바꾸세요.
- 명령줄 프로그램이 데스크톱 시스템 프록시를 반드시 읽는 것은 아닙니다. 해당 프로그램이 지원하는 프록시 환경 변수나 설정 항목을 확인하세요.
- 다른 프로세스가 포트를 사용 중이면 코어가 시작되지 않거나 해당 인바운드를 생성하지 못할 수 있습니다.
| 앱 유형 | 일반적으로 읽는 설정 | 집중 점검 항목 |
|---|---|---|
| 일반적인 데스크톱 브라우저 | 시스템 프록시 또는 브라우저 전용 프록시 | 주소, HTTP 포트, 예외 목록 |
| 명령줄 터미널 프로그램 | 프로그램 매개변수 또는 프록시 환경 변수 | SOCKS·HTTP 프록시를 명시적으로 지원하는지 여부 |
| 시스템 프록시를 따르지 않는 데스크톱 앱 | TUN 전달 또는 앱 내 프록시 | TUN 상태, 관리자 권한, 라우팅 충돌 |
| LAN의 다른 기기 | 클라이언트가 개방한 LAN 수신 주소 | LAN 접속 허용, 방화벽, 수신 범위 |
오류: bind: Only one usage of each socket address is normally permitted
원인 및 해결:사용하려는 로컬 포트를 다른 프로세스가 점유하고 있습니다. 충돌하는 프로그램을 종료하거나 ‘설정’ → ‘매개변수 설정’에서 사용하지 않는 포트로 바꾼 뒤 코어를 재시작하세요.
오류: connection refused 127.0.0.1:10809
원인 및 해결:앱이 로컬 10809 포트에 연결을 시도했지만 해당 포트에서 프록시 진입점을 수신하고 있지 않습니다. 현재 HTTP 포트를 확인하고 앱 또는 시스템 프록시에 설정된 이전 포트를 업데이트하세요.
5단계: v2rayNG VPN 트래픽 전달과 앱 범위 확인
v2rayNG는 Android에서 일반적으로 시스템 VPN 인터페이스를 통해 트래픽을 전달합니다. 상태 표시줄에 연결 표시가 나타난 뒤에도 시스템이 해당 서비스의 실행을 허용하는지, 앱별 프록시·LAN 우회·라우팅 모드·배터리 관리 설정이 올바른지 확인해야 합니다. 특정 앱 하나만 접속할 수 없고 브라우저는 정상이라면 문제는 대개 노드 자체가 아니라 앱별 선택이나 해당 앱의 네트워크 정책에 있습니다.
먼저 v2rayNG 설정에서 로컬 포트와 라우팅 옵션을 확인한 뒤 앱별 프록시가 활성화되어 있는지 점검하세요. ‘선택한 앱만 프록시’를 활성화했다면 대상 앱이 목록에 있어야 합니다. 반대로 제외 방식이 활성화되어 있다면 대상 앱이 제외 목록에 없어야 합니다. 변경 후 연결을 끊고 몇 초 기다렸다가 다시 연결해 시스템이 VPN 라우팅을 새로 설정하도록 하세요.
v2rayNG는 연결됨으로 표시되지만 모든 앱이 열리지 않을 때는 어떻게 하나요?
먼저 실제 연결 테스트에 성공한 노드로 바꾼 다음 라우팅 모드를 잠시 전역 프록시로 변경하세요. 그래도 실패하면 Android 비공개 DNS, 시스템 시간, 실행 로그를 확인하세요.
브라우저는 열리지만 특정 앱만 계속 실패할 때는 어떻게 하나요?
앱별 프록시 설정으로 들어가 해당 앱이 선택되었거나 제외되었는지 확인하세요. 앱 범위를 바꾼 뒤 연결을 끊었다가 다시 연결하고, 앱을 백그라운드에서 밀어내는 것만으로 끝내지 마세요.
화면을 잠근 뒤 한동안 지나면 프록시가 작동하지 않을 때는 어떻게 하나요?
시스템 앱 설정에서 v2rayNG의 백그라운드 실행을 허용하고 배터리 최적화가 VPN 서비스를 제한하는지 확인하세요. Android 기기마다 메뉴 이름이 다를 수 있으므로 시스템 배터리 관리 화면을 기준으로 판단하세요.
Wi-Fi에서는 되지만 모바일 네트워크에서 연결되지 않을 때는 어떻게 하나요?
노드 주소 해석과 원격 포트를 각각 테스트하고 Wi-Fi에서 얻은 결론을 그대로 적용하지 마세요. 시스템이 v2rayNG의 모바일 데이터 사용을 제한하는지도 확인해야 합니다.
구독을 업데이트한 뒤 기존 노드가 모두 작동하지 않을 때는 어떻게 하나요?
해당 구독 그룹을 수동으로 업데이트하고 목록의 시간이 변경되었는지 확인한 뒤 서로 다른 노드 두 개를 테스트하세요. 로그에 사용자 매개변수 오류가 표시되면 구독으로 새로 생성된 설정을 사용하고 수동 편집본을 계속 사용하지 마세요.
v2flyNG에서 V2Fly 코어를 사용할 때도 비슷한 Android 트래픽 전달 방식을 따르지만, 코어 지원 범위와 로그 내용은 다를 수 있습니다. v2rayNG 전용 Xray 설정을 v2flyNG에 그대로 적용하지 마세요. 구독에 특정 코어가 필요한 매개변수가 포함되어 있다면 노드 요구 사항에 맞는 클라이언트와 코어를 선택하세요.
마지막으로 정해진 순서대로 다시 테스트하고 로그를 확인하기
각 항목을 점검한 뒤에는 같은 조건으로 다시 테스트해야 합니다. 같은 네트워크, 같은 노드, 같은 도메인, 같은 브라우저를 사용하세요. 매번 테스트 대상을 바꾸면 페이지가 다시 열려도 실제 원인을 판단하기 어렵습니다. 마지막 빨간색 메시지만 캡처하지 말고 로그 창을 열어 둔 채 코어 시작 시점부터 확인하는 것이 좋습니다.
로그는 시간 순서대로 읽어야 합니다. 먼저 로컬 진입점이 요청을 받았는지 확인하고, 다음으로 어떤 아웃바운드가 선택되었는지 살펴본 뒤, 해석·연결·핸드셰이크·원격 응답 중 어느 단계에서 실패했는지 판단하세요. timeout 한 줄은 작업이 제한 시간을 넘겼다는 뜻일 뿐입니다. 앞뒤 줄에 표시된 대상 주소, 아웃바운드 태그, DNS 정보가 실제 처리 방향을 결정합니다.
- 시스템 프록시를 끄거나 Android VPN 연결을 해제해 기기 자체의 기본 네트워크가 일반 페이지에 접속할 수 있는지 확인하세요.
- 시스템 시간을 보정하고 구독을 업데이트한 뒤 실제 연결 테스트에 성공한 노드를 선택하세요.
- 코어를 시작한 뒤 로그를 확인해 설정 해석 실패나 로컬 포트 충돌이 없는지 확인하세요.
- 잠시 전역 프록시를 사용해 같은 도메인을 테스트하고 사용자 지정 라우팅 규칙을 배제하세요.
- 기본 DNS로 되돌려 비교하고 코어를 재시작한 뒤 브라우저 또는 시스템 DNS 캐시를 비우세요.
- 데스크톱에서 시스템 프록시를 다시 적용하고
127.0.0.1과 실제 수신 포트를 확인하세요. - Android에서 VPN을 다시 연결하고 앱별 범위, 비공개 DNS, 백그라운드 실행 권한을 확인하세요.
- 정상 복구를 확인한 뒤 사용자 지정 설정을 하나씩 되돌리고, 각 항목을 복원할 때마다 다시 테스트하세요.
오류: failed to start
원인 및 해결:코어가 정상 실행 상태로 진입하지 못했습니다. 설정 해석 실패, 파일 접근 불가, 포트 충돌 등이 흔한 원인입니다. 해당 줄 이전에 나타난 첫 번째 구체적인 오류부터 처리하고 브라우저 테스트는 계속하지 마세요.
오류: proxy/vmess/encoding: invalid user
원인 및 해결:VMess 사용자 매개변수가 승인되지 않았습니다. 구독을 다시 업데이트해 새로 생성된 노드 설정을 사용하고, 기기 시간을 확인한 뒤 다시 연결하세요.
오류: transport/internet: failed to dial
원인 및 해결:코어가 하위 전송 연결을 수립하지 못했습니다. 같은 로그 구간의 대상 주소와 내부 오류를 계속 확인해 DNS, 시간 초과, 연결 거부, 전송 매개변수 불일치 중 무엇인지 구분하세요.
결론: 이전 단계가 정상임을 확인한 뒤 다음 단계로 진행
노드 실제 연결이 성공한 뒤 DNS를 확인하고, DNS가 정상인 다음 라우팅을 확인한 뒤 마지막으로 시스템 프록시 또는 VPN 전달을 점검하세요. 이 순서를 따르면 ‘연결됨이지만 인터넷 접속 불가’라는 모호한 현상을 수정 가능한 하나의 설정 항목으로 좁힐 수 있습니다.