이 점검 순서는 v2rayN, v2rayNG, v2flyNG에 노드를 이미 가져왔지만 지연 시간 테스트가 시간 초과되거나, 실행 후 웹페이지가 열리지 않거나, 로그에 연결 오류가 계속 기록될 때 유용합니다. 먼저 로컬 네트워크를 확인한 뒤 시간, 구독, 프로토콜 매개변수와 서버 상태를 점검하세요. 각 단계를 마칠 때마다 다시 테스트하면 문제가 어느 구간에서 발생했는지 더 빠르게 파악할 수 있습니다.
첫 번째: 로컬 네트워크와 프록시 진입점 확인
‘노드 시간 초과’는 클라이언트가 정해진 시간 안에 예상한 응답을 받지 못했다는 뜻일 뿐, 노드가 만료되었다는 의미는 아닙니다. 브라우저의 요청은 원격 서버에 도달하기 전 시스템 프록시, 로컬 수신 포트, V2Ray 또는 Xray 코어, DNS, 라우터와 현재 네트워크를 거칩니다. 어느 한 구간이라도 연결되지 않으면 클라이언트에서는 시간 초과로 표시될 수 있습니다.
먼저 클라이언트를 완전히 종료한 다음, 브라우저로 평소 직접 접속되는 웹사이트 두 곳을 열어 보세요. 일반 웹사이트도 열리지 않는다면 라우터에 다시 연결하거나 다른 네트워크로 전환하고, 로그인이 필요한 공용 네트워크 페이지가 있는지도 확인해야 합니다. 이때 구독을 반복해서 갱신해도 결과는 달라지지 않습니다. 구독 요청 자체에도 정상적인 기본 네트워크가 필요하기 때문입니다.
기본 네트워크가 정상이라면 클라이언트를 실행하되 트레이 아이콘만 확인하지 마세요. v2rayN 7.x를 기준으로 메인 창 하단이나 로그 영역에서 코어가 실행되었는지 확인하고, 현재 선택된 서버도 점검해야 합니다. 일반적인 로컬 수신 포트는 SOCKS 10808, HTTP 10809이지만 버전과 개인 설정에 따라 다를 수 있으므로 「설정」→「매개변수 설정」에 표시된 포트를 기준으로 하세요. 포트를 다른 프로그램이 사용 중이면 코어 실행에 실패하면서도 시스템 프록시는 이전 포트를 계속 가리킬 수 있습니다.
이전 프로세스 종료
v2rayN을 종료한 뒤 작업 관리 도구를 열어 기존 V2Ray 또는 Xray 코어 프로세스가 종료되었는지 확인하세요. 그런 다음 클라이언트를 다시 실행해 이전 프로세스가 로컬 포트를 계속 점유하지 않도록 합니다.
수신 포트 확인
「설정」→「매개변수 설정」에서 로컬 SOCKS, HTTP 또는 혼합 프록시 포트를 확인한 뒤, 브라우저나 다른 앱에 입력된 포트가 클라이언트와 일치하는지 점검하세요.
시스템 프록시 재설정
먼저 시스템 프록시 지우기를 선택한 다음 시스템 프록시를 다시 활성화하세요. 클라이언트가 비정상적으로 종료된 뒤 남은 이전 주소와 포트를 바로잡는 데 도움이 됩니다.
로컬 네트워크 전환
가능하다면 다른 네트워크에서 같은 노드를 테스트하세요. 기존 네트워크에서 세 번 연속 시간 초과가 발생했지만 다른 네트워크에서는 1~3초 안에 연결된다면, 원인은 기존 네트워크나 라우터에 있을 가능성이 큽니다.
두 번째: 시스템 시간과 시간대 보정
VMess 인증 과정은 시간에 의존하므로 기기 시계가 크게 어긋나면 인증이 바로 실패할 수 있습니다. TLS를 사용하는 VMess, VLESS 및 기타 설정도 인증서의 유효 기간을 확인합니다. 기기의 날짜, 시간대 또는 자동 시간 동기화에 문제가 있으면 노드 연결이 실패하거나 구독 페이지에 인증서 시간 오류가 표시될 수 있습니다.
시간이 1분 정도만 달라 보여도 바로 조치하는 것이 좋습니다. 평소에는 기기가 시간과 시간대를 자동으로 가져오도록 설정하고, 화면에 표시된 시각만 수동으로 바꾸지 마세요. 특히 시간대를 변경했거나 시스템이 장시간 절전 상태였거나 메인보드 시계 또는 라우터의 시간 동기화에 문제가 있으면 표시 시간과 실제 표준 시간이 다를 수 있습니다.
Windows
「설정」→「시간 및 언어」→「날짜 및 시간」을 열고 시간 자동 설정과 시간대 자동 설정을 활성화한 다음 지금 동기화를 클릭하세요. 완료되면 v2rayN을 종료하고 다시 실행합니다.
macOS
「시스템 설정」→「일반」→「날짜 및 시간」을 열고 날짜 및 시간 자동 설정을 활성화한 뒤 현재 시간대가 실제 위치와 일치하는지 확인하세요.
Android
시스템 「설정」에서 날짜 및 시간 항목을 열고 시간 자동 설정과 시간대 자동 설정을 활성화하세요. 그런 다음 v2rayNG 또는 v2flyNG를 완전히 종료했다가 다시 실행합니다.
시간을 보정한 뒤에는 지연 시간 테스트만 다시 실행하지 말고 클라이언트 코어를 재시작해야 합니다. 이미 생성된 연결 실패 상태, DNS 캐시와 이전 세션이 프로세스에 남아 있을 수 있습니다. 시간 보정 전 모든 노드가 실패했지만 보정 후 여러 지역의 노드가 동시에 복구되었다면, 원인은 구독의 특정 서버가 아니라 기기 시간일 가능성이 높습니다.
오류: x509: certificate has expired or is not yet valid
원인과 해결:TLS 인증서가 실제로 만료되었거나 기기의 날짜가 실제 시간과 어긋났을 수 있습니다. 먼저 시스템 시간과 시간대를 동기화하세요. 한 노드에서만 계속 오류가 발생한다면 서버 운영자에게 인증서를 확인해 달라고 요청합니다.
오류: invalid user
원인과 해결:서버가 인증 정보를 받아들이지 않은 상태입니다. VMess라면 먼저 시간을 보정한 뒤 UUID, alterId와 구독 내용이 완전한지 확인하세요. 여러 매개변수를 한꺼번에 수정하면 원인을 추적하기 어려워집니다.
결론: 모든 노드가 동시에 실패하면 공통 조건부터 확인
같은 기기에서 서로 독립적인 여러 노드가 동시에 모두 시간 초과된다면 네트워크, 시스템 시간, 로컬 포트와 코어 상태를 우선 확인해야 합니다. 원격 서버 하나의 장애만으로는 이런 일관된 현상을 설명하기 어렵습니다.
세 번째: 구독이 유효하고 실제로 갱신되었는지 확인
구독 주소를 클라이언트에 추가할 수 있다고 해서 그 안의 노드가 계속 유효한 것은 아닙니다. 구독이 만료되었거나 트래픽 한도를 초과했거나 접근 정보가 변경되었을 수 있습니다. 새 노드가 생성되었는데도 클라이언트가 이전에 캐시된 목록을 사용하고 있을 가능성도 있습니다. 구독 갱신과 노드 테스트는 별개의 작업입니다. 전자는 설정을 가져오고, 후자는 설정에 포함된 서버 연결을 시도합니다.
v2rayN에서는 「구독 그룹」에서 해당 그룹을 선택한 다음 전체 구독 갱신을 실행할 수 있습니다. 현재 프록시를 사용할 수 없다면 먼저 ‘프록시를 사용하지 않음’으로 갱신해 보세요. 사용할 수 없는 노드로 새 구독 내용을 요청하는 일을 피할 수 있습니다. 갱신이 끝난 뒤 노드 수, 서버 주소와 갱신 시간이 바뀌었는지 확인하세요. ‘갱신 완료’라는 문구만 보고 점검을 끝내서는 안 됩니다.
구독에 접근 가능한지 확인
기본 네트워크가 정상인지 확인한 뒤 구독을 다시 갱신하고, 클라이언트가 성공, HTTP 오류, 파싱 실패, 연결 시간 초과 중 어떤 결과를 표시하는지 확인하세요. 결과에 따라 해결 방향이 달라집니다.
그룹 내용 확인
현재 사용 중인 구독 그룹을 갱신했는지 확인하세요. 여러 그룹이 함께 있으면 이전 노드가 목록에 남아 있을 수 있고 이름이 비슷해 잘못 선택하기도 쉽습니다.
노드 다시 선택
갱신 후 새 목록에서 서버를 선택하고 활성 서버로 지정하세요. 목록을 갱신했다고 해서 현재 활성 항목이 새 설정으로 자동 전환되는 것은 아닙니다.
노드 3개 테스트
주소나 지역이 서로 다른 노드 세 개를 선택해 각각 두 번씩 테스트하세요. 하나만 실패하면 단일 노드 문제일 가능성이 높고, 세 개 모두 비슷한 시점에 시간 초과되면 매개변수나 서버 상태를 계속 확인해야 합니다.
오류: unexpected EOF
원인과 해결:구독 응답 또는 원격 연결이 완료되기 전에 종료되었습니다. 먼저 구독을 다시 가져오세요. 갱신은 성공했지만 연결할 때 같은 오류가 발생한다면 전송 계층 매개변수와 서버 상태를 확인합니다.
오류: failed to parse config
원인과 해결:가져온 내용이 현재 클라이언트 또는 코어가 기대하는 설정 형식과 맞지 않습니다. 방금 가져온 비정상 복사본을 삭제하고 구독을 다시 갱신하세요. 웹페이지 주소, 설명 문구 또는 잘린 내용을 노드 설정으로 가져온 것은 아닌지도 확인합니다.
오류: failed to find an available destination
원인과 해결:아웃바운드 대상에 사용할 수 있는 연결이 구성되지 않았습니다. 서버 도메인 확인 실패나 사용 가능한 아웃바운드 경로 부재가 주요 단서입니다. 노드 주소 표기, DNS 설정과 활성 아웃바운드를 확인한 뒤 코어를 재시작하세요.
네 번째: 프로토콜, 전송 방식과 TLS 매개변수 확인
노드 주소와 포트에 연결할 수 있다고 해서 프로토콜 매개변수가 올바른 것은 아닙니다. VMess와 VLESS는 인증 필드가 다르고 TCP, WebSocket, gRPC 등 전송 방식도 서로 대체할 수 없습니다. UUID, 포트, 전송 유형, 경로, 서비스 이름, TLS 활성화 여부 또는 서버 이름 중 하나라도 맞지 않으면 연결이 시간 초과되거나 즉시 종료되거나 핸드셰이크 단계에서 실패할 수 있습니다.
점검할 때 경험만 믿고 포트를 일괄적으로 443으로 바꾸거나 WebSocket이라는 이유만으로 경로를 임의로 입력하지 마세요. 포트 443은 TLS에 자주 사용되지만 서버는 다른 포트를 사용할 수도 있습니다. WebSocket의 Host와 Path, gRPC의 serviceName은 모두 서버 설정과 일치해야 합니다. 구독에서 가져온 설정은 보통 원본 그대로 유지하고, 명확한 매개변수를 확인한 경우에만 항목별로 수정하세요.
| 점검 항목 | VMess | VLESS | 일반적인 오류 증상 |
|---|---|---|---|
| 사용자 식별자 | UUID, 최신 설정에서는 alterId가 보통 0 | UUID, 일부 설정에는 flow도 포함 | 인증 실패, 연결 직후 종료 |
| 전송 방식 | TCP, WebSocket 또는 지정된 방식과 일치해야 함 | TCP, WebSocket, gRPC 등 지정된 방식과 일치해야 함 | 핸드셰이크 시간 초과, unexpected EOF |
| TLS 매개변수 | TLS 활성화 여부와 서버 이름 확인 | TLS, 서버 이름 및 구독에서 제공한 보안 매개변수 확인 | TLS handshake timeout, 인증서 이름 오류 |
| 추가 필드 | WebSocket은 보통 Host와 Path 확인 필요 | gRPC는 보통 serviceName 확인 필요 | 서버가 거부 응답을 반환하거나 계속 대기 |
클라이언트가 사용하는 코어가 해당 설정을 처리할 수 있는지도 확인해야 합니다. v2rayN에서는 「설정」→「매개변수 설정」→「Core 유형」에서 사용할 코어를 확인하거나 변경할 수 있습니다. 메뉴 이름은 버전에 따라 조금 다를 수 있습니다. VLESS의 특정 기능을 포함한 설정은 호환되는 Xray 코어를 사용하는 것이 일반적입니다. Android에서는 v2rayNG가 Xray 코어를 사용하고 v2flyNG가 v2fly 코어를 사용하므로 두 클라이언트가 모든 설정 필드를 완전히 동일하게 지원한다고 가정해서는 안 됩니다.
설정이 구독에서 가져온 것이라면 원본 노드를 보존하고 단일 항목 수정용 복사본을 만드는 것이 가장 안전합니다. 한 번에 한 필드만 변경한 뒤 코어를 재시작하세요. 예를 들어 먼저 포트를 확인하고, 다음으로 전송 유형을 확인한 뒤 TLS와 서버 이름을 점검합니다. UUID, 경로, 포트와 TLS를 한꺼번에 바꾸면 연결이 복구되어도 실제 오류가 어디에 있었는지 알 수 없습니다.
오류: TLS handshake timeout
원인과 해결:TCP 연결은 되었지만 TLS 핸드셰이크가 제한 시간 안에 완료되지 않았을 수 있습니다. 서버 이름, TLS 활성화 여부, 포트와 시스템 시간을 확인한 뒤 다른 네트워크에서 테스트해 경로 문제를 배제하세요.
오류: dial tcp: i/o timeout
원인과 해결:TCP 연결을 수립하는 동안 클라이언트가 제때 응답을 받지 못했습니다. 서버 주소, 포트, 로컬 네트워크와 방화벽을 확인하세요. 해당 주소만 실패한다면 원격 포트가 더 이상 수신 대기 중인지 확인합니다.
오류: connection refused
원인과 해결:대상 호스트가 연결을 명시적으로 거부했습니다. 일반적으로 주소에는 도달했지만 해당 포트에 서비스가 없거나 진입 규칙이 연결을 거부하는 상태입니다. 포트를 확인한 뒤 서버 운영자에게 수신 대기 상태를 문의하세요.
결론: 시간 초과와 연결 거부는 나누어 처리
i/o timeout은 요청에 제때 응답하지 않았다는 의미에 가깝고, connection refused는 대상이 연결을 명시적으로 거부했다는 뜻입니다. 전자는 네트워크 경로와 주소를 먼저 확인하고, 후자는 포트와 서버의 수신 대기 상태를 우선 점검하세요.
다섯 번째: 교차 테스트로 서버 상태 판단
앞의 네 단계를 마쳤고 기본 네트워크가 정상이며 시간이 정확하고 구독도 방금 갱신했으며 매개변수도 일치한다면, 원격 서버가 점검 중인지, 포트 수신이 중단되었는지, 특정 네트워크에서만 경로가 막혔는지 판단해야 합니다. 이때 클라이언트 설정을 무작정 계속 바꾸지 말고 비교 가능한 테스트 결과를 만들어야 합니다.
가장 유용한 비교는 세 가지입니다. 같은 기기에서 노드 변경, 같은 노드에서 네트워크 변경, 같은 구독에서 기기 변경입니다. 한 번에 하나의 조건만 바꾸세요. 예를 들어 같은 Windows 기기에서 노드 A가 세 번 연속 10초 넘게 시간 초과되지만 같은 그룹의 노드 B와 C는 2초 안에 웹페이지를 연다면 노드 A에 문제가 있을 가능성이 큽니다. A, B, C가 현재 네트워크에서 모두 실패했다가 네트워크를 바꾼 뒤 모두 복구되면 기존 네트워크 경로 문제에 더 가깝습니다.
- 노드 하나만 실패:로그에서 시간, 서버 주소와 오류 유형을 기록하고 서버 복구를 기다리거나 같은 구독의 다른 노드를 사용하세요.
- 같은 지역의 노드가 집중적으로 실패:해당 그룹의 진입점이나 경로에 문제가 있을 수 있습니다. 먼저 다른 주소로 전환해 테스트하고 클라이언트를 반복해서 재설치하지 마세요.
- 한 네트워크에서만 모든 노드가 실패:라우터, DNS, 네트워크 접근 제한과 방화벽 정책을 확인하고 다른 네트워크에서 다시 테스트하세요.
- 모든 기기에서 같은 구독을 사용할 수 없음:구독 유효 기간, 트래픽 상태와 서비스 공지를 확인하고 각 기기의 로컬 포트를 계속 수정하지 마세요.
- 기기 하나에서만 실패:로컬 수신, 시스템 프록시, 시간과 코어 설정으로 돌아가 정상적으로 작동하는 기기와의 차이를 중점적으로 비교하세요.
로그를 볼 때는 뒤에 반복되는 연쇄 오류보다 최초 실패를 확인해야 합니다. v2rayN의 실행 정보에는 보통 대상 주소, 연결 단계와 코어 반환 내용이 기록됩니다. v2rayNG와 v2flyNG도 로그 영역에서 최근 연결 결과를 확인할 수 있습니다. 먼저 현재 로그를 지우거나 위치를 기억한 뒤 한 번 접속을 시도하면 이전 기록의 간섭을 줄일 수 있습니다.
오류: context deadline exceeded
원인과 해결:작업 하나가 코어 또는 클라이언트에 설정된 대기 시간을 초과했다는 뜻으로, 이 한 줄만으로는 원인을 확정할 수 없습니다. 같은 요청에서 더 먼저 발생한 DNS, TCP 또는 TLS 오류를 위쪽으로 찾아 해당 단계에 맞게 처리하세요.
오류: context canceled
원인과 해결:상위 작업에서 연결 작업을 취소한 상태입니다. 노드 전환, 코어 재시작 또는 앞선 연결 실패 후 정리 과정에서 자주 발생합니다. 더 구체적인 오류 직후에 나타났다면 앞선 오류를 주요 단서로 보세요.
오류: network is unreachable
원인과 해결:현재 시스템에 대상 네트워크로 연결할 수 있는 경로가 없습니다. 기기가 인터넷에 연결되어 있는지, 라우터가 정상인지, 네트워크 인터페이스가 전환되었는지 확인하고 남아 있는 프록시나 가상 네트워크 설정이 라우팅에 영향을 주지 않는지도 점검하세요.
전체 순서는 다음과 같습니다. 먼저 기기가 정상적으로 네트워크에 연결되는지 확인하고 시스템 시간을 신뢰할 수 있게 맞춥니다. 그런 다음 구독이 실제로 갱신되었는지 확인하고 노드 프로토콜 매개변수를 점검합니다. 마지막으로 여러 노드, 네트워크와 기기를 비교해 서버 상태를 판단합니다. 이렇게 하면 로컬 네트워크 장애가 발생했을 때 구독을 다시 만들거나 원격 서버 점검 중에 정상적인 클라이언트 설정을 반복해서 수정하는 일을 피할 수 있습니다.