핵심 내용

먼저 v2rayN의 코어, 노드, 로컬 인바운드 포트가 정상인지 확인한 뒤 브라우저와 터미널을 나눠 점검합니다. 브라우저에서는 프록시 설정을 누가 제어하는지, 터미널에서는 현재 프로세스가 올바른 HTTP_PROXY, HTTPS_PROXY 또는 ALL_PROXY를 읽는지 확인하세요. 문서의 포트 테스트와 환경 변수 점검, 비교 명령을 마치면 문제 지점이 클라이언트인지 시스템 설정인지 특정 앱인지 판단할 수 있습니다.

프록시 경로의 세 가지 기본 상태부터 확인

“시스템 프록시 사용”은 운영체제에 프록시 주소가 저장되어 있다는 뜻일 뿐, 대상 앱이 반드시 그 주소를 사용한다는 의미는 아닙니다. 전체 경로에는 최소한 세 단계가 필요합니다. V2Ray 또는 Xray 코어가 실행 중이고, 로컬 리스닝 포트가 연결을 받아들이며, 대상 앱이 시스템 프록시 또는 명시적 프록시 설정을 읽어야 합니다. 어느 한 단계라도 끊기면 웹페이지가 직접 연결되거나 요청이 시간 초과되거나 터미널이 프록시를 전혀 사용하지 않을 수 있습니다.

점검할 때 먼저 VMess, VLESS 또는 라우팅 규칙을 바꾸지 마세요. v2rayN 메인 화면의 실행 상태와 로그부터 확인합니다. 노드 연결이 성공하면 일반적으로 로컬에서 SOCKS, HTTP 또는 mixed 인바운드 포트를 수신 대기합니다. v2rayN 7.x의 일반적인 설정에서는 127.0.0.1이 리스닝 주소로 사용되며, 포트는 「설정」→「매개변수 설정」에 표시된 실제 값을 기준으로 해야 합니다. 이 문서에서는 mixed 포트를 10808, 독립 HTTP 포트를 10809로 예시합니다. 화면에 다른 숫자가 표시되면 모든 명령의 포트도 함께 바꾸세요.

127.0.0.1
로컬 프록시 리스닝 주소
10808
예시 mixed 또는 SOCKS 포트
10809
예시 독립 HTTP 포트
3단계
코어, 포트, 앱
  1. 노드 확인

    v2rayN 메인 화면에서 구독 노드를 하나 선택해 활성 서버로 지정합니다. 다시 연결한 뒤 상태가 시작 또는 재연결 단계에 계속 머물지 않는지 확인하세요.

  2. 포트 확인

    「설정」→「매개변수 설정」→「기본 설정」으로 이동해 로컬 리스닝 주소, mixed 포트 또는 HTTP와 SOCKS 포트를 기록합니다. 오래된 튜토리얼을 보고 포트를 추측하지 마세요.

  3. 로그 확인

    실행 로그를 열어 포트 충돌, 노드 주소 확인 실패, TLS 핸드셰이크 실패 또는 설정 로드 실패 메시지가 없는지 확인합니다.

  4. 명시적 테스트

    먼저 명령에서 프록시를 명시적으로 지정해 테스트 주소에 접속합니다. 명시적 프록시 연결이 성공한 뒤 시스템 프록시와 앱의 상속 관계를 점검하세요.

판단 기준: 127.0.0.1과 올바른 포트를 명시해도 실패하면 로컬 리스닝과 클라이언트 로그를 우선 확인합니다. 명시적 지정은 성공하지만 브라우저나 터미널만 실패한다면 문제 범위는 앱 설정으로 좁혀집니다.

브라우저에서 작동하지 않을 때: 프록시 설정 주체 확인

브라우저에서 가장 흔한 문제는 노드 장애가 아니라 프록시 출처의 충돌입니다. 브라우저가 운영체제 설정을 따를 수도 있고 자체 네트워크 설정을 사용할 수도 있으며, 특정 프록시 확장 프로그램이 제어할 수도 있습니다. 세 출처가 동시에 존재하면 최종 적용 주소가 v2rayN이 시스템에 기록한 127.0.0.1과 다를 수 있습니다.

Chromium 기반 브라우저는 대체로 시스템 네트워크 설정을 사용하지만 실행 옵션, 기업 정책, 확장 프로그램에 따라 결과가 달라질 수 있습니다. Firefox 계열 브라우저는 “프록시 사용 안 함”, “시스템 프록시 설정 사용”, “수동 프록시 설정” 중 하나를 독립적으로 선택할 수 있습니다. 따라서 같은 컴퓨터에서 한 브라우저는 정상이고 다른 브라우저는 직접 연결되는 상황도 이상하지 않습니다.

  1. 확장 프로그램 일시 중지

    프록시 서버, PAC 또는 네트워크 요청 경로를 변경하는 브라우저 확장 프로그램을 모두 일시적으로 끈 뒤 브라우저를 완전히 종료하고 다시 엽니다.

  2. 시스템 설정 확인

    v2rayN 트레이 메뉴에서 시스템 프록시 모드를 선택한 다음 운영체제의 프록시 설정을 엽니다. 서버가 127.0.0.1인지, 포트가 클라이언트의 현재 HTTP 또는 mixed 인바운드 포트와 일치하는지 확인하세요.

  3. 브라우저 설정 확인

    브라우저에 독립적인 네트워크 설정이 있다면 먼저 “시스템 프록시 설정 사용”을 선택합니다. 수동 입력이 필요하면 HTTP 프록시에 127.0.0.1과 해당 HTTP 포트를 입력하세요.

  4. 기존 프로세스 정리

    모든 브라우저 창을 닫고 작업 관리자에서 백그라운드 프로세스가 종료되었는지 확인합니다. 다시 시작한 뒤 페이지에 접속해 브라우저가 시작 시 읽은 이전 프록시 설정을 계속 사용하는 상황을 피하세요.

  5. 비교 테스트

    일반 창과 확장 프로그램을 끈 창에서 각각 테스트합니다. 원래 설정에서만 실패한다면 확장 프로그램을 하나씩 다시 활성화해 충돌 원인을 찾을 수 있습니다.

오류: ERR_PROXY_CONNECTION_FAILED

원인과 해결: 브라우저가 프록시에 연결을 시도했지만 127.0.0.1의 해당 포트에서 수신 대기 중인 서비스가 없습니다. v2rayN에서 코어 상태를 확인하고 브라우저 포트를 「매개변수 설정」에 표시된 현재 값으로 바꾸세요.

오류: ERR_TUNNEL_CONNECTION_FAILED

원인과 해결: 브라우저는 HTTP 프록시에 연결했지만 프록시가 HTTPS 요청을 위한 터널을 만들지 못했습니다. 노드 로그, 프로토콜 매개변수, 라우팅 차단 규칙을 확인한 뒤 정상 작동이 확인된 다른 노드로 다시 테스트하세요.

오류: The proxy server is refusing connections

원인과 해결: 브라우저의 수동 프록시 주소에 연결할 수 없습니다. SOCKS 포트를 HTTP 포트로 잘못 입력한 경우가 흔합니다. mixed 포트로 바꾸거나 SOCKS 설정에 올바른 포트를 입력하고 SOCKS5를 선택하세요.

“프록시 우회” 주소 목록도 확인해야 합니다. localhost, 127.0.0.1, 로컬 네트워크 주소는 일반적으로 직접 연결해야 하지만, 목록에 지나치게 넓은 와일드카드 규칙이 있으면 일반 웹사이트도 프록시를 우회할 수 있습니다. 먼저 사용자 지정 우회 항목을 백업하고 필요한 로컬 주소만 남겨 테스트하세요. 정상 작동을 확인한 뒤 업무에 필요한 규칙을 하나씩 다시 추가합니다.

터미널에서 작동하지 않을 때: 환경 변수를 현재 프로세스에 전달

대부분의 터미널 프로그램은 데스크톱 시스템 프록시를 자동으로 읽지 않습니다. curl, 패키지 관리자, 런타임 도구와 스크립트는 각자 프록시 로직을 구현할 수 있으므로, 가장 범용적인 방법은 현재 터미널 세션에 HTTP_PROXY, HTTPS_PROXY, ALL_PROXY를 설정하는 것입니다. 환경 변수 이름의 대소문자 호환성은 프로그램마다 다르므로 점검할 때는 대문자와 소문자 버전을 함께 설정할 수 있습니다.

환경 변수는 설정한 이후에 시작된 프로세스에만 영향을 줍니다. 이미 열려 있는 터미널, 편집기 내장 터미널 또는 백그라운드 작업에는 새 변수가 자동으로 전달되지 않습니다. 시스템 환경 변수를 수정했다면 기존 창을 닫고 새 터미널을 여세요. 현재 세션에서만 값을 지정한 경우 창을 닫으면 설정도 사라집니다.

PowerShell 현재 세션

$env:HTTP_PROXY = "http://127.0.0.1:10808"
$env:HTTPS_PROXY = "http://127.0.0.1:10808"
$env:ALL_PROXY = "socks5h://127.0.0.1:10808"
$env:NO_PROXY = "localhost,127.0.0.1"

Get-ChildItem Env:HTTP_PROXY
Get-ChildItem Env:HTTPS_PROXY
Get-ChildItem Env:ALL_PROXY

curl.exe -I --proxy http://127.0.0.1:10808 https://v2ray-os.com/zh-CN/

PowerShell에서 curl은 다른 명령으로 매핑될 수 있으므로 예시에서는 curl.exe를 명시적으로 호출합니다. `-I`는 응답 헤더만 요청해 연결이 성립했는지 빠르게 확인할 때 적합합니다. mixed 포트가 10808이 아니라면 v2rayN에 현재 표시된 포트로 바꾸세요. 독립 HTTP 인바운드를 사용한다면 주소를 `http://127.0.0.1:10809`과 같은 실제 설정으로 바꿉니다.

명령줄과 일반적인 Shell

export HTTP_PROXY="http://127.0.0.1:10808"
export HTTPS_PROXY="http://127.0.0.1:10808"
export ALL_PROXY="socks5h://127.0.0.1:10808"
export NO_PROXY="localhost,127.0.0.1"

export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
export all_proxy="$ALL_PROXY"
export no_proxy="$NO_PROXY"

env | grep -i proxy
curl -I --proxy socks5h://127.0.0.1:10808 https://v2ray-os.com/zh-CN/

오류: curl: (7) Failed to connect to 127.0.0.1 port 10808

원인과 해결: 로컬 포트에서 수신 대기 중인 서비스가 없거나 명령에 잘못된 포트를 사용했습니다. v2rayN 코어가 실행 중인지 확인한 뒤 「설정」→「매개변수 설정」에서 현재 인바운드 포트를 확인하세요.

오류: curl: (5) Could not resolve proxy

원인과 해결: 프록시 변수 형식이 잘못되었습니다. 프로토콜 접두사 누락, 닫히지 않은 따옴표, 주소에 포함된 공백이 흔한 원인입니다. `http://127.0.0.1:10808`과 같은 완전한 형식으로 다시 설정하세요.

오류: curl: (35) OpenSSL SSL_connect

원인과 해결: 로컬 프록시 연결은 대체로 성립했지만 원격 TLS 연결에 실패했습니다. 코어 로그에서 서버 이름, 시간 오차, 핸드셰이크 정보를 확인하고 정상 작동하는 다른 구독 노드와 비교하세요.

오류: connection reset by peer

원인과 해결: 연결이 성립한 뒤 원격 서버 또는 중간 경로에서 연결을 재설정했습니다. 먼저 노드 이상을 배제한 다음 VMess 또는 VLESS의 전송 계층, TLS, 서버 이름이 구독으로 내려온 내용과 일치하는지 확인하세요.

주의: `socks5://`는 일반적으로 로컬에서 대상 도메인을 확인하고, `socks5h://`는 도메인 확인을 프록시 측에서 처리합니다. 터미널에서는 도메인 연결만 실패하고 직접 IP 연결은 성공한다면 먼저 `socks5h://`로 다시 테스트한 뒤 DNS 설정을 계속 확인하세요.

비교 테스트로 시스템 프록시, 포트, 라우팅 문제 찾기

한 번에 변수 하나만 바꿔야 장애 단계가 드러납니다. 직접 연결 요청, 명시적 HTTP 프록시 요청, 명시적 SOCKS5 요청을 순서대로 실행하고 상태 코드, 연결 시간, 로그 변화를 기록하는 것이 좋습니다. 직접 연결은 성공하지만 두 명시적 프록시가 모두 실패하면 문제는 클라이언트 또는 노드에 있습니다. 명시적 프록시는 성공하지만 기본 요청이 직접 연결되면 시스템 프록시 상속 또는 환경 변수 문제입니다.

테스트 결과 우선 판단 다음 단계
브라우저와 명시적 명령 모두 실패 코어가 실행되지 않았거나 포트가 잘못되었거나 노드를 사용할 수 없음 v2rayN 로그를 확인하고 127.0.0.1과 리스닝 포트를 점검한 뒤 사용 가능한 노드로 전환
명시적 명령은 성공하지만 브라우저는 실패 브라우저가 시스템 프록시를 따르지 않거나 확장 프로그램이 충돌함 프록시 확장 프로그램을 끄고 브라우저를 다시 시작한 뒤 독립 네트워크 설정 확인
브라우저는 성공하지만 터미널은 실패 터미널 프로그램이 시스템 프록시를 읽지 않음 HTTP_PROXY, HTTPS_PROXY 또는 ALL_PROXY를 설정한 뒤 새 프로세스에서 실행
HTTP는 성공하지만 SOCKS는 실패 SOCKS 포트 또는 프록시 유형을 잘못 입력함 실제 SOCKS 또는 mixed 포트를 확인하고 socks5h로 다시 테스트
연결은 성공하지만 일부 도메인은 실패 DNS 또는 라우팅 분할 규칙이 일치하지 않음 도메인 확인 정책, 규칙 일치 결과, 최종 아웃바운드 태그 확인

결론: 명시적 프록시 테스트가 기준점

먼저 명확한 127.0.0.1과 포트로 curl 연결을 성공시킨 다음 브라우저와 터미널의 상속 문제를 처리하세요. 이렇게 하면 노드, 시스템 설정, 앱 설정 사이에서 불필요하게 반복해서 시행착오를 겪는 일을 줄일 수 있습니다.

라우팅 규칙이 테스트 요청을 직접 연결로 보내는지 확인

프록시 포트를 사용할 수 있다고 해서 모든 요청이 같은 아웃바운드로 나가는 것은 아닙니다. v2rayN 라우팅 설정은 도메인, IP, 프로토콜 또는 인바운드 태그에 따라 직접 연결, 프록시, 차단을 선택할 수 있습니다. 테스트 주소가 직접 연결 규칙에 해당하면 페이지는 열리지만 결과만 보면 “프록시를 거치지 않은” 것처럼 보입니다. 이는 시스템 프록시 장애가 아니라 규칙의 동작입니다.

자주 놓치는 세부 사항과 최종 점검 순서

시스템 프록시 상태가 자주 바뀌면 운영체제 설정 화면에 이전 값이 표시될 수 있고, 브라우저가 시작할 때 읽은 설정을 계속 유지할 수도 있습니다. 안정적인 순서는 대상 앱 종료, 코어와 노드 확인, 시스템 프록시 재설정, 앱 재실행입니다. 노드 전환, 포트 변경, DNS 조정, 라우팅 재작성은 동시에 하지 마세요. 새 문제가 원래 단서를 덮어쓸 수 있습니다.

v2rayN에는 연결됨으로 표시되는데 브라우저는 왜 계속 직접 연결되나요?

먼저 운영체제의 프록시 설정에서 주소와 포트를 확인한 다음 브라우저 프록시 확장 프로그램을 끄세요. 브라우저 백그라운드 프로세스를 완전히 종료하고 다시 연 뒤 클라이언트 로그에서 접속 도메인이 나타나는지 확인합니다.

터미널에 HTTP_PROXY를 설정했는데 새 명령이 여전히 작동하지 않는 이유는 무엇인가요?

현재 프로세스의 환경 변수를 출력해 변수 값에 프로토콜, 주소, 포트가 포함되어 있는지 확인하세요. 일부 도구는 소문자 변수만 읽으므로 http_proxy와 https_proxy도 함께 설정하고 새 터미널 창에서 다시 테스트합니다.

HTTP_PROXY와 ALL_PROXY를 함께 설정해야 하나요?

점검 단계에서는 함께 설정해도 됩니다. HTTP와 HTTPS 요청은 우선 해당 변수를 사용하고, SOCKS5 또는 프록시 측 도메인 확인이 필요한 도구는 ALL_PROXY를 읽을 수 있습니다. 사용하는 도구의 동작을 확인한 뒤 필요한 변수만 남기세요.

노드를 바꾸면 브라우저를 반드시 다시 시작해야 하나요?

노드 전환만으로는 보통 브라우저를 다시 시작할 필요가 없습니다. 다만 포트, 시스템 프록시 모드 또는 PAC 설정이 바뀌었다면 재시작해야 합니다. 기존 연결이 오래 재사용되는 경우에는 모든 창을 닫고 다시 테스트할 수도 있습니다.

구독 업데이트가 성공했는데도 연결할 수 없으면 어떻게 해야 하나요?

구독 업데이트 성공은 설정 목록을 가져왔다는 뜻일 뿐, 목록의 모든 노드를 사용할 수 있다는 의미는 아닙니다. 다른 노드를 선택하고 시스템 시간을 확인한 뒤 코어 로그에서 주소 확인 실패인지, 핸드셰이크 실패인지, 연결 시간 초과인지 판단하세요.

설정 복원 전 확인 목록

  1. v2rayN의 현재 활성 노드가 최신 구독에서 가져온 것인지, 코어 로그에 반복적인 재시작이 없는지 확인합니다.
  2. 브라우저, 터미널 명령, 클라이언트 화면이 동일한 로컬 포트를 사용하는지 확인합니다.
  3. 브라우저에 프록시 설정 출처를 하나만 남겨 시스템 설정과 확장 프로그램이 서로 덮어쓰지 않도록 합니다.
  4. 터미널 환경 변수가 현재 프로세스에 전달되었고 완전한 프로토콜 접두사를 사용하는지 확인합니다.
  5. 테스트 도메인이 NO_PROXY, 브라우저 우회 목록 또는 직접 연결 라우팅에 의해 미리 제외되지 않았는지 확인합니다.
  6. 설정을 변경한 뒤 코어를 다시 연결하고 프록시 설정을 읽어야 하는 앱도 다시 시작합니다.

최종 판단: 먼저 앱을 나누고, 다음으로 프로토콜을 나누기

브라우저는 정상인데 터미널만 실패하면 환경 변수를 바로 확인합니다. 터미널의 명시적 프록시는 정상인데 브라우저만 실패하면 프록시 출처를 확인합니다. 양쪽 모두 실패하면 코어, 리스닝 포트, 노드 로그로 돌아갑니다. 이 순서대로 처리하면 대개 구독을 다시 만들거나 설정을 광범위하게 수정할 필요가 없습니다.