v2rayN이 코어를 시작하려면 로컬 주소에 SOCKS, HTTP 또는 혼합 프록시 수신 포트를 열어야 합니다. 지정된 포트를 다른 프로세스가 사용 중이면 Xray 또는 V2Ray 코어가 수신을 시작할 수 없습니다. 이때 노드 자체는 정상일 수 있지만 로컬 진입점이 시작되지 않아 시스템 프록시가 트래픽을 전달하지 못합니다.
10808, 10809 포트 충돌이나 코어 시작 직후 종료 문제를 겪는 Windows 사용자를 위한 안내입니다. 먼저 로그에서 충돌 포트를 확인하고, netstat으로 해당 PID를 찾은 다음 점유 프로그램을 종료할지 v2rayN을 10818/10819로 변경할지 판단합니다. 마지막으로 시스템 프록시, 브라우저 및 기타 수동 프록시 도구를 함께 업데이트합니다.
먼저 로컬 수신 포트 충돌인지 확인하기
“웹페이지가 열리지 않는다”는 사실만으로 포트 사용 중이라고 단정할 수는 없습니다. 노드 시간 초과, 구독 만료, 시스템 프록시 비활성화, DNS 조회 오류도 비슷한 증상을 일으킵니다. 포트 충돌을 판단할 핵심 단서는 v2rayN 로그에 있습니다. 로그에는 대개 로컬 주소, 포트 번호와 함께 bind 또는 listen 실패 메시지가 표시됩니다.
v2rayN 7.11.3의 일반적인 설정을 예로 들면 로컬 SOCKS 진입점은 10808, HTTP 진입점은 10809를 사용합니다. 실제 포트는 이전 설정 마이그레이션, 사용자 변경 또는 코어 설정에 따라 달라질 수 있으므로 현재 로그와 「설정」→「매개변수 설정」에 표시된 값을 기준으로 확인해야 합니다. 기본 포트만 보고 판단하지 마세요.
오류: listen tcp 127.0.0.1:10808: bind: Only one usage of each socket address is normally permitted
원인 및 해결 방법:10808을 다른 프로세스가 수신 중입니다. 포트에 연결된 PID를 확인한 뒤 중복 클라이언트를 종료하거나 v2rayN의 로컬 수신 포트를 사용하지 않는 값으로 변경하세요.
오류: failed to listen TCP on 127.0.0.1:10809
원인 및 해결 방법:HTTP 인바운드가 10809에 바인딩되지 않았습니다. 동일한 포트를 사용하는 서비스를 확인하고, 주 포트를 변경한 뒤 연결된 포트도 함께 바뀌는지 확인하세요.
오류: bind: An attempt was made to access a socket in a way forbidden by its access permissions
원인 및 해결 방법:포트가 시스템 예약 범위에 속했거나 보안 정책에 의해 차단되었을 수 있습니다. 사용 중이지 않으면서 제외 범위에도 속하지 않는 10818, 10819 같은 포트로 변경한 뒤 코어를 다시 시작하세요.
결론: 먼저 로그의 주소와 포트를 확인하세요
오류 대상이 127.0.0.1:10808 또는 127.0.0.1:10809라면 점검 대상은 로컬 수신 계층입니다. 이 경우 VMess, VLESS 노드를 계속 바꿔도 문제가 해결되지 않는 경우가 많습니다.
netstat으로 포트를 점유한 프로세스 찾기
충돌 포트를 확인했다면 일반 권한으로 “명령 프롬프트”를 엽니다. 아래 명령에서 콜론은 생략하면 안 됩니다. 콜론을 포함하면 원격 연결 기록을 로컬 수신 기록으로 잘못 판단할 가능성을 줄일 수 있습니다.
netstat -ano | findstr :10808
일반적인 출력은 다음과 같습니다. 마지막 열의 18420은 프로세스 PID이고, LISTENING은 해당 프로세스가 로컬 컴퓨터의 10808 포트를 수신 중이라는 뜻입니다. LISTENING이 포함된 기록만 포트에 수신 프로세스가 있음을 직접 보여줍니다. ESTABLISHED는 연결이 설정된 상태이고 TIME_WAIT는 연결 종료 후의 일시적인 상태이므로, 이 두 상태만으로 포트 충돌을 판단할 수 없습니다.
TCP 127.0.0.1:10808 0.0.0.0:0 LISTENING 18420
PID를 확인했다면 다음 명령으로 프로세스 이름을 조회하세요:
tasklist /FI "PID eq 18420"
- 결과가 다른 v2rayN.exe라면 먼저 알림 영역에서 두 번째 인스턴스가 실행 중인지 확인하고, 중복 인스턴스를 정상적으로 종료하세요.
- 결과가 브라우저, 개발용 프록시 또는 다른 로컬 네트워크 도구라면 해당 프로그램이 여전히 10808을 사용해야 하는지 먼저 확인하세요.
- tasklist에서 프로세스를 찾지 못했다면 프로세스가 방금 종료되었을 수 있습니다. netstat을 다시 실행해 PID가 변경되었는지 확인하세요.
- 출력에 IPv4의 127.0.0.1과 IPv6의 ::1이 함께 표시된다면 두 수신 정보를 각각 기록해 바인딩 범위를 놓치지 않도록 하세요.
PowerShell로 수신 프로그램 확인하기
PowerShell에서는 로컬 포트를 바로 필터링하고 OwningProcess를 Get-Process에 전달할 수 있습니다. 해당 포트에서 수신 중인 프로그램이 없으면 명령에서 객체를 찾을 수 없다고 표시되며, 이는 대개 점유가 해제되었다는 뜻입니다.
Get-NetTCPConnection -LocalPort 10808 -State Listen
Get-Process -Id (Get-NetTCPConnection -LocalPort 10808 -State Listen).OwningProcess
낯선 프로세스 이름이 보인다고 즉시 강제 종료하지 마세요. 시스템 서비스, 개발 환경 및 로컬 네트워크 디버깅 프로그램도 정상적으로 로컬 포트를 사용할 수 있습니다. 먼저 프로그램의 용도를 확인한 뒤 점유 프로그램을 종료할지 v2rayN을 새 포트로 변경할지 결정하는 것이 안전합니다.
v2rayN에서 로컬 수신 포트 변경하기
점유 프로그램을 계속 실행해야 한다면 v2rayN의 포트를 변경하는 방법이 가장 간단합니다. v2rayN을 열고 「설정」→「매개변수 설정」으로 이동한 뒤 “로컬 수신 포트” 또는 해당 코어 기본 설정을 찾으세요. 메뉴 이름은 7.x 세부 버전에 따라 조금 다를 수 있지만 포트 항목에는 현재 값이 표시됩니다.
- 원래 값을 기록해 두세요. 예를 들어 SOCKS는 10808, HTTP는 10809이며, 필요할 때 설정을 되돌리는 데 도움이 됩니다.
- 주 수신 포트를 10818로 변경하세요. 별도의 HTTP 포트가 있다면 10819로 변경하세요.
- 로컬 네트워크 기기에 프록시 진입점을 제공해야 하는 경우가 아니라면 수신 주소는 127.0.0.1로 유지하세요.
- 매개변수를 저장하고 현재 코어를 중지한 다음 코어를 다시 시작하거나 v2rayN을 재시작하세요.
- 로그 영역으로 돌아가 127.0.0.1:10818 수신 성공 기록이 표시되고 새로운 bind 오류가 없는지 확인하세요.
| 용도 | 기존 설정 예시 | 새 설정 예시 | 함께 변경할 항목 |
|---|---|---|---|
| SOCKS 프록시 | 127.0.0.1:10808 | 127.0.0.1:10818 | 브라우저 수동 프록시, 명령줄 도구 |
| HTTP 프록시 | 127.0.0.1:10809 | 127.0.0.1:10819 | 시스템 프록시, 브라우저 확장 프로그램, 개발 도구 |
| 로컬 네트워크 수신 | 0.0.0.0:10808 | 실제 정책에 따라 설정 | 방화벽 규칙 및 기기 프록시 주소 |
변경 후 포트 조회를 다시 실행하세요. 10818의 LISTENING PID가 현재 코어 프로세스에 해당하고, 기존 포트 10808을 해당 코어가 더 이상 사용하지 않는 것이 정상입니다.
netstat -ano | findstr :10818
netstat -ano | findstr :10808
결론: 새 포트는 한 번의 전체 검증을 거쳐야 합니다
매개변수를 저장했다고 설정이 적용된 것은 아닙니다. 로그에 수신 성공이 표시되고, netstat에서 새 포트가 확인되며, 실제 요청이 프록시를 통해 전달되어야 변경이 완료된 것입니다.
시스템 프록시와 브라우저 프록시 동기화하기
포트 변경 후 가장 흔한 문제는 “코어는 정상적으로 시작되었지만 웹페이지가 여전히 열리지 않는다”는 것입니다. 노드 문제가 아니라 시스템이나 브라우저가 계속 10808/10809로 요청을 보내고 있기 때문인 경우가 많습니다. 기존 포트에는 수신 프로세스가 없으므로 요청이 즉시 실패합니다.
- v2rayN으로 시스템 프록시 자동 설정: 먼저 시스템 프록시를 한 번 해제한 다음 “시스템 프록시 자동 구성” 또는 현재 사용하는 시스템 프록시 모드를 다시 선택해 클라이언트가 새 HTTP 포트를 설정하도록 하세요.
- 브라우저가 시스템 프록시를 사용하는 경우: 브라우저를 완전히 종료했다가 다시 열고, 시스템 프록시 서버가 127.0.0.1:10809에서 127.0.0.1:10819로 변경되었는지 확인하세요.
- 브라우저에서 수동 SOCKS를 사용하는 경우: 서버는 127.0.0.1로 유지하고 포트를 10808에서 10818로 변경한 뒤 DNS는 기존 정책에 따라 설정하세요.
- 터미널에서 환경 변수를 사용하는 경우: HTTP_PROXY, HTTPS_PROXY 또는 ALL_PROXY의 포트를 변경해 명령줄이 기존 진입점에 계속 연결되지 않도록 하세요.
- 개발 도구에서 별도로 프록시를 설정하는 경우: 도구 자체의 네트워크 설정을 확인하세요. 일부 프로그램은 Windows 시스템 프록시를 읽지 않으므로 별도로 변경해야 합니다.
set HTTP_PROXY=http://127.0.0.1:10819
set HTTPS_PROXY=http://127.0.0.1:10819
set ALL_PROXY=socks5://127.0.0.1:10818
위의 set 명령은 현재 명령 프롬프트 창에만 적용되며 창을 닫으면 유지되지 않아 임시 검증에 적합합니다. 검증할 때는 먼저 netstat으로 포트가 LISTENING 상태인지 확인한 다음 프록시가 필요한 네트워크 요청을 실행하세요. 연결 로그에 새로운 인바운드 기록이 나타나면 요청이 v2rayN으로 들어온 것입니다.
증상: 코어는 정상적으로 시작되지만 브라우저에 프록시 서버가 연결을 거부한다고 표시됨
원인 및 해결 방법:브라우저가 여전히 기존 포트를 가리키고 있습니다. 수동 프록시를 127.0.0.1:10818 또는 127.0.0.1:10819로 변경한 뒤 브라우저를 다시 여세요.
증상: 브라우저는 작동하지만 터미널의 다운로드 명령이 계속 시간 초과됨
원인 및 해결 방법:터미널에 기존 프록시 환경 변수가 남아 있습니다. HTTP_PROXY, HTTPS_PROXY, ALL_PROXY를 확인하고 포트를 모두 변경하세요.
포트를 변경했는데도 오류가 발생할 때 확인할 사항
10818도 수신되지 않는다면 여러 포트를 무작정 시도하지 마세요. 먼저 새 포트가 프로세스에 점유되었는지, Windows 제외 범위에 속하는지, 또는 v2rayN이 중복 코어를 실행했는지 확인하세요. 상황에 따라 해결 방법이 다릅니다.
시스템 제외 포트 범위 확인하기
Windows 네트워크 구성 요소가 일부 TCP 포트를 예약할 수 있습니다. netstat에 수신 프로세스가 표시되지 않더라도 제외 범위에 속한 포트에서는 권한 관련 bind 오류가 발생할 수 있습니다. 관리자 권한으로 명령 프롬프트를 실행한 뒤 다음 명령을 입력하세요:
netsh interface ipv4 show excludedportrange protocol=tcp
사용하려는 10818이 출력된 범위에 포함되어 있다면 시스템 예약 정책을 변경하기보다 11808과 11809처럼 범위 밖의 새 포트를 선택하는 편이 안전합니다. 포트를 정한 뒤에도 시스템 프록시와 브라우저 설정을 함께 변경해야 합니다.
중복 코어와 잔류 프로세스 확인하기
- 먼저 v2rayN 기본 화면에서 코어를 중지하고 3초간 기다린 다음 10808, 10809, 10818, 10819를 조회하세요.
- 중지한 뒤에도 포트가 LISTENING 상태라면 PID를 기록하고 tasklist로 잔류 코어 프로세스가 있는지 확인하세요.
- 가능하면 기존 클라이언트에서 정상적으로 종료하세요. 프로세스가 응답하지 않고 PID를 확인한 경우에만 작업 관리자를 통해 해당 프로세스를 종료하세요.
- v2rayN을 다시 시작한 뒤 기본 창 하나만 유지하고 로그에 동일한 인바운드가 반복 생성되는지 확인하세요.
자주 묻는 질문과 검증 방법
10808이 사용 중인데 10809로 바로 바꿔도 되나요?
먼저 10809가 HTTP 인바운드에 이미 사용 중인지 확인하세요. 독립된 두 인바운드가 있다면 같은 포트로 바꿔서는 안 됩니다. 10818과 10819처럼 한 쌍으로 변경하고 로그에서 각각의 용도를 확인하는 것이 좋습니다.
점유 프로세스를 종료했는데 컴퓨터를 다시 시작하면 왜 충돌하나요?
점유 프로그램이 시작 프로그램으로 등록되어 있을 수 있습니다. tasklist로 프로세스 이름을 기록한 뒤 “작업 관리자”→“시작 앱”에서 해당 항목을 확인하세요. 두 클라이언트를 모두 유지해야 한다면 v2rayN에 서로 다른 포트 한 쌍을 고정해 사용하세요.
포트를 변경한 후 v2rayNG 또는 v2flyNG도 함께 변경해야 하나요?
아니요. v2rayNG와 v2flyNG는 Android 기기에서 각각 로컬 프록시 또는 VPN 인터페이스를 생성하며, Windows의 v2rayN 127.0.0.1 수신 포트를 읽지 않습니다.
문제가 완전히 해결되었는지 어떻게 확인하나요?
로그에 bind 오류가 없는지, netstat에서 새 포트가 LISTENING 상태인지, PID가 현재 코어에 해당하는지, 시스템 프록시가 새 포트를 가리키는지 차례로 확인한 뒤 실제 웹페이지 또는 터미널 요청을 한 번 실행하세요.
TIME_WAIT만 보이면 포트를 변경해야 하나요?
대부분 변경할 필요가 없습니다. TIME_WAIT는 연결 종료 후 나타나는 정상적인 상태입니다. 같은 포트의 LISTENING 기록을 계속 찾고, v2rayN 코어 로그에서 bind 실패를 보고했는지를 기준으로 판단하세요.
재사용 가능한 문제 해결 순서는 코어 로그 확인, 포트 PID 조회, 프로세스 용도 확인, 점유 프로세스 종료 또는 수신 포트 변경입니다. 변경을 마친 뒤 시스템 프록시, 브라우저 및 명령줄 환경 변수까지 함께 업데이트하면 “포트 충돌은 사라졌지만 애플리케이션이 계속 기존 포트에 연결되는” 2차 문제를 피할 수 있습니다.