이 체크리스트는 v2rayNG 속도 측정에 시간 초과가 표시되거나, 실행 후 계속 연결이 끊기거나, 같은 구독의 모든 노드를 갑자기 사용할 수 없게 된 안드로이드 사용자에게 적합합니다. 점검 순서는 증상 확인, 시스템과 네트워크 보정, 구독 갱신, 전송 파라미터 확인, TLS 또는 REALITY 점검, DNS 및 VPN 충돌 확인입니다. 각 단계를 마칠 때마다 실제 연결 테스트를 다시 실행하면 문제의 범위를 더 빠르게 좁힐 수 있습니다.
1단계: 속도 측정 시간 초과, 연결 시간 초과, 핸드셰이크 실패 구분하기
v2rayNG에서 표시되는 ‘시간 초과’가 항상 서버 오프라인을 뜻하는 것은 아닙니다. 목록의 지연 시간 측정, 실제 연결 테스트, 실행 후 코어 로그는 서로 다른 단계를 확인합니다. 지연 시간이 비어 있다면 테스트 대상에 접근할 수 없는 것일 수 있고, 시작을 누르자마자 중지되면 설정 로드 또는 핸드셰이크 오류에 가깝습니다. 실행 상태는 정상인데 웹페이지가 열리지 않는다면 라우팅, DNS, 기기의 VPN 환경을 계속 점검해야 합니다.
이 글은 v2rayNG 1.10.x의 일반적인 화면을 기준으로 설명합니다. 세부 버전에 따라 버튼 위치는 조금 다를 수 있지만 점검 방법은 같습니다. 먼저 노드 하나를 선택해 실제 연결 테스트를 실행한 뒤, 사이드 메뉴의 ‘로그’에서 마지막 20~40줄을 확인하세요. 처음부터 UUID, 포트, 전송 설정을 일괄 수정하면 원래 오류가 덮어써질 수 있습니다.
오류: context deadline exceeded
원인 및 해결: 제한 시간 안에 연결이 완료되지 않은 상태입니다. 서버 포트에 접근할 수 없거나, 모바일 네트워크에서 패킷이 손실되거나, 핸드셰이크 데이터가 반환되지 않을 때 흔히 발생합니다. 먼저 Wi-Fi와 모바일 네트워크를 번갈아 사용해 테스트한 다음 주소와 포트를 확인하세요.
오류: dial tcp: i/o timeout
원인 및 해결: 대상 IP와 TCP 포트에 연결하는 과정에서 시간 초과가 발생했습니다. 같은 노드가 두 네트워크에서 모두 실패한다면 서버 주소가 변경되지 않았는지, 포트가 아직 열려 있는지 먼저 확인하세요.
오류: failed to find an available destination
원인 및 해결: 대상 도메인에서 사용할 수 있는 주소를 찾지 못했거나 DNS 응답이 현재 네트워크에 맞지 않는 상태입니다. 노드 도메인의 철자를 확인하고 DNS 설정을 바꾼 뒤 연결을 다시 시작하세요.
먼저 세 가지 결과 기록하기
- 목록의 지연 시간만 보지 말고 단일 노드의 실제 연결 테스트 결과를 기록합니다.
- 시작에 실패했을 때 로그에 처음 나타난 오류를 기록합니다. 이후 반복되는 오류는 대개 연쇄적으로 발생한 결과입니다.
- 문제가 한 노드에만 발생하는지, 같은 구독의 모든 노드에 발생하는지, 기기의 모든 설정에 발생하는지 확인합니다.
노드 하나만 실패하고 같은 구독의 다른 노드는 정상이라면 해당 노드의 주소, 포트 또는 전송 파라미터에 문제가 집중되어 있을 가능성이 큽니다. 모든 노드가 같은 시각에 동시에 실패한다면 노드를 하나씩 편집하기보다 시스템 시간, 구독 상태, 현재 네트워크와 앱 권한을 먼저 확인하세요.
2단계: 시스템 시간을 보정한 뒤 기본 네트워크 비교하기
TLS 인증서 검증과 REALITY 핸드셰이크는 기기 시간에 의존합니다. 날짜가 하루 어긋나거나 시간대가 잘못 설정되거나 시스템 시간이 몇 분 늦어도 인증서가 아직 유효하지 않거나 이미 만료된 것으로 판단될 수 있습니다. 안드로이드 기기에서 네트워크 제공 자동 시간과 자동 시간대를 켠 뒤, v2rayNG를 완전히 종료하고 코어를 다시 시작하세요.
기본 네트워크 비교도 중요합니다. 먼저 v2rayNG 연결을 끊고 일반 네트워크에서 자주 사용하는 웹사이트가 열리는지 확인하세요. 그런 다음 현재 Wi-Fi와 모바일 네트워크에서 같은 노드를 각각 테스트합니다. 모바일 네트워크는 연결되고 Wi-Fi에서 시간 초과가 발생한다면 라우터 DNS, 게스트 네트워크 제한, 상위 네트워크를 중점적으로 확인하세요. Wi-Fi는 연결되지만 모바일 네트워크에서 실패한다면 현재 접속 지점, IPv6 경로 또는 네트워크 품질과 관련 있을 수 있습니다.
-
시간 보정
시스템 ‘설정’→‘시스템’→‘날짜 및 시간’으로 이동해 ‘자동으로 시간 설정’과 ‘자동 시간대’를 켭니다. 안드로이드 버전에 따라 ‘시스템’ 메뉴의 이름은 조금 다를 수 있습니다.
-
연결 중지
v2rayNG로 돌아가 하단 연결 버튼을 눌러 서비스를 중지한 다음 최근 앱 화면에서 앱을 닫습니다. 약 5초 후 다시 실행하세요.
-
직접 연결 테스트
프록시를 끈 상태에서 브라우저로 안정적인 웹사이트 두 곳에 각각 접속해 일반 DNS와 기본 네트워크가 정상인지 확인합니다.
-
네트워크 교차 전환
같은 노드를 Wi-Fi와 모바일 네트워크에서 각각 테스트합니다. 각 네트워크에서 연속 3회 테스트하고 시간 초과가 안정적으로 재현되는지 기록하세요.
-
로그 보관
연결을 다시 시작하고 사이드 메뉴의 ‘로그’로 들어가 가장 먼저 나타난 오류 유형과 발생 시간을 저장합니다. 마지막 한 줄만 캡처하지 마세요.
시스템의 배터리 절전 제한도 잠시 해제해야 합니다. 시스템 ‘설정’→‘앱’→‘v2rayNG’→‘배터리’로 이동해 연결 중 앱이 정상적으로 실행되도록 허용하세요. 일부 기기는 화면이 잠긴 뒤 백그라운드 VPN 서비스를 제한합니다. 연결 직후에는 작동하다가 수십 초 후 끊기는 증상은 서버 속도 측정 시간 초과와는 다른 문제입니다.
3단계: 구독 유효성 확인 및 로컬 노드 데이터 갱신
구독 링크는 설정을 배포하는 통로일 뿐이며, 노드 사용 가능 여부는 구독 상태와 서버 설정에 달려 있습니다. 구독 만료, 트래픽 한도 초과, 그룹 권한 변경으로 인해 오래된 노드가 목록에 남아 있어도 실제 연결은 모두 시간 초과될 수 있습니다. 노드 이름이 보인다는 사실만으로 로컬 설정이 최신이라고 판단할 수 없습니다.
먼저 v2rayNG 사이드 메뉴의 ‘구독 그룹’에서 구독 주소가 완전하고 해당 그룹이 활성화되어 있는지 확인한 뒤 ‘구독 업데이트’를 실행하세요. 업데이트 후 노드 수, 이름, 포트가 바뀌었는지 살펴봅니다. 업데이트 자체가 시간 초과되면 프록시 연결을 끊고 현재 직접 연결 네트워크에서 업데이트하세요. 사용 가능한 노드가 있다면 구독 설정에서 프록시를 통한 업데이트를 켠 뒤 다시 시도할 수도 있습니다.
구독 갱신 시 확인할 항목
- 구독 주소 앞뒤에 공백이나 줄바꿈이 없고, 메신저에서 잘려 나간 문자가 없는지 확인합니다.
- 업데이트 후 같은 이름의 오래된 노드 복사본이 아니라 새 설정을 선택했는지 확인합니다.
- 구독의 VMess 및 VLESS 노드 UUID가 완전한지 확인합니다. 문자를 직접 삭제하거나 줄이면 안 됩니다.
- 최신 VMess AEAD 설정은 일반적으로
alterId 0을 사용합니다. 출처가 불분명한 오래된 파라미터를 그대로 사용하지 마세요. - VLESS의 암호화 필드는 일반적으로
none이며, 전송 보안은 TLS 또는 REALITY 같은 설정이 담당합니다.
구독을 업데이트한 뒤 노드 수가 0이 되었다면 반복해서 다시 가져오지 마세요. 구독 응답이 유효한지, 그룹 필터 규칙이 노드를 숨기고 있지 않은지 확인합니다. 업데이트는 성공했지만 기존 노드가 전혀 바뀌지 않는다면 해당 구독 그룹을 삭제한 뒤 다시 추가해 볼 수 있습니다. 작업 전에 사용자 지정 라우팅 규칙을 기록해 두어 로컬 변경 사항이 함께 삭제되지 않도록 하세요.
4단계: 주소, 포트, 전송 계층 파라미터를 항목별로 확인
시스템 시간과 구독에 문제가 없다면 노드 편집 화면에서 연결 파라미터를 확인합니다. 가장 기본적인 세 항목은 서버 주소, 포트, 사용자 식별자입니다. 도메인에 공백 하나가 더 들어가거나 포트가 443 대신 8443으로 입력되거나 UUID 한 자리가 빠져도 연결이 실패합니다. 도메인 앞에 https://를 붙여서는 안 되며 WebSocket 경로를 주소 입력란에 넣어서도 안 됩니다.
다음으로 네트워크 유형을 확인합니다. TCP, WebSocket, gRPC는 서로 바꿔 쓸 수 있는 옵션이 아니므로 클라이언트와 서버가 일치해야 합니다. WebSocket은 경로와 Host를 확인하고, gRPC는 serviceName을 확인해야 합니다. TCP와 REALITY를 사용하는 VLESS 노드는 올바른 flow가 필요할 수도 있습니다. 경로와 서비스 이름은 대소문자를 구분하는 경우가 많으므로 /ray와 /Ray는 서로 다른 값으로 취급해야 합니다.
오류: failed to dial WebSocket > bad handshake
원인 및 해결:TCP 연결은 되었지만 WebSocket 업그레이드 핸드셰이크가 거부되었습니다. 노드 편집 화면에서 경로, Host, TLS 스위치와 포트를 확인하고 구독 원본 값과 일치시키세요.
오류: connection reset by peer
원인 및 해결:원격 서버 또는 중간 네트워크가 연결을 강제로 초기화했습니다. 매번 핸드셰이크 직후 발생한다면 전송 유형, 서버 포트, 보안 계층이 서로 맞는지 중점적으로 확인하세요.
오류: invalid user
원인 및 해결:사용자 식별자가 서버에서 승인되지 않았습니다. 구독을 다시 업데이트하고 UUID를 확인하세요. 만료되었거나 직접 복사하면서 일부가 빠진 설정을 계속 사용하지 마세요.
자주 사용하는 전송 파라미터 확인표
- TCP:포트, TLS 또는 REALITY 상태, VLESS flow가 설정에서 지정한 값인지 확인합니다.
- WebSocket:Path가 올바른 슬래시로 시작하는지, Host가 구독과 일치하는지 확인합니다. SNI와 Host를 임의로 바꾸면 안 됩니다.
- gRPC:서비스 이름이 완전한지, 보안 계층 스위치가 서버와 일치하는지 확인합니다. 포트는 보통
443이지만 반드시 그런 것은 아닙니다. - VMess:UUID, 보안 설정, 전송 유형을 확인합니다. 노드 이름만 보고 파라미터를 판단하지 마세요.
- VLESS:UUID, flow, 전송 보안, 서버 이름을 확인하고 특히 REALITY 관련 필드에 주의하세요.
편집 후에는 현재 노드만 테스트하고 바로 일괄 속도 측정을 실행하지 마세요. 한 번에 필드 하나만 변경한 뒤 저장하고 10~15초 동안 연결한 다음 로그가 TCP 시간 초과 단계에서 TLS 또는 전송 핸드셰이크 단계로 진행되는지 확인합니다. 오류 단계가 바뀌었다면 앞선 수정이 실제로 적용된 것입니다. 오류가 완전히 같다면 근거 없는 변경을 되돌리세요.
5단계: TLS, SNI, REALITY 관련 필드 확인
TLS 문제는 TCP 포트가 이미 연결되었어도 보안 핸드셰이크가 완료되지 않는다는 특징이 있습니다. 일반 TLS 노드는 올바른 서버 이름, 즉 일반적인 설정의 SNI가 필요합니다. SNI는 보통 인증서가 적용되는 도메인이며 노드 연결 주소와 완전히 같지 않을 수도 있습니다. 구독에서 이 필드를 제공했다면 원래 값을 그대로 유지하고 IP 주소로 바꾸지 마세요.
인증서 검증에 실패하면 먼저 시스템 시간, 도메인, 설정 출처를 처리해야 하며 ‘안전하지 않은 연결 허용’을 장기적인 해결책으로 사용해서는 안 됩니다. 검증을 끄면 도메인이나 인증서 설정 오류를 가릴 뿐이고 포트, 경로, REALITY 파라미터 불일치는 해결하지 못합니다.
오류: x509: certificate has expired or is not yet valid
원인 및 해결:기기 시간이 잘못되었거나 서버 인증서가 실제로 유효 기간을 벗어났습니다. 먼저 자동 시간을 활성화하세요. 시간이 정확한데도 오류가 계속되면 노드 설정을 업데이트하거나 서버 측 처리를 기다려야 합니다.
오류: x509: certificate is valid for another name
원인 및 해결:SNI가 인증서 적용 도메인과 일치하지 않습니다. 구독에서 제공한 서버 이름으로 되돌리고 노드 주소를 SNI에 그대로 복사하지 않았는지 확인하세요.
오류: REALITY: processed invalid connection
원인 및 해결:REALITY 핸드셰이크 필드가 일치하지 않습니다. 공개 키, short ID, serverName, 지문, flow를 다시 확인하세요. 구독을 업데이트해 전체 파라미터를 복구하는 방법을 권장합니다.
REALITY 노드 중점 확인 항목
- 프로토콜이 VLESS인지, 네트워크 유형이 설정 설명과 일치하는지 확인합니다.
- 공개 키가 완전하며 복사 과정에서 앞뒤 공백이나 줄바꿈이 들어가지 않았는지 확인합니다.
- short ID가 구독에서 내려온 값인지 확인합니다. 임의로 0을 추가하거나 일부를 삭제하면 안 됩니다.
- serverName이 설정과 일치하는지 확인합니다.
chrome처럼 자주 사용되는 지문 값은 원래 설정대로 입력해야 합니다. - Vision을 사용할 때 flow는 일반적으로
xtls-rprx-vision으로 설정하지만, 구체적인 값은 노드 설정을 따르세요.
같은 구독에서 일반 TLS 노드는 작동하지만 REALITY 노드만 모두 실패한다면 REALITY 필드, 코어 호환성 또는 구독 데이터 문제일 가능성이 큽니다. 이 경우 먼저 v2rayNG가 Xray 코어를 사용하는지 확인하고, 설치 패키지 페이지에서 현재 유지 관리 버전을 받은 뒤 구독을 다시 가져와 테스트하세요.
6단계: DNS, 라우팅 규칙, 기기 VPN 충돌 확인
앞선 다섯 단계가 모두 정상인데 연결 후 웹페이지가 계속 열리지 않는다면 요청이 DNS, 라우팅 매칭, 프록시 아웃바운드를 제대로 통과하는지 확인해야 합니다. 도메인 노드는 DNS 확인에 의존합니다. 사용자 지정 라우팅이 테스트 도메인을 잘못 직접 연결로 보내거나 차단할 수도 있습니다. 시스템에서 다른 VPN 서비스가 동시에 실행 중이면 v2rayNG가 VPN 인터페이스를 만들지 못하거나 연결 직후 다른 서비스로 대체될 수 있습니다.
먼저 단순한 환경으로 되돌립니다. 다른 VPN 서비스를 중지하고 자동 네트워크 전환을 끄며, 사용자 지정 라우팅 규칙을 잠시 비활성화하고 파라미터가 정확한 노드 하나만 남기세요. v2rayNG ‘설정’으로 들어가 현재 DNS 옵션을 기록한 뒤 기본 설정으로 전환하고 연결을 중지했다가 다시 시작합니다. 기본 설정에서 작동한다면 라우팅 규칙과 DNS 설정을 하나씩 다시 추가하세요.
노드는 연결됨으로 표시되는데 왜 모든 웹페이지가 열리지 않나요?
먼저 로그를 열어 계속 재연결되고 있지 않은지 확인한 뒤 사용자 지정 라우팅을 끄고 기본 DNS로 되돌리세요. 로컬 SOCKS 리스너가 활성화되어 있다면 다른 앱이 포트를 사용하고 있지 않은지도 확인해야 합니다. 자주 사용되는 포트는 10808이지만 실제 값은 설정 화면을 따르세요.
IP 주소로는 연결되는데 도메인을 사용하면 시간 초과될 때 어떻게 하나요?
대개 DNS 확인 문제를 가리킵니다. 연결을 끊은 뒤 네트워크를 새로 고치고 v2rayNG 기본 DNS를 복원한 다음 노드 도메인을 테스트하세요. TLS의 SNI와 인증서 검증은 원래 도메인에 의존할 수 있으므로 확인 결과의 IP로 도메인을 장기간 대체하지 마세요.
Wi-Fi에서는 시간 초과되지만 모바일 네트워크에서는 정상적으로 연결되나요?
라우터를 다시 시작하고 게스트 네트워크 제한을 끄며 라우터가 비정상 DNS를 사용하고 있지 않은지 확인하세요. 기기를 Wi-Fi에 다시 연결한 뒤 연속 3회 테스트해 문제가 해당 네트워크에서만 발생하는지 확인할 수도 있습니다.
화면을 잠근 뒤 수십 초 후 연결이 자동으로 끊기면 어떻게 하나요?
시스템 ‘설정’→‘앱’→‘v2rayNG’→‘배터리’로 이동해 엄격한 백그라운드 제한을 해제하고 VPN 서비스가 계속 실행되도록 허용하세요. 이후 화면을 2분간 잠근 상태에서 연결 안정성을 테스트합니다.
구독의 모든 노드가 시간 초과되고 수동 노드도 실패하나요?
기기 시간, 현재 네트워크, VPN 충돌을 우선 확인하세요. 기기를 다시 시작한 뒤 v2rayNG만 실행하고 파라미터가 명확한 노드 하나로 테스트합니다. 그래도 실패하면 로그의 첫 번째 오류를 보관한 뒤 계속 원인을 좁혀 가세요.
최종 재테스트 순서
- 자동 시간과 자동 시간대를 켜 둡니다.
- 다른 VPN 서비스를 중지하고 v2rayNG만 남깁니다.
- 구독을 한 번 업데이트하고 새 노드 하나를 선택합니다.
- 기본 DNS와 라우팅 설정을 복원합니다.
- 먼저 실제 연결 테스트를 실행한 뒤 VPN 서비스를 시작합니다.
- 도메인 사이트 하나와 자주 사용하는 앱 하나를 각각 열고 2분 동안 계속 관찰합니다.
이 순서로 다시 테스트한 뒤에도 특정 노드 하나만 시간 초과된다면 문제 범위는 해당 노드 또는 서버 측으로 거의 좁혀집니다. 같은 구독의 모든 노드만 실패하고 다른 구독은 작동한다면 구독 상태나 전체 설정을 처리해야 합니다. 기기의 모든 설정이 실패하고 네트워크를 바꿔도 달라지지 않는다면 앱 버전, 시스템 VPN 권한, 로그에 기록된 코어 시작 오류를 확인하세요.
문제 해결의 핵심은 무작위 조합을 더 많이 시도하는 것이 아니라 매번 하나의 변수만 검증하는 것입니다. 시간, 네트워크, 구독, 전송, 보안 계층, DNS, 기기 환경을 순서대로 확인하면 연결이 어느 단계에서 멈추는지 파악할 수 있고, 단순한 포트 변경을 클라이언트 오류로 잘못 판단하는 일도 막을 수 있습니다.