노드 연결은 되지만 웹페이지 첫 접속이 느리거나 다운로드 속도가 낮고, 저녁 시간대에 끊기는 경우에 적합한 안내입니다. 먼저 일정한 조건으로 테스트한 뒤 노드와 접속 네트워크를 교차 비교하고, 마지막으로 DNS, 라우팅, 스니핑, TUN MTU를 확인합니다. 매번 한 가지씩만 변경하고 같은 대상으로 다시 테스트해 회선 혼잡을 클라이언트 설정 문제로 오인하지 않도록 하세요.
1. 첫 접속 지연·지속적인 저속·연결 실패 구분하기
지연 시간이 짧다고 다운로드가 빠른 것은 아닙니다. 노드 목록의 지연 테스트는 특정 방식으로 측정한 응답 시간일 뿐, 사용 가능한 대역폭을 보여 주지 않습니다. 다운로드 속도에는 서버 부하, 통신사 경로, 대상 사이트의 속도 제한, 로컬 네트워크가 모두 영향을 줍니다. 먼저 어느 단계에서 느려지는지 확인한 다음 설정을 조정하세요.
| 확인된 증상 | 우선 점검 항목 | 비교 방법 |
|---|---|---|
| 처음 열 때 몇 초 걸리지만 이후에는 정상 | DNS 조회, 핸드셰이크, 연결 재사용 | 같은 주소에 연속으로 3회 접속해 첫 바이트까지 걸린 시간 비교 |
| 연결은 빠르지만 다운로드 속도가 계속 낮음 | 노드 부하, 회선 대역폭, 대상의 속도 제한 | 같은 파일을 두 노드에서 각각 다운로드 |
| 저녁에는 느리고 낮에는 정상 | 공유 대역폭 또는 경로 혼잡 | 09:00와 21:00에 각각 3회씩 측정 |
| 작은 웹페이지는 정상인데 대용량 파일 다운로드가 멈춤 | 패킷 손실, MTU, 전송 중단 | 일반 프록시와 TUN을 비교하고 연결이 끊긴 시각 기록 |
| 특정 앱만 느림 | 앱의 프록시 연결 방식, 별도 DNS, QUIC | 명시적 프록시 명령으로 같은 대상 테스트 |
v2rayN은 클라이언트 관리 인터페이스이며, 실제 연결 처리는 선택한 코어가 담당합니다. Project V, V2Fly, Xray는 관련 프로젝트 배경을 설명하는 이름이지 성능 등급이 아닙니다. VMess, VLESS 같은 프로토콜도 속도 등급이 아닙니다. 대개 프로토콜 이름보다 노드 위치, 전송 방식 조합, 서버 자원이 속도 차이를 더 잘 설명합니다.
2. 재현 가능한 로컬 테스트 기준 만들기
노드, 대상 주소, 접속 네트워크, 프록시 연결 방식을 고정하세요. 아래 예시는 Windows의 v2rayN에서 혼합 프록시 포트 127.0.0.1:10808을 사용하는 경우입니다. 10808은 예시이므로 실행 전에 실제 설정과 코어 시작 로그에서 포트를 확인하세요. 오래된 안내에 나오는 10809를 그대로 사용하지 마세요.
-
환경 기록
「도움말」→「정보」에서 클라이언트 버전 전체를 기록하고, 시작 로그에서 코어 이름과 버전도 확인하세요. 현재 노드, 라우팅 모드, TUN 사용 여부를 기록한 뒤에는 테스트 중 업그레이드와 규칙 변경을 동시에 하지 마세요.
-
프록시 연결 방식 확인
「설정」→「매개변수 설정」에서 로컬 수신 포트를 확인하세요. 메뉴 구성은 버전에 따라 달라질 수 있으므로 시작 로그를 기준으로 삼으세요. 두 연결 방식을 혼용하지 않도록 우선 TUN을 끄고 명시적 HTTP 프록시로 기준값을 측정하세요.
-
테스트 조건 고정
구독 목록 일괄 속도 측정, 클라우드 드라이브 동기화, 다른 다운로드를 중지하세요. 안정적으로 접속되는 HTTPS 주소를 하나 고르고, 같은 노드를 유지한 채 아래 명령을 연속 3회 실행하세요. 가장 좋은 값이 아니라 가운데 값을 기준으로 삼습니다.
-
결과 저장
테스트 시각, 대상 주소, 연결 시간, 첫 바이트까지 걸린 시간, 오류 메시지 원문을 기록하세요. 설정을 하나 바꾼 뒤 다시 3회 측정하고, 개선이 꾸준하지 않으면 원래 값으로 되돌리세요. 기준값에서 설정이 점점 벗어나는 것을 방지할 수 있습니다.
curl.exe --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 30 -o NUL -sS -w "connect=%{time_connect}s tls=%{time_appconnect}s first=%{time_starttransfer}s total=%{time_total}s\n" https://example.com/
여기서 example.com은 명령 실행 시간을 보여 주기 위한 예시일 뿐, 최대 대역폭 측정에는 적합하지 않습니다. 로컬 HTTP 프록시를 통해 HTTPS에 접속할 때 time_connect는 주로 로컬 프록시까지 연결하는 시간을 나타내며, 원격 노드까지의 지연 시간으로 볼 수 없습니다. TLS 및 첫 바이트 시간에는 프록시 경로와 대상 사이트의 처리 시간도 포함됩니다. 전송량을 측정하려면 접근 권한이 있는 고정된 대용량 파일을 사용하고, 응답이 오류 페이지가 아닌지 확인하세요.
3. 노드 부하와 해외 회선: 교차 테스트로 원인 찾기
한 번의 속도 측정만으로는 노드가 혼잡한지 경로가 막히는지 구분하기 어렵습니다. 가장 유용한 비교는 ‘같은 네트워크에서 노드 변경’과 ‘같은 노드에서 네트워크 변경’입니다. 테스트 대상은 그대로 유지하고 가능한 한 가까운 시간에 측정해 대상 사이트 자체의 부하 변화를 배제하세요.
| 비교 결과 | 가능성이 높은 원인 범위 | 다음 단계 |
|---|---|---|
| 같은 네트워크에서 노드 A만 느림 | 노드 A의 서버 자원 또는 해당 노드 전용 경로 | 노드 B로 바꾸고 노드 A의 시간대별 결과도 저장 |
| 같은 노드가 다른 네트워크에서는 훨씬 빠름 | 기존 접속 네트워크 또는 통신사 경로 | 무선 간섭을 배제하도록 유선으로 다시 테스트 |
| 두 노드 모두 같은 사이트에서만 느림 | 대상 사이트, 출구 간 연결 또는 CDN 할당 | 별도의 두 번째 대상을 추가해 비교 |
| 여러 대상이 저녁에 동시에 느려짐 | 공유 회선 또는 로컬 대역폭 경쟁 | 로컬 대역폭 사용량을 확인한 다음 혼잡하지 않은 시간대의 결과와 비교 |
예를 들어 다음과 같이 기록할 수 있습니다. 같은 파일을 노드 A에서 다운로드했을 때 낮에는 8 MB/s, 저녁에는 0.8 MB/s였고, 같은 시간 노드 B는 6 MB/s를 유지했습니다. 이 데이터로 문제 범위를 노드 A의 자원 또는 경로로 좁힐 수는 있지만, 서버 CPU가 포화 상태라고 단정할 수는 없습니다. 서버 부하를 확인하려면 서버 측 CPU, 대역폭, 연결 수, 속도 제한 정보를 확인해야 합니다. 수치는 판독 방법을 보여 주는 예시이며 이 사이트에서 직접 측정한 값이 아닙니다.
- 노드가 지리적으로 가까워도 통신사 간 연결이나 우회 경로 때문에 실제 경로가 짧다고 볼 수는 없습니다.
- 일반 ping에서 패킷 손실이 나타나도 ICMP 속도 제한 때문일 수 있습니다. 앱 연결, 지속 전송, 재시도 현상도 함께 확인하세요.
- 같은 진입점이나 출구를 공유하는 두 노드는 완전히 독립적인 비교 대상이 아닙니다. 필요하면 서로 다른 회선 그룹을 선택해 비교하세요.
- 먼저 다중 연결 다운로드를 켜서 속도를 ‘보충’하지 마세요. 동시 연결은 연결 및 대역폭 경쟁을 키우고 단일 연결의 패킷 손실을 가릴 수 있습니다.
4. DNS와 라우팅: 요청이 실제로 향하는 경로 확인
DNS는 주로 이름 조회 대기 시간, 대상 IP 선택, IP 기반 규칙 매칭에 영향을 줍니다. 노드 대역폭을 늘려 주지는 않습니다. 노드 도메인을 누가 조회하는지, 대상 도메인을 누가 조회하는지, 라우팅 규칙 적용을 위해 조회가 발생하는지를 구분해야 합니다. 브라우저의 보안 DNS 설정은 시스템이나 코어의 DNS 경로와 다를 수도 있습니다.
- 노드 주소 조회 실패: 프록시 연결이 성립되기 전에도 노드 도메인 조회가 필요합니다. 아직 연결되지 않은 프록시에 이 과정을 전적으로 의존할 수는 없습니다.
- 대상 도메인 조회 지연: 첫 방문에서만 느린지 확인하세요. 사이트를 계속 바꾸기보다 같은 대상에 처음 요청했을 때와 다시 요청했을 때를 비교합니다.
- 출구와 맞지 않는 조회 결과: 일부 CDN은 DNS 조회 위치에 따라 주소를 할당합니다. 원격 출구 위치와 대상 IP 위치가 맞지 않으면 우회 경로를 거칠 수 있습니다.
- 라우팅 규칙이 예상과 다르게 적용됨: 로그에 표시된 대상과 아웃바운드 태그를 확인해 요청이 의도치 않게 직접 연결되거나 로컬 서비스가 원격 경로를 거치지 않는지 살펴보세요.
아래는 규칙 순서를 설명하기 위한 V2Ray/Xray 스타일의 routing 조각이며, 완전한 설정 파일은 아닙니다. 먼저 사설 주소를 direct로 보내고 나머지 TCP 및 UDP 요청은 proxy로 전달합니다. 사용 전에 같은 이름의 아웃바운드가 이미 있는지, geoip 데이터가 준비되어 있는지 확인하세요. v2rayN에서는 먼저 백업해 인터페이스가 생성한 규칙과 중복 적용되지 않도록 하세요.
{
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
},
{
"type": "field",
"network": "tcp,udp",
"outboundTag": "proxy"
}
]
}
}
AsIs는 라우팅 단계에서 규칙 매칭을 위해 도메인을 IP로 능동적으로 조회하지 않는다는 뜻입니다. 따라서 도메인 요청은 IP 조건에 일치하지 않을 수 있지만, 실제 연결 과정에서 조회가 필요할 수 있습니다. 이를 ‘DNS 끄기’로 해석하지 마세요. IPIfNonMatch와 IPOnDemand는 조회를 유발하는 방식이 다르므로 실제 코어와 규칙을 함께 확인해야 합니다. 필드 전체 설명은 JSON 설정 핸드북에서 확인하세요.
5. 스니핑과 MTU: 증상과 맞을 때만 조정
스니핑은 트래픽에서 도메인이나 프로토콜을 식별해 라우팅을 돕는 기능이지, 범용 속도 향상 옵션이 아닙니다. 켜면 도메인 규칙의 적용 결과가 달라질 수 있고, 끄면 도메인 기반 분기가 작동하지 않을 수도 있습니다. 같은 노드와 대상을 유지해 비교하고 아웃바운드 변경도 함께 확인하세요. 웹페이지가 우연히 한 번 빨라졌다는 이유만으로 판단하지 마세요.
| 설정 항목 | 확인할 증상 | 조정 시 유의점 |
|---|---|---|
| 스니핑 | 도메인 규칙이 적용되지 않거나 스위치 전환 후 경로가 바뀜 | 로그를 비교하세요. 식별 기능은 HTTPS 내용을 복호화하지 않습니다. |
| TUN MTU | TUN에서는 큰 응답이 멈추지만 일반 프록시에서는 정상 | 기존 값을 기록하고 1500, 1400, 1380 순서로 단계별 비교 |
| UDP 및 QUIC | 같은 사이트에서 브라우저만 이상하고 명령줄은 정상 | 앱의 연결 경로와 노드의 UDP 지원 여부를 확인하고, 전역 설정은 먼저 바꾸지 마세요. |
| 연결 재사용 | 작은 요청이 많은 경우와 대용량 다운로드의 결과가 다름 | 프로토콜과 코어의 지원 여부를 확인하세요. 동시 연결이 많다고 더 빠른 것은 아닙니다. |
MTU는 인터페이스가 허용하는 최대 전송 단위입니다. 경로 MTU 탐색이 막히면 핸드셰이크는 성공하지만 큰 데이터를 전송할 때 멈출 수 있습니다. TUN 모드에서만 재현된다면 실제로 TUN MTU 항목을 제공하는 설정 또는 구성에서 1500을 1400으로 임시 변경한 뒤 1380과 비교하세요. 이는 문제 해결을 위해 시험해 볼 값일 뿐 최적값을 보장하지 않습니다. 테스트 목적으로 모든 물리 네트워크 어댑터를 변경하지 마세요.
6. 실제 로그로 오류 구분하기: 모든 문제를 저속으로 보지 않기
오류가 발생한 시각을 먼저 기록한 다음 해당 연결의 대상, 아웃바운드, 앞뒤 로그를 확인하세요. 코어에 따라 로그 접두어나 주변 문맥이 달라질 수 있으며, 아래는 흔히 볼 수 있는 오류 문구입니다. 오류만으로 책임 소재를 단정하지 말고 발생한 위치를 확인하세요. 로그 수준을 임시로 높였다면 한 번 재현한 뒤 평소 수준으로 되돌려 디스크 기록이 관찰에 영향을 주지 않도록 하세요.
오류: connection refused
원인: 대상 포트에서 연결을 거부했습니다. 대상이 127.0.0.1이라면 먼저 로컬 코어가 실행 중인지, 포트가 일치하는지 확인하세요.
해결: 오류에 표시된 실제 주소를 확인하세요. 로컬 문제라면 수신 포트를 점검하고, 원격 문제라면 노드 포트와 서비스 상태를 확인하세요.
오류: i/o timeout
원인: 네트워크 작업이 제한 시간 안에 완료되지 않았습니다. 노드 연결, DNS 조회, 데이터 읽기 단계에서 발생할 수 있으며 노드 속도 제한과 같은 뜻은 아닙니다.
해결: 같은 로그에 표시된 대상과 작업 유형을 확인한 뒤, 같은 노드에서 네트워크를 바꾸거나 같은 네트워크에서 노드를 바꿔 교차 테스트하세요.
오류: no such host
원인: 사용 중인 조회 경로에서 유효한 도메인 조회 결과를 얻지 못했습니다. 도메인 오타, DNS 서비스, 도메인 자체의 문제일 수 있습니다.
해결: 오류에 표시된 도메인이 노드인지 대상 사이트인지 먼저 확인하세요. 해당 DNS 경로를 점검하고 변경 후 코어를 다시 시작해 테스트하세요.
오류: tls: handshake timeout
원인: 제한 시간 안에 TLS 핸드셰이크가 끝나지 않았습니다. 패킷 손실, 서버 혼잡, 잘못된 연결 대상 등이 원인일 수 있습니다.
해결: 노드 주소, 포트, 서버 이름, 전송 설정을 확인하고 다른 네트워크에서도 비교하세요. 속도 문제를 해결하려고 인증서 검증을 끄지 마세요.
7. 자주 묻는 질문과 점검을 마칠 때
지연 시간은 50ms인데 다운로드 속도는 왜 1 MB/s뿐인가요?
지연 시간은 응답까지 걸리는 시간을 나타내며, 처리량은 대역폭, 패킷 손실, 속도 제한에도 영향을 받습니다. 같은 대용량 파일을 두 노드에서 비교한 다음 두 번째 대상을 바꿔 테스트하세요. 대상 하나에서만 느리다면 DNS를 반복해서 바꾸기보다 대상 사이트나 출구 간 연결을 먼저 확인하세요.
전역 모드로 바꾸니 빨라졌는데 계속 이렇게 사용해도 되나요?
라우팅 경로를 확인할 필요가 있다는 신호이지, 전역 모드가 항상 더 빠르다는 뜻은 아닙니다. v2rayN 메인 화면에서 전환 전후 라우팅 모드를 기록하고 느린 요청의 아웃바운드 태그를 확인하세요. 잘못 적용된 규칙을 수정한 뒤 평소 사용하는 분기 모드로 되돌려 로컬 요청까지 원격으로 전달되지 않게 하세요.
컴퓨터에서는 정상인데 Android에서 같은 노드가 느리면 어떻게 하나요?
두 기기를 같은 접속 네트워크에 연결하고 같은 대상을 사용하며 다른 다운로드는 일시 중지하세요. v2rayNG는 Xray 코어를, v2flyNG는 V2Fly 코어를 사용합니다. 각 앱의 버전, 라우팅, DNS 설정을 따로 기록하세요. 같은 구독을 가져와도 실행 설정이 모두 동일하다고 볼 수 없습니다.
클라이언트를 업데이트하면 모든 속도 문제가 해결되나요?
업데이트로 특정 호환성 문제가 해결될 수는 있지만 혼잡한 회선의 용량을 늘릴 수는 없습니다. 현재 설정과 테스트 결과를 먼저 저장하고 다운로드 페이지에서 운영체제와 아키텍처에 맞는 버전을 선택하세요. 업데이트 후에도 같은 조건으로 테스트해 개선 여부를 확인한 다음 다른 설정을 조정하세요.
같은 대상을 연속 3회 테스트했을 때 허용 가능한 속도로 회복되고 평소 사용 중 연결이 끊기지 않는다면 ‘최적화 설정’을 더 추가하지 말고 멈추세요. 문제가 계속되면 클라이언트와 코어 버전, 시간대, 노드 그룹, 접속 네트워크, 첫 바이트 시간, 오류 문구를 정리하세요. 로그를 공유하기 전에 구독 링크, 인증 정보, 개인 접속 기록을 삭제하세요. 문제를 재현할 수 있을 만큼 설명하되 연결 자격 증명은 노출하지 마세요.
- 노드 측으로 범위 좁힘: 같은 네트워크에서 특정 노드만 문제가 있다면 서버 자원과 경로를 확인하세요.
- 회선 측으로 범위 좁힘: 같은 노드가 다른 접속 네트워크에서 정상이라면 시간대와 통신사별 비교 데이터를 보관하세요.
- 로컬 측으로 범위 좁힘: 명시적 프록시는 정상이지만 특정 앱이나 TUN에서 문제가 있다면 해당 연결 방식을 점검하세요.
- 원인 미확정: 기준 설정으로 되돌리고 별도 대상과 두 번째 접속 네트워크를 추가하세요. DNS, MTU, 라우팅을 한꺼번에 변경하지 마세요.