Windows에서 v2rayN이 코어를 시작하지 못하거나, 로그에 수신 포트 충돌이 표시되거나, 포트를 바꾼 뒤에도 브라우저가 연결되지 않을 때 적용할 수 있습니다. 오류 주소 확인, 프로세스 찾기, 포트 해제 또는 변경, 시스템 프록시 갱신, 요청 테스트 순서로 진행하세요. 포트 점유와 시스템 예약 포트를 구분해 프로세스를 잘못 종료하거나 노드를 반복해서 바꾸는 일을 방지할 수 있습니다.
먼저 확인: 오류가 로컬 수신 과정에서 발생했는지
v2rayN은 그래픽 클라이언트이며, 실제로 포트를 열고 프록시 연결을 처리하는 것은 실행된 코어입니다. 브라우저가 시스템 프록시를 사용하면 보통 먼저 127.0.0.1:10808 같은 로컬 주소에 연결합니다. 이 진입점이 제대로 열리지 않으면 구독이 정상이고 노드 설정이 완전해도 브라우저에서 요청을 보낼 수 없습니다.
v2rayN 메인 창의 로그 영역에서 가장 최근 시작 실패 기록을 찾으세요. 오류에 표시된 프로토콜, 주소, 포트를 먼저 적어 두고 마지막의 “시작 실패” 문구만 확인하지 마세요. 10808은 흔히 쓰이는 예시일 뿐 모든 버전과 설정에서 사용하는 값은 아닙니다. 실제 점검에는 로그에 나온 포트를 사용하세요.
오류: Only one usage of each socket address (protocol/network address/port) is normally permitted.
원인과 해결 방법: Windows 소켓 주소 충돌로, TCP 포트를 이미 수신 대기 중인 경우가 흔합니다. 먼저 수신 프로세스를 확인한 뒤 중복 실행을 종료할지 v2rayN 포트를 바꿀지 결정하세요.
오류: An attempt was made to access a socket in a way forbidden by its access permissions.
원인과 해결 방법: 시스템이 바인딩을 거부한 것이며, 반드시 다른 프로세스가 포트를 점유했다는 뜻은 아닙니다. 수신 프로세스를 찾지 못했다면 시스템 제외 포트 범위와 보안 정책을 확인하세요.
반면 connection refused는 특정 연결이 거부되었다는 뜻인 경우가 많으므로 대상 주소를 함께 확인해야 합니다. 이전 로컬 포트에 대한 연결 거부와 원격 노드에 대한 연결 거부는 서로 다른 문제입니다. 노드 주소에서만 시간 초과가 발생한다면 이를 곧바로 로컬 포트 문제로 단정할 수 없습니다.
점유 프로세스 확인: 포트로 프로세스 경로 찾기
아래 명령은 Windows PowerShell에서 실행합니다. 먼저 10808의 TCP 수신 상태를 확인하세요. 결과가 없으면 이번 조회에서 해당 TCP 포트의 수신 프로세스를 찾지 못했다는 뜻이지, 포트를 반드시 바인딩할 수 있다는 뜻은 아닙니다.
Get-NetTCPConnection -State Listen -LocalPort 10808 -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, State, OwningProcess
LocalAddress와 OwningProcess를 확인하세요. 수신 주소가 0.0.0.0이면 모든 로컬 IPv4 인터페이스에서 수신하므로 127.0.0.1에 바인딩된 같은 포트와 충돌할 수 있습니다. IPv6의 ::가 IPv4와 충돌하는지는 소켓 옵션에 따라 다르므로 주소 전체를 확인해야 합니다.
이어서 해당 프로세스의 이름, 실행 파일 경로, 명령줄을 조회하세요. 아래 명령은 조회 결과에서 프로세스 ID를 바로 가져오므로 PID를 직접 입력할 필요가 없습니다.
$listeners = Get-NetTCPConnection -State Listen -LocalPort 10808 -ErrorAction SilentlyContinue
$ownerIds = $listeners | Select-Object -ExpandProperty OwningProcess -Unique
foreach ($ownerId in $ownerIds) {
Get-CimInstance Win32_Process -Filter "ProcessId = $ownerId" |
Select-Object ProcessId, Name, ExecutablePath, CommandLine
}
| 조회 결과 | 의미 | 다음 단계 |
|---|---|---|
| 경로가 다른 v2rayN 폴더를 가리킴 | 서로 다른 폴더의 클라이언트가 중복 실행됐을 수 있음 | 트레이 메뉴에서 불필요한 클라이언트를 종료한 뒤 포트를 다시 확인 |
| 이름은 xray.exe이고 경로는 클라이언트 폴더에 있음 | 현재 실행 중인 코어이거나 종료 후 남은 코어일 수 있음 | 먼저 클라이언트를 종료하고 해당 수신도 함께 사라지는지 확인 |
| 경로가 다른 프로그램을 가리킴 | 두 프로그램이 같은 로컬 포트를 사용 중 | 계속 실행할 프로그램은 유지하고 다른 프로그램의 포트를 변경 |
| TCP 수신 결과 없음 | 포트 예약, UDP 충돌 또는 프로세스의 일시 종료 가능성 | 로그의 프로토콜을 확인하고 시스템 제외 범위를 점검 |
프로세스 경로가 표시되지 않으면 관리자 권한으로 PowerShell을 다시 열어 상세 정보를 조회할 수 있습니다. 프로세스 이름만 보고 시스템 서비스를 종료하지 말고, 모든 코어 프로세스를 잔여 프로세스로 취급하지 마세요. 정상 실행 중인 코어는 클라이언트에 설정된 수신 포트를 사용해야 합니다.
포트 해제: 중복 실행부터 종료
같은 클라이언트의 다른 인스턴스가 확인되면 작업 표시줄 알림 영역의 트레이 메뉴에서 ‘종료’를 선택하는 것이 좋습니다. 메인 창의 닫기 버튼을 눌러도 창만 숨겨지고 수신은 계속될 수 있습니다. 종료한 다음 포트를 다시 조회해 수신이 사라졌는지 확인하고, 유지할 클라이언트만 실행하세요.
- 점유 프로세스의 PID, 파일 경로, 명령줄을 기록하고 어느 프로그램 폴더에 해당하는지 확인하세요.
- 해당 프로그램의 정상 종료 메뉴로 종료한 뒤 몇 초 기다렸다가
10808을 다시 조회하세요. - 클라이언트를 종료했는데도 해당 폴더의 코어가 실행 중인 것으로 확인되면 작업 관리자의 ‘세부 정보’에서 PID를 확인한 뒤 해당 프로세스를 종료할 수 있습니다.
- v2rayN을 하나만 실행하고 로그에 같은 바인딩 오류가 다시 나타나는지 확인하세요.
수신 포트 변경: 대체 포트 11808 예시
기존 포트를 다른 프로그램에 할당해야 한다면 v2rayN의 로컬 수신 포트를 11808로 변경할 수 있습니다. 이 값은 대체 포트 예시일 뿐, 사용 중인 PC에서 비어 있다고 보장할 수 없습니다. 앞서 안내한 명령으로 11808을 확인하고 필요하면 아래의 시스템 제외 포트 범위도 점검하세요.
-
기존 설정 기록
현재 포트와 수신 주소, 시스템 프록시 상태를 적어 두세요. 이 글에서는
127.0.0.1:10808을127.0.0.1:11808로 변경하며, 노드의 원격 포트는 바꾸지 않습니다. -
매개변수 설정 열기
‘설정’ → ‘매개변수 설정’으로 이동한 뒤 기본 설정 영역에서 로컬 수신 포트를 찾으세요. 화면에는 ‘로컬 혼합 수신 포트’ 또는 ‘로컬 수신 포트’로 표시될 수 있습니다. 현재 버전에 실제로 표시되는 항목을 기준으로 설정하세요.
-
새 포트 입력
해당 로컬 진입점의 포트를
11808로 변경하세요. 화면에 SOCKS와 HTTP 진입점이 각각 표시되면 항목별로 확인해야 합니다. 서로 다른 두 수신 설정에 같은 포트를 지정할 수는 없습니다. 혼합 진입점은 하나의 포트에서 두 프로토콜을 모두 받을 수 있습니다. -
저장 후 다시 시작
설정을 저장해 코어를 다시 불러오세요. 자동으로 재시작되지 않으면 v2rayN을 종료하고 다시 실행한 뒤
11808의 수신 프로세스를 조회해 이번에 실행한 클라이언트의 경로인지 확인하세요. -
시스템 프록시 갱신
메인 창이나 트레이의 ‘시스템 프록시’ 메뉴에서 먼저 ‘시스템 프록시 해제’를 선택한 다음 ‘시스템 프록시 자동 설정’을 선택하세요. 이후 시스템 프록시의 실제 주소가 새 포트를 가리키는지 확인하세요.
로컬 수신 포트와 노드의 원격 포트는 별개의 설정입니다. 노드 편집 창에 표시되는 443 등의 포트는 원격 서버의 포트입니다. 이를 변경하면 노드 연결이 실패할 수 있으며 로컬 10808 점유 문제를 해결하지 못합니다. 사용자 지정 설정을 사용한다면 실제 적용 중인 인바운드 설정도 확인하세요. 일반 매개변수 설정 페이지가 사용자 지정 인바운드 설정을 덮어쓰지 않을 수 있습니다.
프록시 설정 동기화: 이전 포트를 사용하는 앱 확인
포트를 변경한 뒤에도 앱이 이전 진입점에 연결하는 경우가 흔합니다. Windows 11에서는 ‘설정’ → ‘네트워크 및 인터넷’ → ‘프록시’ → ‘수동 프록시 설정’에서 주소와 포트를 확인하세요. Windows 10에서도 ‘설정’ → ‘네트워크 및 인터넷’ → ‘프록시’에서 확인할 수 있습니다. 일반적인 로컬 HTTP 프록시는 127.0.0.1과 11808을 사용하도록 설정해야 합니다.
- 시스템 프록시를 사용하는 브라우저: 시스템 프록시를 갱신한 뒤 페이지를 다시 여세요. 브라우저에 별도의 프록시 확장 프로그램이 있다면 해당 설정도 확인하세요.
- 프록시를 직접 설정한 앱: 앱 내부의
127.0.0.1:10808을 새 진입점으로 변경하고 HTTP와 SOCKS 중 어떤 프로토콜이 필요한지 확인하세요. - 명령줄 환경:
HTTP_PROXY,HTTPS_PROXY,ALL_PROXY가 여전히 이전 포트를 가리키는지 확인하세요. 이미 열려 있는 터미널에는 나중에 변경한 환경 변수가 자동으로 적용되지 않습니다. - TUN 사용 환경: 시스템 프록시와 TUN은 서로 다른 트래픽 처리 방식입니다. 로컬 진입점을 점검할 때는 한 가지 테스트 경로만 사용하고 라우팅 및 트래픽 처리 설정을 동시에 여러 개 바꾸지 마세요.
아래 명령으로 현재 PowerShell 세션의 프록시 환경 변수를 확인할 수 있습니다. 이전 값이 남아 있다면 브라우저만 새로 고치지 말고 해당 값을 설정한 터미널 설정이나 시스템 환경 변수에서 변경하세요.
Get-ChildItem Env: |
Where-Object Name -Match '^(HTTP_PROXY|HTTPS_PROXY|ALL_PROXY|NO_PROXY)$'
결과 확인: 수신과 외부 연결을 따로 테스트
먼저 새 포트가 열려 있는지 확인한 다음 해당 포트로 요청을 보내세요. 아래 예시는 11808이 HTTP를 지원하는 혼합 진입점 또는 HTTP 진입점이라고 가정합니다. 별도 SOCKS 진입점이라면 아래의 SOCKS 명령을 사용하세요.
Get-NetTCPConnection -State Listen -LocalPort 11808 -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, OwningProcess
Test-NetConnection -ComputerName 127.0.0.1 -Port 11808
curl.exe --noproxy "" --proxy http://127.0.0.1:11808 --connect-timeout 10 --max-time 20 -I https://example.com/
TcpTestSucceeded : True는 TCP 연결이 성공했다는 뜻일 뿐, 수신 프로세스가 반드시 v2rayN이라는 뜻도 원격 노드가 사용 가능하다는 뜻도 아닙니다. 프로세스 경로를 다시 확인하고 요청을 보낼 때 코어 로그에 관련 기록이 남는지 살펴보세요. HTTP 응답 헤더는 요청에 응답이 왔다는 뜻이며, 구체적인 상태 코드는 대상 사이트에 맞춰 판단해야 합니다.
curl.exe --noproxy "" --proxy socks5h://127.0.0.1:11808 --connect-timeout 10 --max-time 20 -I https://example.com/
SOCKS 예시의 socks5h는 대상 호스트 이름의 해석을 프록시에 맡긴다는 뜻입니다. 진입점 유형에 맞는 명령 하나만 사용하고 테스트를 통과시키려고 노드 프로토콜을 임의로 바꾸지 마세요. 프록시를 명시한 요청은 성공하는데 브라우저에서만 실패한다면 수신 포트를 다시 바꾸기보다 시스템 프록시와 브라우저의 별도 설정을 먼저 확인하세요.
점유 프로세스가 없을 때: 시스템 예약 포트 확인
액세스 권한 관련 바인딩 오류가 발생하고 TCP 조회에도 결과가 없다면 관리자 터미널에서 Windows 제외 포트 범위를 확인하세요. 가상화 및 네트워크 구성 요소가 이러한 범위를 만들 수 있습니다. 포트가 해당 범위에 포함되면 사용자 프로세스가 수신 중이지 않아도 바인딩하지 못할 수 있습니다.
netsh interface ipv4 show excludedportrange protocol=tcp
netsh interface ipv6 show excludedportrange protocol=tcp
출력에는 시작 포트와 끝 포트가 범위로 표시됩니다. 예를 들어 한 행에 11800부터 11899까지 표시된다면 11808도 해당 범위에 포함됩니다. 이는 결과를 읽는 방법을 보여 주는 예시이며 사용 중인 장치에 이 예약 범위가 반드시 있다는 뜻은 아닙니다. 범위 밖이면서 수신 프로세스가 없는 포트를 선택해 설정을 저장하고 테스트하세요. 출처를 알 수 없는 시스템 예약 항목을 직접 삭제하지 마세요.
- 로그에
udp가 표시되면Get-NetUDPEndpoint -LocalPort 10808 -ErrorAction SilentlyContinue로 UDP 점유 여부를 확인하세요. TCP만 조회하지 마세요. - 바인딩 주소가 현재 장치에 존재하는 주소가 아니라면 프로세스를 계속 종료하지 말고 수신 주소 설정을 확인하세요.
- 예약되지 않은 빈 포트를 여러 개 시도해도 계속 거부된다면 보안 소프트웨어 이벤트와 조직의 장치 정책을 확인하고 전체 로그를 보관해 관리자에게 문의하세요.
포트 충돌 자주 묻는 질문
11808로 바꿨는데도 웹페이지가 열리지 않는 이유는 무엇인가요?
새 포트를 올바른 코어가 수신 중인지 확인한 다음 ‘시스템 프록시’에서 설정을 해제하고 자동으로 다시 설정하세요. 브라우저 확장 프로그램, 수동 프록시, 환경 변수에 여전히 10808이 설정되어 있는지 확인하세요. 새 포트를 명시한 curl 명령으로 로컬 진입점 문제와 노드 문제를 구분할 수 있습니다.
컴퓨터를 켤 때마다 충돌이 발생하는데 매번 프로세스를 수동으로 종료해야 하나요?
프로세스 종료를 매번 해야 하는 절차로 만들 필요는 없습니다. 작업 관리자에서 ‘시작 앱’을 확인하고 작업 스케줄러에 클라이언트가 두 개 등록되어 자동 실행되는지 살펴보세요. 명확한 시작 항목 하나만 유지하세요. 두 프로그램을 모두 실행해야 한다면 서로 다른 포트를 지정하세요.
노드를 바꾸거나 구독을 업데이트하면 10808 점유 문제를 해결할 수 있나요?
로컬 수신 포트를 직접 해제할 수는 없습니다. 구독에는 노드 설정이 포함되며 노드의 원격 포트는 로컬 인바운드 포트와 다릅니다. 먼저 코어가 로컬 포트에 정상적으로 바인딩되도록 한 다음 실제 연결 지연 시간과 노드 사용 가능 여부를 확인하세요.
관리자 권한으로 실행하니 성공했는데, 앞으로도 항상 이렇게 실행해야 하나요?
먼저 어떤 차이가 있었는지 확인하세요. 일반적인 루프백 프록시 수신에는 보통 관리자 권한이 필요하지 않습니다. 관리자 권한으로 실행하면서 정책 적용 방식이 달라졌거나, 두 번째 실행 시 기존 점유 프로세스가 종료된 것일 수 있습니다. 수신 프로세스, 예약 범위, 로그를 다시 확인하고 관리자 권한으로 실행해 원인을 가리지 마세요.