v2rayN 코어는 실행 중인데 브라우저에서 웹페이지가 열리지 않거나, 터미널 요청이 시간 초과되거나, 일부 앱만 인터넷에 연결되는 경우에 적합합니다. 먼저 프록시를 명시한 요청으로 로컬 프록시 진입점을 확인하고, 브라우저가 시스템 프록시를 사용하는지 점검한 다음 터미널 환경 변수, PAC, 예외 목록을 확인하세요. 이 문서의 주요 작업 환경은 Windows입니다. 명령 예시의 포트는 클라이언트가 실제로 수신 대기하는 값으로 바꿔야 하며, 명령이 성공했다고 모든 트래픽이 프록시를 통과한다고 단정할 수는 없습니다.
시스템 프록시, 코어 실행, 노드 연결 상태 구분하기
v2rayN에 코어가 실행 중이라고 표시되는 것은 관련 프로세스가 동작한다는 뜻일 뿐입니다. 서버를 선택했다고 해서 브라우저가 해당 서버를 사용하는 것도 아닙니다. 시스템 프록시는 이 설정을 따르는 앱에 로컬 프록시 주소를 제공하며, 모든 프로그램의 네트워크 연결을 자동으로 가로채지는 않습니다. 터미널 도구, 브라우저 확장 프로그램, 앱 자체 프록시 설정은 서로 다른 연결 경로를 사용할 수 있습니다.
이 흐름을 따라 각 단계를 확인하세요. 로컬 프록시를 명시해도 실패하면 수신 대기 포트, 코어 로그, 서버 연결부터 살펴봅니다. 명시적 프록시 요청은 성공하지만 일반 브라우저 접속이 실패한다면 시스템 설정과 브라우저를 확인하세요. 이 순서로 점검하면 프록시 진입점이 연결되지 않은 상태에서 PAC 규칙을 반복해서 수정하는 일을 피할 수 있습니다.
- 현재 서버, 시스템 프록시 모드, 로컬 수신 주소와 포트를 기록해 두면 원래 설정으로 되돌리기 쉽습니다.
- 문제 해결 중에는 다른 경로에서 트래픽을 가로채지 않도록 TUN을 먼저 끄세요. 시스템 프록시를 가로채는 다른 프로그램도 동시에 실행하지 마세요.
- v2rayN의 「설정」→「매개변수 설정」에서 로컬 수신 관련 항목을 확인하세요. 화면에 따라 항목 위치가 다를 수 있으므로 실제 표시를 기준으로 점검합니다.
- 클라이언트 로그를 열어 시작 실패, 포트 바인딩 실패, 반복되는 연결 오류가 없는지 확인한 다음 아래 비교 요청을 진행하세요.
프록시를 명시해 로컬 진입점 확인하기
먼저 PowerShell에서 curl.exe를 실행하세요. 일부 환경에서는 curl이 다른 명령을 가리킬 수 있습니다. 아래 두 요청은 같은 대상 주소를 사용합니다. 첫 번째는 프록시를 우회하고, 두 번째는 로컬 HTTP 프록시를 명시합니다. 연결 제한 시간과 전체 제한 시간을 설정해 오래 기다리지 않도록 합니다. 예시 사이트는 연결 확인용일 뿐, 실제 속도 측정 결과를 의미하지 않습니다.
# 직접 연결 비교: 모든 프록시 우회
curl.exe --noproxy "*" --connect-timeout 10 --max-time 20 -I https://example.com/
# HTTP 프록시 진입점: 제외 목록에 이번 테스트 도메인이 없는지 확인
curl.exe --proxy http://127.0.0.1:10808 --noproxy "localhost,127.0.0.1" --connect-timeout 10 --max-time 20 -I https://example.com/
# 이 포트가 SOCKS만 지원한다면 이 명령을 사용
curl.exe --proxy socks5h://127.0.0.1:10808 --noproxy "localhost,127.0.0.1" --connect-timeout 10 --max-time 20 -I https://example.com/
socks5h는 대상 도메인의 처리를 SOCKS 프록시 쪽에 맡깁니다. 다만 최종 DNS 처리 방식은 코어 설정에 따라 달라집니다. HTTP 프록시로 HTTPS 주소에 접속할 때는 일반적으로 CONNECT 터널을 사용합니다. 프록시 주소를 http://127.0.0.1:10808로 적어도 대상 웹페이지가 암호화되지 않은 HTTP로 바뀌는 것은 아닙니다.
| 비교 결과 | 우선 확인할 항목 | 이 결과만으로 단정할 수 없는 내용 |
|---|---|---|
| 명시적 프록시는 성공하지만 브라우저는 실패 | 브라우저 확장 프로그램, 시스템 프록시 주소, PAC, 예외 목록 | 브라우저가 프록시를 사용한다고 단정할 수 없음 |
| 로컬 프록시 연결 거부 | 수신 대기 포트, 진입점 프로토콜, 코어 실행 여부 | 원격 서버 장애라고 바로 단정할 수 없음 |
| 직접 연결과 프록시 연결 모두 성공 | 로그를 확인해 실제 외부 연결 경로 판단 | 같은 웹페이지가 열려도 두 요청의 연결 경로가 같다는 뜻은 아님 |
| 프록시 요청 시간 초과 | 로그 시간에 맞춰 DNS, 라우팅, 외부 연결 확인 | 시간 초과만으로 문제 발생 구간을 특정할 수 없음 |
판단 기준: 명시적 프록시가 성공한 뒤 시스템 설정 점검
반복해서 성공하는 명시적 프록시 명령을 기준으로 남겨 두세요. 그다음 브라우저, PAC, 환경 변수 중 한 항목씩만 변경합니다. 기준 명령은 계속 성공하는데 앱에서 실패한다면 문제 범위를 앱의 프록시 진입 경로로 좁힐 수 있습니다.
브라우저가 프록시를 사용하지 않을 때: 시스템 설정과 확장 프로그램 확인
Windows 11에서 「설정」→「네트워크 및 인터넷」→「프록시」를 열고 설정 스크립트와 수동 프록시 중 현재 활성화된 항목을 확인하세요. v2rayN에서 수동 시스템 프록시 모드를 사용한다면 주소와 포트가 클라이언트에서 현재 사용할 수 있는 HTTP 또는 혼합 진입점과 일치해야 합니다. PAC를 사용 중이라면 스크립트 주소를 확인하세요. 수동 프록시 스위치도 동시에 켜야 하는 것은 아닙니다.
- 시스템 프록시 다시 설정. v2rayN 트레이 메뉴의 「시스템 프록시」에서 「시스템 프록시 자동 설정」을 선택하세요. 현재 화면의 문구가 다르면 로컬 프록시 주소를 설정하는 항목을 선택한 뒤 시스템 설정에서 결과를 확인합니다.
- 프록시 확장 프로그램을 잠시 사용 중지. 확장 프로그램이 특정 서버를 고정하거나, 직접 연결을 강제하거나, 자체 규칙에 따라 트래픽을 나눌 수 있습니다. 먼저 관련 확장 프로그램을 끄고 일반 창에서 테스트하세요. 일부 확장 프로그램은 권한에 따라 시크릿 창에서도 실행될 수 있으므로 시크릿 창을 완전히 격리된 환경으로 간주하지 마세요.
- 브라우저 자체 설정 확인. 브라우저에 별도의 프록시 설정이 있다면 시스템 프록시 사용을 선택하세요. 별도 설정 항목이 없다면 실행 매개변수에서 프록시나 직접 연결 방식이 고정되어 있는지 확인합니다.
- 브라우저를 완전히 종료한 뒤 다시 시작. 브라우저 창을 모두 닫고 백그라운드 프로세스도 종료됐는지 확인한 다음 같은 테스트 주소를 여세요. 기존 연결을 재사용해 판단이 흐려지는 일을 막을 수 있습니다.
시스템 설정을 변경한 직후 자동으로 되돌아간다면 다른 프록시 프로그램, 브라우저 확장 프로그램, 조직 관리 정책부터 확인하세요. 관리 대상 기기에서는 정책 설정을 반복해서 덮어쓰지 말고 관리자에게 허용된 프록시 방식을 문의하세요. 시스템 프록시가 정상이어도 특정 앱이 해당 설정을 읽지 않는다면 그 앱에서는 여전히 접속에 실패할 수 있습니다.
PAC 모드와 예외 목록: 요청이 프록시를 우회하는지 확인
PAC는 앱이 읽고 실행하는 프록시 선택 스크립트입니다. 흔히 반환하는 값은 DIRECT와 PROXY 127.0.0.1:10808입니다. PAC는 요청이 먼저 어디로 향할지 결정합니다. 요청이 코어에 들어간 뒤 적용되는 라우팅 분기와는 다른 단계입니다. PAC가 직접 연결을 반환하면 해당 요청은 v2rayN에 아예 들어오지 않을 수 있습니다.
- 스크립트 주소에 접속할 수 있는지 확인: 시스템에 표시된 PAC 주소를 복사해 브라우저에서 스크립트 내용을 읽을 수 있는지 확인하세요. 주소가 로컬에 있다면 클라이언트를 종료하거나 서비스가 중지된 뒤 스크립트를 불러오지 못할 수 있습니다.
- 스크립트 포트 확인: 로컬 프록시 진입점의 포트를 변경했다면 PAC 내용도 현재 진입점을 가리키는지 확인하세요. 이전 포트를 계속 참조해서는 안 됩니다.
- 규칙 적용 범위 확인: 대상 도메인이 직접 연결 규칙에 해당하면 웹페이지가 열려도 프록시가 작동한다고 볼 수 없습니다. 테스트할 때 PAC 내용과 코어 로그를 함께 확인하세요.
- 프록시 예외 확인: 실제로 필요한 로컬 주소 예외는 유지하되, 지나치게 넓은 도메인 규칙이 잘못 입력되어 있는지 확인하세요. 와일드카드 해석 방식은 앱마다 다를 수 있으므로 다른 도구의 설정을 그대로 복사하지 마세요.
Windows 수동 프록시의 「예외」와 PAC 내부의 직접 연결 규칙은 현재 활성화된 모드에 따라 따로 확인해야 합니다. 터미널의 NO_PROXY는 별도의 설정입니다. 시스템 예외를 삭제해도 명령줄 도구의 우회 목록까지 함께 지워지는 것은 아닙니다.
판단 기준: 진입점을 임시로 고정해 PAC와 코어 문제 분리
먼저 PAC 주소를 기록한 뒤, 검증된 수동 프록시 진입점으로 잠시 전환하세요. 브라우저가 바로 정상화되고 명시적 프록시 명령도 계속 성공한다면 PAC 로드 및 규칙 적용을 우선 확인합니다. 원인을 찾은 뒤 원래 모드로 복구하면 되며, 코어 라우팅을 동시에 다시 설정할 필요는 없습니다.
터미널이 프록시를 사용하지 않을 때: 환경 변수와 도구 설정 확인
터미널 프로그램이 Windows 시스템 프록시를 읽는다고 보장할 수는 없습니다. 브라우저에서는 접속되는데 명령줄 요청이 계속 시간 초과된다면 도구의 프록시 매개변수와 환경 변수를 별도로 확인해야 합니다. 아래 PowerShell 설정은 현재 세션과 이후 실행되는 하위 프로세스에만 적용되며, 이미 실행 중인 다른 터미널 창은 자동으로 변경하지 않습니다.
# 현재 세션에서 이름에 proxy가 포함된 환경 변수 확인
Get-ChildItem Env: | Where-Object { $_.Name -match 'proxy' }
# 예시: 해당 변수를 지원하는 도구에 HTTP 프록시 설정
$env:http_proxy = "http://127.0.0.1:10808"
$env:https_proxy = "http://127.0.0.1:10808"
$env:no_proxy = "localhost,127.0.0.1"
# --proxy를 지정하지 않고 curl.exe가 현재 환경 변수를 읽는지 확인
curl.exe --connect-timeout 10 --max-time 20 -I https://example.com/
# 점검을 마친 뒤 이번에 설정한 세션 변수를 삭제
Remove-Item Env:http_proxy,Env:https_proxy,Env:no_proxy -ErrorAction SilentlyContinue
https_proxy는 HTTPS 대상에 접속할 때 사용할 프록시를 지정하며, 프록시 주소 자체가 HTTPS여야 한다는 뜻은 아닙니다. 로컬 진입점이 일반 HTTP 프록시만 지원한다면 주소를 https://127.0.0.1:10808로 입력할 경우 TLS 핸드셰이크가 실패할 수 있습니다. 환경 변수 지원 여부와 우선순위는 도구마다 다르므로 curl의 동작을 모든 프로그램에 그대로 적용할 수는 없습니다.
- 남아 있는 변수 확인:
ALL_PROXY가 이전 SOCKS 포트를 가리키거나NO_PROXY에 대상 도메인 또는*가 포함되어 있을 수 있습니다. 먼저 원래 값을 기록한 다음 필요한 항목만 조정하세요. - 대소문자 구분 확인: Windows 환경 변수 이름은 일반적으로 대소문자를 구분하지 않습니다. Linux 등에서는 도구마다 대소문자 변수 지원 방식이 다를 수 있으므로 확인이 필요합니다. 특히 curl의 HTTP 프록시 변수는 소문자
http_proxy를 사용해야 합니다. - 도구별 설정 확인: 명령줄 매개변수, 사용자 설정 파일, 환경 변수가 서로의 설정을 덮어쓸 수 있습니다. 명시적
--proxy로 기준을 확인한 뒤 설정을 하나씩 되돌리세요. - 실행 환경 구분: 원격 터미널, 컨테이너, 별도의 네트워크 환경에서
127.0.0.1은 해당 환경 자신을 가리킵니다. v2rayN을 실행하는 데스크톱 호스트를 가리키는 것은 아닐 수 있습니다.
포트 충돌과 실제 오류: 수신 대기 상태부터 확인
명시적 프록시 명령이 로컬 포트 연결 단계에서 실패하면 VMess, VLESS 같은 프로토콜 매개변수를 바꾸기 전에 수신 대기 상태부터 확인하세요. 아래 명령은 PowerShell에서 실행하며, 포트는 앞서 사용한 예시값입니다. 수신 대기 항목을 찾은 뒤에는 해당 프로세스도 확인해야 합니다. 어떤 프로그램이 포트를 수신하고 있다고 해서 현재 v2rayN 코어가 수신 중이라는 뜻은 아닙니다.
# 해당 포트가 TCP 수신 대기 상태인지 확인
Get-NetTCPConnection -LocalPort 10808 -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalAddress,LocalPort,OwningProcess
# 수신 대기 중인 프로세스 이름 확인
Get-NetTCPConnection -LocalPort 10808 -State Listen -ErrorAction SilentlyContinue |
ForEach-Object { Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue }
# 별도의 설정 단서로 Windows WinHTTP 프록시 설정 확인
netsh winhttp show proxy
netsh winhttp show proxy는 WinHTTP 프록시 설정을 표시하며, 브라우저가 사용하는 사용자 시스템 프록시와는 다릅니다. 여기에 직접 연결로 표시되어도 v2rayN이 브라우저용 시스템 설정을 제대로 적용하지 않았다고 단정할 수 없습니다. 사용자 프록시 설정을 확인 없이 다른 설정으로 가져오지도 마세요.
오류: Connection refused
원인: 로컬 루프백 주소에 연결할 때 이 메시지가 나타난다면 해당 포트에서 연결을 받을 서비스가 실행 중이지 않거나 연결이 명시적으로 거부된 경우가 많습니다. 해결: 실제 수신 주소와 포트를 확인하고 코어 시작 로그를 살펴본 다음 올바른 진입점 프로토콜로 다시 시도하세요.
오류: address already in use
원인: 다른 프로세스나 중복 실행된 인스턴스가 같은 주소와 포트를 사용하면 흔히 발생하는 포트 바인딩 오류입니다. 해결: 수신 프로세스가 어떤 프로그램인지 확인하고 충돌하는 프로그램을 정상 종료하세요. 또는 로컬 포트를 변경한 뒤 시스템 프록시, PAC, 터미널 변수도 함께 업데이트합니다.
오류: Could not resolve proxy
원인: curl이 프록시 호스트 이름을 확인하지 못했습니다. 프록시 주소 오타, 남아 있는 환경 변수, 잘못된 주소 형식이 흔한 원인입니다. 해결: 먼저 정확한 http://127.0.0.1:10808 주소로 테스트한 뒤 환경 변수와 도구 설정의 프록시 주소를 확인하세요.
오류: Could not resolve host
원인: 현재 요청 경로에서 대상 도메인을 확인하지 못했습니다. 실패 위치는 직접 연결, SOCKS, HTTP 프록시 중 어떤 방식을 쓰는지에 따라 달라집니다. 해결: 사용한 명령과 프록시 유형을 기록하고, 코어 로그로 요청이 프록시에 들어왔는지 확인한 다음 해당 경로의 DNS 설정을 점검하세요.
운영 체제와 코어 버전에 따라 전체 오류 문구가 다를 수 있습니다. 오류의 핵심 문구, 발생 시각, 대상 포트를 기록하면 원인을 좁히는 데 도움이 됩니다. “시간 초과”라는 문구만 보고 노드가 작동하지 않는다고 단정하지 마세요. 로컬 진입점 연결은 성공했지만 로그에 원격 연결 실패가 표시된다면 서버 주소와 포트, 전송 및 보안 매개변수를 확인하세요.
설정을 복구하고 세 가지 항목 확인하기
원인을 찾았다면 실제로 필요한 프록시 모드로 복구하고 문제 해결을 위해 추가한 임시 설정을 정리하세요. 특히 시스템 프록시는 새 포트로 바뀌었는데 터미널에는 이전 포트가 남아 있거나, PAC가 변경 전 주소를 계속 참조하지 않는지 확인해야 합니다. 설정을 한 번에 하나씩 복구하고 결과가 안정적인지 확인한 뒤 다음 항목으로 넘어가세요.
- 명시적 프록시 요청 반복 성공: 기준 명령을 다시 실행해 로컬 진입점과 외부 연결 경로가 계속 요청을 처리하는지 확인하세요.
- 앱별 연결 경로 확인: 브라우저는 시스템 프록시나 PAC를 예상대로 사용하고, 터미널은 필요에 따라 환경 변수를 사용해야 합니다. 로그를 함께 확인해 요청이 코어에 들어오는지도 점검하세요.
- 종료 시 동작 확인: 프록시 사용을 중지하기 전에 시스템 프록시를 해제하거나 원래 설정으로 복구하세요. 클라이언트가 비정상 종료된 뒤 모든 웹페이지가 열리지 않는다면 시스템 프록시가 더는 수신하지 않는 로컬 포트를 가리키는지 확인합니다.
추가 지원을 요청할 때는 운영 체제, v2rayN 화면 유형, 실제 수신 프로토콜과 포트, 시스템 프록시 모드, 비교에 사용한 명령, 해당 시각의 로그를 제공하세요. 공유 전에 구독 주소, 인증 정보, 서버의 민감한 항목은 가리세요. 설정 개념은 고급 설정에서 확인할 수 있으며, 처음 설정하는 경우 시작 안내에 따라 기본 단계를 다시 점검하세요.