Android에서 v2rayNG를 사용할 때 노드 속도 측정이 시간 초과되거나 연결에 실패하는 경우, 연결은 시작됐지만 웹페이지가 열리지 않는 경우에 적용할 수 있습니다. 먼저 구독을 가져오지 못한 문제인지, 서버 핸드셰이크 실패인지, 앱 트래픽이 프록시를 거치지 않는 문제인지 구분한 뒤 7가지 점검 항목을 확인하세요. 한 번에 하나의 설정만 바꾸고 로그와 원래 설정으로 되돌릴 방법을 남겨 두면, 정상 작동하던 노드 설정을 망가뜨리는 일을 피할 수 있습니다.
점검 1: 구독이 정상적으로 업데이트됐는지 확인
구독 주소는 노드 설정을 가져오는 경로이지 노드 서버 자체가 아닙니다. 구독 업데이트가 시간 초과됐다면 이번에 설정을 가져오지 못했다는 뜻일 뿐, 목록에 있는 모든 노드가 작동하지 않는다고 볼 수는 없습니다. 반대로 구독 업데이트에 성공해도 목록의 모든 서버에 연결된다는 보장은 없습니다.
v2rayNG에서 먼저 사이드 메뉴의 ‘구독 그룹 설정’을 열어 주소가 올바른 그룹에 저장됐는지 확인한 다음, 메인 화면 메뉴에서 ‘구독 업데이트’를 실행하세요. 버전에 따라 버튼 문구가 조금씩 다를 수 있으므로 일반 업데이트와 ‘프록시를 통해’ 업데이트를 구분해야 합니다. 우선 어느 방식에서 실패했는지 기록해 두세요.
- 구독 출처 확인: 서비스 제공업체가 안내한 전체 주소와 일치하는지 확인하세요. 복사할 때 공백이나 줄바꿈이 들어갔는지, 구독 토큰이 재설정되지는 않았는지도 살펴보세요.
- 계정 상태 확인: 구독이 만료됐는지, 데이터 사용량을 모두 소진했는지, 서비스 제공업체가 접속 주소를 변경했는지 확인하세요. 업데이트 API에서 응답을 받았더라도 계정에 사용 가능한 데이터가 남아 있다는 뜻은 아닙니다.
- 업데이트 경로 선택: 사용할 수 있는 노드가 없다면 먼저 프록시 없이 업데이트해 보세요. 사용 가능한 노드가 있고 구독 API에 직접 연결되지 않는다면 프록시를 통한 업데이트를 시도하세요.
- 기존 설정 보존: 재시도하기 전에 노드를 모두 삭제하지 마세요. 업데이트 후 그룹과 노드 정보가 달라졌는지 확인하고, 필요하면 제공업체에서 구독을 다시 받아오세요.
점검 2: 시스템 시간이 정확한지 확인
기기의 시간이 크게 어긋나면 VMess 인증에 문제가 생길 수 있고, TLS 인증서가 아직 유효하지 않거나 이미 만료된 것으로 판단될 수 있습니다. VLESS는 VMess와 같은 시간 인증 방식을 사용하지 않지만, TLS 연결에는 정확한 시간 확인이 여전히 필요합니다. 노드가 VLESS라고 해서 이 항목을 건너뛰지 마세요.
- Android ‘설정’ → ‘시스템’ → ‘날짜 및 시간’으로 이동해 자동 시간 설정과 자동 시간대 설정을 켜세요. 일부 기기에서는 ‘추가 설정’에서 해당 메뉴를 찾을 수 있습니다.
- 인터넷에 연결되지 않아 시간을 자동으로 맞출 수 없다면 먼저 일반 네트워크 연결을 복구한 다음 다시 동기화하세요. 시간대만 변경해도 기기에 기록된 실제 시간이 바로잡히지 않을 수 있습니다.
- 시간을 동기화한 뒤 v2rayNG 연결을 중지했다가 다시 시작하고, 다른 설정은 바꾸지 않은 채 같은 노드를 테스트하세요.
로그에 인증서 시간 관련 오류가 있으면 먼저 날짜, 연도와 기기 시간이 정확한지 확인한 다음 서비스 제공업체에 서버 인증서를 문의하세요. ‘안전하지 않은 연결 허용’을 일반적인 해결책으로 사용하지 마세요. 인증서 검증이 약화될 뿐 아니라 라우팅 문제나 서버 포트 연결 오류도 해결되지 않습니다.
점검 3: 프로토콜과 전송 설정이 일치하는지 확인
노드 목록에서 대상 노드의 편집 화면을 열고 서비스 제공업체가 안내한 원래 설정과 항목별로 대조하세요. 노드 이름은 구분을 위한 표시일 뿐입니다. 이름에 TLS나 특정 지역이 적혀 있어도 실제 설정이 올바르다는 뜻은 아닙니다. 먼저 신뢰할 수 있는 출처에서 전체 설정을 다시 가져온 뒤 직접 수정한 항목을 확인하세요.
| 확인 항목 | 일치해야 하는 설정 | 자주 발생하는 설정 오류 |
|---|---|---|
| 서버 주소 | 주소, 포트 | 웹사이트 주소를 노드 주소로 입력하거나 기본 포트가 아닌 포트를 빠뜨림 |
| VMess | 사용자 ID, 암호화 설정, 전송 방식 | 다른 노드의 사용자 ID를 복사하거나 전송 유형을 잘못 선택함 |
| VLESS | 사용자 ID, 암호화 필드, flow | 설정에 따라 encryption을 none으로 지정해야 하는데 다르게 설정하거나 flow를 임의로 추가함 |
| TLS | serverName, 인증서 검증, 필요한 ALPN 설정 | 서버 주소를 IP로 바꾸면서 serverName까지 잘못 지움 |
| REALITY | serverName, 공개 키, shortId, 서버에서 요구하는 지문 | 공개 키를 사용자 ID로 입력하거나 shortId를 빠뜨리고 다른 노드의 설정을 섞어 사용함 |
| WebSocket | 경로, Host, TLS 사용 여부 | 경로의 대소문자를 바꾸거나 Host와 서버 주소를 같은 항목으로 취급함 |
VLESS의 encryption은 일반적으로 none이어야 합니다. 그렇다고 외부 연결까지 암호화되지 않는 것은 아닙니다. TLS나 REALITY가 안전한 전송을 담당할 수 있습니다. flow를 입력할지 여부와 입력할 값은 서버 설정과 일치해야 합니다. 특정 조합이 더 빠르다는 이유만으로 모든 노드를 같은 설정으로 바꾸지 마세요.
점검 4: 현재 네트워크에서 서버에 연결할 수 있는지 확인
먼저 v2rayNG를 중지하고 일반 네트워크에서 웹페이지가 열리는지 확인하세요. 공용 Wi-Fi는 로그인 인증을 먼저 완료해야 할 수 있고, 모바일 네트워크는 요금 미납, 데이터 제한 또는 신호 문제의 영향을 받을 수 있습니다. 기본 네트워크 연결이 복구되지 않았다면 노드를 계속 바꿔도 유용한 결과를 얻기 어렵습니다.
그다음 노드 설정은 그대로 둔 채 노드 하나를 선택해 Wi-Fi와 모바일 데이터에서 각각 테스트하세요. 네트워크를 바꾸면 접속 제한, 주소 체계 또는 DNS 차이가 드러날 수 있지만, 한 번의 성공이나 실패만으로 원인을 단정할 수는 없습니다. 이후 로그와 함께 확인해 범위를 좁히세요.
이 숫자는 접속 경로를 구분하기 위한 것이며 노드 포트를 모두 443으로 바꾸라는 뜻이 아닙니다. 노드는 서버가 실제로 열어 둔 포트를 사용해야 합니다. 일반 웹페이지가 443으로 열려도 다른 주소의 노드 포트까지 접속 가능하다는 뜻은 아닙니다. 마찬가지로 ICMP 테스트에 실패했다고 해서 TCP 프록시 서비스를 사용할 수 없다고 단정할 수도 없습니다.
결론: 같은 노드로 네트워크별 결과를 비교하세요
같은 노드가 특정 네트워크에서만 실패한다면 네트워크 유형과 로그에 표시된 대상 주소를 기록해 서비스 제공업체에 해당 접속 주소에 도달할 수 있는지 확인하세요. 프로토콜, 포트, DNS를 동시에 바꾸면 비교 기준을 잃게 됩니다.
점검 5: VPN 서비스가 실제로 트래픽을 처리하는지 확인
v2rayNG 메인 화면에 실행 중이라고 표시되는 것은 로컬 서비스가 작동한다는 의미일 뿐, 원격 서버와의 연결 검증이 모두 끝났다는 뜻은 아닙니다. Android VPN 권한, 다른 VPN 서비스, 앱별 프록시 설정, 백그라운드 제한 때문에 ‘클라이언트 실행 중’과 ‘브라우저에서 프록시 사용 가능’이 서로 다른 상태일 수 있습니다.
- 권한 확인: 처음 실행할 때 Android VPN 연결 요청을 허용하고, 시스템 VPN 설정에서 현재 연결이 v2rayNG에 해당하는지 확인하세요.
- VPN 충돌 해결: 다른 VPN 채널을 사용하는 앱을 일시적으로 중지하세요. 로컬 VPN 방식으로 동작하는 필터링 앱도 포함됩니다. 일반 앱은 보통 같은 사용자 공간의 VPN 채널을 동시에 사용할 수 없습니다.
- 앱별 프록시 확인: v2rayNG ‘설정’의 앱별 프록시 옵션에서 테스트할 브라우저가 제외되지 않았는지 확인하세요. 테스트하는 동안에는 앱별 제한을 잠시 해제해도 됩니다.
- 백그라운드 제한 확인: 화면을 끈 뒤에만 연결이 끊긴다면 시스템 앱 설정에서 v2rayNG의 배터리 및 백그라운드 실행 권한을 확인하세요. 화면이 켜져 있을 때도 바로 시간 초과가 발생한다면 절전 설정만 바꾸기보다 서버 연결을 먼저 확인해야 합니다.
VPN 또는 앱별 설정을 바꿀 때마다 연결을 중지했다가 다시 시작한 뒤, 같은 브라우저에서 같은 주소를 여세요. 아이콘만 바뀌고 새 요청 로그가 없다면 노드가 작동하지 않는다고 바로 판단하지 말고, 먼저 트래픽 처리 범위를 확인하세요.
점검 6: 라우팅 규칙이 요청을 잘못된 경로로 보내는지 확인
일부 웹사이트만 열리고 나머지는 계속 실패한다면 노드 지연 시간만 확인하지 말고 라우팅 규칙을 살펴보세요. 분할 라우팅 규칙에 따라 특정 도메인이 직접 연결되거나 프록시를 거치거나 차단될 수 있습니다. ‘우회’ 설정 때문에 테스트 요청이 선택한 노드를 전혀 거치지 않을 수도 있습니다.
- v2rayNG ‘설정’에서 ‘라우팅 설정’ 또는 이에 해당하는 라우팅 모드 메뉴를 열고 현재 모드, 사용자 규칙, 관련 도메인 조건을 기록하세요.
- 짧은 비교 테스트로 분할 라우팅의 영향을 확인하세요. 테스트 대상이 프록시를 거치도록 라우팅 방식을 잠시 바꾼 뒤 같은 주소에 접속하고, 바로 원래 설정으로 복구하세요. 라우팅을 전역 프록시로 설정해도 앱별 제외 설정까지 반드시 적용되는 것은 아닙니다.
- 사용자 지정 규칙을 수정했다면 대상 도메인이 직접 연결 또는 차단 규칙에 먼저 해당하는지 확인하세요. 규칙 순서에 따라 결과가 달라질 수 있으며, 앞쪽 규칙에 일치하면 뒤쪽 규칙이 적용되지 않을 수 있습니다.
- 특정 앱에서만 문제가 발생한다면 앱 자체의 프록시 설정, 앱별 목록, 브라우저와 다른 연결 방식을 사용하는지 확인하세요.
지연 시간이 표시되는데도 웹페이지가 열리지 않는 이유는 무엇인가요?
먼저 어떤 종류의 테스트를 했는지 확인하세요. TCP 탐색은 포트 연결 상태만 보여 줍니다. 실제 연결 테스트에는 테스트 주소도 영향을 줍니다. 브라우저에서 대상 웹페이지를 열고 해당 요청의 로그를 확인하세요. 지연 시간 하나만으로 실제 접속까지 검증됐다고 볼 수는 없습니다.
전역 라우팅으로 바꾸면 열리는데 계속 그렇게 사용해도 되나요?
먼저 원래 모드로 되돌린 뒤 해당 도메인을 직접 연결하거나 차단하는 규칙이 있는지 확인하세요. 전역 라우팅은 짧은 비교 테스트에 적합합니다. 장기 설정은 실제 프록시 사용 범위와 트래픽 요구 사항에 따라 결정해야 합니다.
브라우저에서는 되는데 다른 앱은 계속 로딩만 될 때는 어떻게 하나요?
먼저 앱별 프록시 설정에서 해당 앱이 프록시 대상에 포함됐는지 확인한 다음 앱을 완전히 종료하고 다시 실행하세요. 그래도 실패하면 로그의 프로토콜과 대상 주소를 확인해 앱 자체 문제인지 프록시 연결 문제인지 구분하세요.
점검 7: DNS와 로그로 오류가 발생한 위치 확인
DNS 문제는 적어도 두 가지 대상을 구분해야 합니다. 하나는 노드 서버 도메인이고 다른 하나는 실제로 접속하려는 웹사이트 도메인입니다. 전자의 이름을 찾지 못하면 클라이언트가 노드에 연결되지 않습니다. 후자의 이름 확인이나 라우팅에 문제가 있으면 프록시는 시작됐지만 특정 웹사이트만 열리지 않을 수 있습니다. 원격 DNS를 사용한다고 해서 노드 자체 도메인의 이름 확인 문제까지 해결되는 것은 아닙니다.
v2rayNG ‘설정’에서 DNS 관련 항목을 열고 로컬 DNS, 원격 DNS와 활성화 여부를 확인하세요. 비교 테스트 전에 기존 값을 저장해 두세요. Android 시스템 ‘설정’ → ‘네트워크 및 인터넷’의 ‘비공개 DNS’도 별도로 영향을 줄 수 있습니다. 사용자 지정 제공업체를 자동으로 잠시 바꿔 테스트한 뒤 원래대로 복구할 수 있습니다. 제조사에 따라 메뉴 이름과 위치가 다를 수 있습니다.
오류: i/o timeout
원인: 작업 중 한 단계에서 대기 시간이 제한을 초과한 것입니다. DNS 조회, 연결 또는 이후 데이터 전송 과정에서 발생할 수 있으므로 이 메시지만으로는 위치를 특정하기 어렵습니다.
해결 방법: 같은 시점의 앞뒤 로그를 확인해 DNS 서버, 노드 주소, 대상 웹사이트 중 어디에서 대기했는지 파악하세요. 그다음 접속 네트워크를 바꿔 비교하고, DNS 설정을 무작정 전부 바꾸지 마세요.
오류: connection refused
원인: 연결이 명시적으로 거부된 상태입니다. 대상 포트에서 서비스가 대기 중이지 않거나, 서비스가 실행되지 않았거나, 네트워크 장비가 연결을 차단했을 때 흔히 발생합니다.
해결 방법: 오류에 표시된 대상이 원격 노드인지 로컬 수신 주소인지 먼저 확인하세요. 원격 문제라면 구독에 설정된 포트를 확인하고 서비스 제공업체에 문의하세요. 로컬 문제라면 서비스가 실행 중인지 확인하세요.
오류: x509: certificate has expired or is not yet valid
원인: 인증서 유효 기간과 기기의 현재 시간이 맞지 않습니다. 기기 시간이 잘못됐거나 서버 인증서가 만료됐을 수 있습니다.
해결 방법: 시간을 자동으로 동기화한 뒤 다시 시도하세요. 시간이 정확한데도 오류가 발생한다면 서비스 제공업체에 인증서 문제를 알리세요. 인증서 검증을 해제해 우회하지 마세요.
사이드 메뉴에서 ‘로그’를 열고 실패가 시작된 시각을 정확히 기록하세요. 연결을 다시 시작한 뒤 대상에 한 번만 접속하고, 해당 시각 전후의 로그를 확인하세요. 오류 메시지에 여러 단계의 정보가 붙을 수 있습니다. 가장 바깥쪽의 ‘연결 실패’는 결과일 뿐이며, 내부에 기록된 이름 확인, 핸드셰이크 또는 포트 오류가 원인을 찾는 데 더 유용합니다.
- 재현 조건 기록: Android 버전, v2rayNG ‘정보’에 표시된 버전, 네트워크 유형, 구독 업데이트 중 발생했는지 웹페이지 접속 중 발생했는지를 기록하세요.
- 비교 결과 기록: 같은 노드에서 네트워크를 바꾸면 연결되는지, 같은 네트워크에서 다른 정상 노드를 사용하면 연결되는지 적어 두세요. 여러 노드의 속도 측정 결과를 실제 접속 결과 대신 사용하지 마세요.
- 민감 정보 제거 후 로그 제출: 오류 원문과 발생 시각은 남기고 구독 토큰, 사용자 ID, 개인 주소와 기타 인증 정보는 가리세요. 노드 주소 세부 정보는 신뢰할 수 있는 지원 채널로만 전달하세요.
결론: 설정을 복구한 뒤 다시 확인하세요
원인을 찾았다면 테스트 중 임시로 바꾼 분할 라우팅, 비공개 DNS와 앱별 설정을 복구하고 실제로 효과가 있었던 수정만 남기세요. 연결을 다시 시작하고 원래 대상에 재접속해, 잊고 있던 임시 설정에 의존하지 않고도 문제가 해결됐는지 확인하세요.