v2rayN에서 코어를 시작할 때 수신에 실패하거나 브라우저에서 프록시 연결이 거부되는 경우에 적용됩니다. 먼저 로그에서 충돌 포트를 확인한 뒤 Windows 명령으로 수신 프로세스를 찾으세요. 중복 실행을 종료할 수 있다면 기존 포트를 유지하고, 두 인스턴스를 함께 실행해야 할 때만 수신 설정을 변경하세요. 마지막으로 시스템 프록시와 앱 프록시 설정도 함께 바꿔 ‘코어는 시작됐지만 브라우저는 이전 포트에 연결하는’ 문제를 방지합니다.
1. 10808 포트 충돌과 노드 연결 실패의 차이
로컬 수신 포트는 브라우저와 명령줄 도구가 v2rayN 코어에 연결하는 진입점이며, 구독 서버의 원격 포트가 아닙니다. 로그에 127.0.0.1:10808 바인딩 실패가 표시되면 요청을 로컬에서 받기 전부터 문제가 발생한 것입니다. 이 경우 노드 변경, 구독 갱신, VMess·VLESS 매개변수 수정으로는 포트 점유가 해결되지 않는 경우가 많습니다.
먼저 v2rayN 메인 화면의 로그 영역에서 시작 직후 기록을 확인하고, 오류에 표시된 주소·포트·시간을 메모하세요. 다음은 자주 보이는 오류 문구이며, 앞뒤 로그 접두사는 코어와 시스템에 따라 달라질 수 있습니다. 핵심은 ‘주소가 이미 사용 중’인 경우와 ‘접근이 거부됨’을 구분하는 것입니다. 후자는 일반적인 점유 프로세스를 찾지 못할 수도 있습니다.
오류: Only one usage of each socket address (protocol/network address/port) is normally permitted.
원인 및 해결 방법: Windows에서 흔히 나타나는 소켓 주소 충돌 오류입니다. 로그에 표시된 로컬 포트를 확인하고 수신 프로세스를 찾아 중복 인스턴스를 종료하거나, 현재 인스턴스에 사용 가능한 포트를 지정하세요.
오류: bind: address already in use
원인 및 해결 방법: 지정한 주소와 포트에 다시 바인딩할 수 없는 상태로, 해당 포트를 이미 다른 프로세스가 수신 중일 때 자주 발생합니다. 사용 중인 시스템에 맞는 방법으로 수신 프로세스를 확인하세요. 구독이 만료된 문제로 오해하지 마세요.
오류: An attempt was made to access a socket in a way forbidden by its access permissions.
원인 및 해결 방법: 포트 접근이 제한된 상태입니다. 시스템에서 제외한 포트 범위나 보안 정책이 원인일 수 있습니다. 먼저 수신 프로세스와 제외 범위를 확인한 뒤, 사용 중이 아니면서 제외되지 않은 포트를 선택하세요.
2. Windows에서 10808 수신 프로세스 확인하기
아래 명령은 Windows PowerShell에서 실행합니다. TCP 수신 상태를 확인하세요. 출력에 10808이 있다는 이유만으로 점유 중이라고 판단하면 안 됩니다. 일반적인 아웃바운드 연결에도 이 숫자가 포함될 수 있으므로 로컬 주소, 로컬 포트, 수신 상태를 함께 확인해야 합니다.
Get-NetTCPConnection -LocalPort 10808 -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, State, OwningProcess
OwningProcess는 프로세스 번호인 PID입니다. 결과에 PID 4321이 표시되면 아래 명령을 실행하세요. 4321은 예시이므로 실제 조회 결과로 바꿔야 합니다. PID는 프로세스가 다시 시작되면 바뀌므로 이전 기록을 그대로 사용하지 마세요.
Get-Process -Id 4321 | Select-Object Id, ProcessName, Path
Get-CimInstance Win32_Process -Filter "ProcessId = 4321" |
Select-Object ProcessId, ExecutablePath, CommandLine
실행 파일 경로를 보면 압축을 푼 폴더가 다른 두 프로그램을 구분하는 데 도움이 되고, 명령줄은 코어가 어떤 설정을 사용하는지 확인하는 단서가 됩니다. 일부 프로세스 정보는 관리자 권한이 있어야 조회할 수 있습니다. 경로가 표시되지 않는다고 프로세스가 없는 것은 아닙니다. 도움을 요청할 때는 전체 명령줄이나 설정 내용을 그대로 공개하지 마세요. 로컬 경로와 연결 정보가 포함될 수 있습니다.
명령 프롬프트에서 확인하는 방법
netstat -ano -p tcp | findstr ":10808"
tasklist /FI "PID eq 4321"
netstat출력에서 로컬 주소가:10808로 끝나고 상태가LISTENING인 행을 찾으세요. 마지막 열에 PID가 표시됩니다.127.0.0.1:10808은 IPv4 루프백 수신 주소입니다.0.0.0.0:10808은 모든 IPv4 인터페이스를 의미하며, 이 경우 루프백 주소에서도 같은 포트를 사용하지 못할 수 있습니다.[::]:10808이 표시되면 IPv6 및 듀얼 스택 수신 여부도 확인해야 합니다. IPv4만 확인한 뒤 포트가 비어 있다고 단정하지 마세요.- 로그에 UDP 바인딩 실패가 명시되어 있다면
Get-NetUDPEndpoint -LocalPort 10808 -ErrorAction SilentlyContinue를 실행한 뒤 PID로 프로세스를 확인하세요. TCP와 UDP의 포트 점유 여부는 각각 따로 판단해야 합니다.
3. 중복 실행, 남아 있는 코어 프로세스, 시스템 제외 포트
프로세스를 찾았다면 해당 프로그램의 트레이 메뉴에서 정상적으로 종료한 다음 다시 조회하세요. v2rayN은 창을 닫아도 트레이에서 계속 실행될 수 있습니다. 다른 사용자 세션, 시작 프로그램, 이전에 압축을 푼 폴더의 인스턴스가 포트를 계속 점유할 수도 있습니다. 코어 프로세스 이름은 단서일 뿐이므로 이름만 보고 같은 이름의 프로세스를 모두 종료하지 마세요.
- 같은 클라이언트를 두 번 실행한 경우: 유지할 인스턴스와 폴더를 확인하고 다른 인스턴스를 종료하세요. 트레이 아이콘과 작업 관리자의 파일 위치를 확인한 뒤 남겨 둔 인스턴스를 다시 시작합니다.
- 종료 후에도 코어가 계속 수신하는 경우: 해당 PID의 경로와 명령줄을 확인해 방금 종료한 인스턴스에 속하며 다른 용도가 없는지 확인하세요. 확인 후 작업 관리자에서 종료합니다. 종료한 뒤 포트를 다시 조회하고, 시작 버튼을 연달아 누르지 마세요.
- 다른 프로그램을 계속 사용해야 하는 경우: 데이터베이스, 개발 서버, 시스템 프로세스를 강제로 종료하지 마세요. v2rayN에 다른 포트 조합을 지정하고 해당 프록시를 사용하는 앱도 함께 변경하세요.
- 수신 프로세스가 없는데도 접근 거부가 표시되는 경우: 시스템에서 제외한 포트 범위를 확인하세요. 가상화나 컨테이너 네트워크 기능이 포트 할당에 영향을 줄 수 있으므로 실제 컴퓨터의 조회 결과를 기준으로 판단해야 합니다.
netsh interface ipv4 show excludedportrange protocol=tcp
netsh interface ipv6 show excludedportrange protocol=tcp
조회 결과의 시작 포트와 끝 포트 사이에 10808이 포함되는지 확인하세요. 해당 범위에 속한다면 시스템 예약 항목을 삭제하기보다 범위 밖의 포트를 선택하는 편이 안전합니다. 수신 기록도 없고 제외 범위에도 해당하지 않는다면 관리자 권한으로 반복 실행해 보기보다 시작 순간의 로그, 바인딩 주소, 보안 프로그램 기록을 추가로 확인하세요.
4. 설정에서 SOCKS, HTTP, 혼합 포트 변경하기
먼저 현재 설정을 기록한 뒤 「설정」→「매개변수 설정」을 열고 「Core 기본 설정」에서 로컬 수신 관련 항목을 찾으세요. 버전과 코어 조합에 따라 ‘로컬 혼합 수신 포트’만 표시될 수도 있고, SOCKS와 HTTP 설정이 따로 제공될 수도 있습니다. 현재 화면과 시작 로그를 기준으로 확인하고 입력란이 반드시 두 개 있다고 가정하지 마세요.
11808과 11809는 이 문서의 설정 예시일 뿐, 사용 중인 컴퓨터에서 비어 있다고 보장할 수 없습니다. 저장하기 전에 앞서 소개한 명령으로 두 포트를 조회하고 시스템 제외 범위도 확인하세요. 포트 번호만으로 프로토콜이 정해지는 것은 아닙니다. 10808이 반드시 SOCKS이거나 10809가 반드시 HTTP인 것은 아니며, 실제로 어떤 요청을 받는지는 인바운드 설정에 따라 달라집니다.
| 현재 설정 유형 | 변경 예시 | 앱에서 지정할 값 |
|---|---|---|
| 단일 혼합 수신 포트 | 로컬 혼합 수신 포트를 11808로 변경 | 지원되는 HTTP와 SOCKS 요청은 모두 이 포트로 연결합니다. 앱에서 올바른 프록시 프로토콜을 선택해야 합니다. |
| SOCKS와 HTTP 수신 포트 분리 | SOCKS는 11808, HTTP는 11809로 변경 | SOCKS 앱은 11808에, HTTP 프록시 앱은 11809에 연결 |
| 사용자 지정 설정의 인바운드 | 설정 파일에서 실제 인바운드 수신 포트 확인 | 앱은 해당 인바운드 설정을 따라야 합니다. 화면의 설정값이 사용자 지정 파일에 반영되지 않을 수도 있습니다. |
- 실패했을 때 되돌릴 수 있도록 기존 포트, 수신 주소, 시스템 프록시 모드를 기록하세요.
- 매개변수 설정에서 실제 사용 중인 수신 항목을 변경하세요. 노드 서버 포트는 수정하지 마세요.
- 설정을 저장하고 서비스를 다시 시작하세요. 현재 버전에 별도 재시작 메뉴가 없다면 클라이언트를 정상 종료한 후 다시 여세요.
- 이번 시작 로그에 바인딩 오류가 없는지 확인하고, 새 포트에서 수신이 시작됐는지 다시 조회하세요.
요약: 인바운드 유형을 확인한 뒤 포트 변경
화면에 혼합 포트만 있다면 HTTP 포트를 따로 찾거나 만들 필요가 없습니다. 설정이 분리되어 있다면 두 항목을 각각 확인하세요. 변경이 제대로 됐는지는 입력란의 숫자가 바뀌었는지가 아니라 새 포트를 예상한 코어 프로세스가 수신 중인지로 판단해야 합니다.
5. 포트 변경 후 함께 바꿔야 할 설정
로컬 포트를 바꿔도 직접 입력한 프록시 주소는 대개 자동으로 갱신되지 않습니다. 특히 열려 있는 터미널 창, 브라우저의 독립 프록시 설정, 다운로드 도구를 확인하세요. 기존 연결은 잠시 유지되다가 새 연결에서만 오류가 날 수 있으므로 앱을 다시 열어 테스트해야 합니다.
- Windows 시스템 프록시: v2rayN의 ‘시스템 프록시’ 메뉴에서 ‘시스템 프록시 자동 설정’ 등을 다시 선택해 현재 모드를 적용하세요. 그런 다음
「설정」→「네트워크 및 인터넷」→「프록시」에서 실제 적용된 서버와 포트를 확인합니다. Windows 버전에 따라 메뉴 이름이 조금 다를 수 있습니다. - 브라우저의 독립 프록시: 브라우저 설정이나 확장 프로그램에
127.0.0.1:10808을 직접 입력했다면 새 수신 주소와 프로토콜에 맞게 변경하세요. 시스템 프록시를 따르는 브라우저라면 시스템 설정을 중점적으로 확인합니다. - 터미널 환경 변수:
HTTP_PROXY,HTTPS_PROXY,ALL_PROXY와 도구 자체 설정을 확인하세요. 임시 변수는 현재 터미널과 그 터미널에서 새로 시작한 하위 프로세스에만 적용됩니다. 사용자 환경 변수를 변경한 뒤에는 보통 터미널을 다시 열어야 합니다. - 개발 및 다운로드 도구: 도구 설정에서 프록시 프로토콜, 주소, 포트를 함께 확인하세요. 원격 사이트가 HTTPS를 사용한다고 해서 로컬 HTTP 프록시 주소도
https://로 지정해야 하는 것은 아닙니다. - 자동 시작 및 스크립트: 이전 폴더의 클라이언트가 자동으로 실행되거나 시작 스크립트에 예전 포트가 고정되어 있는지 확인하세요. 그대로 두면 다음 로그인 때 충돌이 다시 발생할 수 있습니다.
아래는 PowerShell 현재 세션에서 사용할 설정 예시입니다. 새 포트가 해당 프로토콜을 지원하는지 확인한 경우에만 사용하세요. HTTP 전용 포트가 11809라면 앞의 두 줄을 사용합니다. 혼합 포트가 11808이라면 앞의 두 줄에 있는 포트를 11808로 바꾸면 됩니다. 세 번째 줄은 수신 포트가 SOCKS5를 지원해야 사용할 수 있습니다.
$env:HTTP_PROXY = "http://127.0.0.1:11809"
$env:HTTPS_PROXY = "http://127.0.0.1:11809"
$env:ALL_PROXY = "socks5h://127.0.0.1:11808"
6. 새 포트 확인 및 문제 단계별 진단
먼저 수신 상태를 확인하고, 다음으로 프록시 핸드셰이크를 테스트한 뒤, 마지막으로 특정 웹사이트에 접속해 보세요. 이렇게 하면 로컬 포트, 프록시 프로토콜, 원격 연결 문제를 구분할 수 있습니다. 아래 명령의 포트는 예시이므로 설정이 다르면 실제 값으로 바꾸세요.
Test-NetConnection 127.0.0.1 -Port 11808
curl.exe --proxy socks5h://127.0.0.1:11808 --connect-timeout 10 --max-time 20 -I https://example.com/
curl.exe --proxy http://127.0.0.1:11809 --connect-timeout 10 --max-time 20 -I https://example.com/
실제 인바운드 유형에 맞는 curl.exe 명령 하나만 선택하면 됩니다. 혼합 포트가 11808이라면 HTTP 테스트에도 11808을 사용하세요. Test-NetConnection 성공은 TCP 연결이 성립했다는 뜻일 뿐, 프로토콜이 맞거나 원격 노드를 사용할 수 있다는 의미는 아닙니다. 예시 URL은 연결 확인용이며, 프록시를 통해 아웃바운드되는지는 현재 라우팅 규칙에 따라 달라집니다.
| 확인 결과 | 먼저 확인할 항목 | 다음 단계 |
|---|---|---|
| 새 포트에서 수신이 시작되지 않음 | 설정이 적용됐는지, 코어가 시작됐는지 | 시작 로그를 확인하고 사용자 지정 설정과 실제 바인딩 주소를 대조 |
| 포트는 수신 중이지만 프록시 핸드셰이크 실패 | HTTP와 SOCKS 프로토콜이 서로 맞는지 | 앱의 프록시 유형을 바로잡고 다른 프로그램에 연결된 것은 아닌지 확인 |
| 프록시 핸드셰이크 후 연결 시간 초과 | 아웃바운드 노드, DNS, 라우팅 로그 | 노드 연결 문제를 확인하고 로컬 포트를 무작정 계속 바꾸지 않기 |
| 명령줄은 되지만 브라우저는 실패 | 브라우저의 프록시 설정 출처와 이전 프로세스 | 브라우저의 개별 설정을 변경하고 완전히 종료한 뒤 다시 테스트 |
7. 반복되는 충돌 마무리 점검
컴퓨터를 다시 시작할 때마다 충돌이 반복된다면 포트 번호를 계속 늘리기보다 로그인 시작 항목과 여러 압축 해제 폴더를 확인하세요. 실제로 사용할 클라이언트 폴더 하나를 정하고 수신 포트와 용도를 기록하세요. 두 인스턴스를 함께 실행해야 한다면 각각 다른 수신 포트를 지정하고 앱의 프록시 설정도 따로 관리해야 합니다.
- 새 포트의 수신 PID가 예상한 프로세스에 속하는지, 기존 포트를 수신하던 프로세스도 확인했는지 점검하세요. 잠시 인터넷이 된다는 이유만으로 문제 해결을 끝내지 마세요.
- 시스템 프록시가 이전 포트를 계속 참조하지 않는지 확인하세요. 클라이언트를 종료할 때는 더 이상 사용하지 않는 시스템 프록시 설정을 클라이언트에서 해제하세요.
- 평소 사용하는 TUN 또는 라우팅 모드로 돌아간 뒤 다시 테스트하세요. 임시 테스트 모드에서만 정상 작동하는 상황을 놓치지 않도록 합니다.
- 도움을 요청할 때는 시스템 버전, 클라이언트 버전, 오류 메시지 전체, 포트, 프로세스 이름을 제공하세요. 구독 주소, 계정 정보, 노드 인증 정보는 가려야 합니다.
로컬 수신을 복구한 다음 구독, 노드, 라우팅 문제를 확인하세요. 설치부터 첫 실행까지의 전체 절차는 v2rayN 설정 가이드를 참고하세요. 그 밖의 자주 발생하는 오류는 자주 묻는 질문에서 찾아볼 수 있습니다.