Windows에서 v2rayN의 코어가 시작되지 않거나 주소가 이미 사용 중이라는 오류가 표시될 때, 또는 포트를 변경한 뒤 브라우저가 연결되지 않을 때 적용할 수 있습니다. 먼저 수신 주소와 포트를 확인하고 프로세스 정보를 조회하세요. 중복 실행된 프로그램을 안전하게 종료할 수 있으면 포트를 비우고, 여러 프로그램을 동시에 실행해야 한다면 로컬 인바운드 포트를 변경하세요. 마지막으로 시스템 프록시와 브라우저 설정을 함께 바꾸고 연결을 확인합니다. 원격 노드의 포트는 이 과정에서 변경하지 않습니다.
10808·10809와 노드 포트의 차이
로컬 수신 포트는 브라우저 같은 앱이 v2rayN에 연결할 때 사용하는 입구이며, 서버의 서비스 포트가 아닙니다. 요청을 받으려면 클라이언트가 먼저 로컬 주소에 바인딩되어야 합니다. 로그에 address already in use 또는 “일반적으로 각 소켓 주소는 한 번만 사용할 수 있습니다”라는 메시지가 표시되면 구독을 다시 가져오거나 노드를 바꾸거나 TLS 설정을 수정하기보다 먼저 로컬 포트 충돌을 확인하세요.
세대와 인터페이스 버전에 따라 인바운드 설정이 다를 수 있습니다. 일부 구형 설정은 SOCKS에 10808, HTTP에 10809를 각각 사용합니다. 혼합 인바운드를 지원하는 설정에서는 HTTP와 SOCKS가 하나의 포트를 함께 사용할 수 있습니다. 포트 번호만 보고 프로토콜을 판단하지 마세요. 「설정」→「매개변수 설정」에서 로컬 인바운드 설정을 확인하고 시작 로그와 대조하세요.
수신 프로세스 찾기: 로컬 포트와 PID 확인
Windows PowerShell을 열고 아래 명령을 실행하세요. 연결 정보를 확인할 때는 일반 권한으로 충분한 경우가 많습니다. 프로세스 경로를 읽을 때 액세스가 거부되면 관리자 권한으로 터미널을 여세요. 이 명령은 TCP 수신 상태만 조회하며 프로세스를 중지하거나 네트워크 설정을 변경하지 않습니다.
Get-NetTCPConnection -State Listen -ErrorAction SilentlyContinue |
Where-Object { $_.LocalPort -in 10808,10809,20808 } |
Select-Object LocalAddress,LocalPort,State,OwningProcess
LocalPort와 OwningProcess를 확인하세요. 10808에 해당하는 프로세스 ID가 표시되면 다음 명령으로 이름과 경로를 확인합니다. 아래의 1234는 예시 PID이므로 실행 전에 조회한 실제 숫자로 바꾸세요. PowerShell의 $PID는 현재 PowerShell 프로세스 ID를 나타내므로 임시 변수로 사용하지 마세요.
Get-Process -Id 1234 | Select-Object Id,ProcessName,Path
127.0.0.1은 IPv4 루프백 주소로, 보통 로컬 앱에서만 사용할 수 있습니다.0.0.0.0은 모든 IPv4 인터페이스에서 수신한다는 뜻이며, 같은 포트의 루프백 바인딩과 충돌할 수 있습니다.::1은 IPv6 루프백 주소입니다.::는 IPv6 와일드카드 주소이며 IPv4 연결도 받는지는 소켓 설정에 따라 달라집니다.- 같은 PID가 여러 줄에 표시되어도 반드시 비정상인 것은 아닙니다. IPv4와 IPv6에서 동시에 수신하거나 여러 로컬 연결 지점을 제공할 수 있습니다.
명령 프롬프트를 주로 사용한다면 아래 명령을 실행해도 됩니다. 결과의 ‘로컬 주소’ 열 끝에 대상 포트가 표시되고 상태가 LISTENING인지 확인하세요. 원격 연결에 표시된 10808을 로컬 수신 포트로 착각하면 안 됩니다. TIME_WAIT만으로는 프록시 서비스를 제공하는 프로세스가 실행 중이라고 볼 수 없습니다.
netstat -ano -p tcp | findstr /C:":10808" /C:":10809"
tasklist /FI "PID eq 1234"
점유 프로세스 확인: 중복 실행 종료 또는 로컬 포트 변경
포트를 점유한 프로세스는 다른 v2rayN 인스턴스, 이전 종료 후 남은 코어 프로세스 또는 계속 실행해야 하는 다른 서비스일 수 있습니다. 특히 클라이언트를 서로 다른 폴더에서 실행한 경우 프로세스 이름만 같다고 현재 창에 속한다고 단정할 수 없습니다. 프로세스 경로와 시작 시간, 실제 실행 중인 클라이언트 폴더를 함께 확인하세요.
중복 실행 인스턴스 정상 종료
권장이전 창을 더 이상 사용하지 않는지 확인한 뒤 해당 트레이 아이콘에서 「종료」를 선택하고 수신 상태를 다시 조회하세요. 코어 프로세스가 남아 있다면 작업 관리자에서 경로를 확인한 뒤 종료하고, 유지할 클라이언트를 다시 시작하세요.
적합한 경우: 클라이언트를 실수로 두 번 실행했거나 이전 인스턴스가 완전히 종료되지 않은 경우
로컬 수신 포트 변경
기존 서비스를 유지해야 한다면 현재 클라이언트에 사용 중이지 않고 시스템에서 제외된 범위에도 속하지 않는 포트(예: 20808)를 지정하세요. 그런 다음 이전 포트를 사용하는 모든 로컬 앱도 업데이트해야 합니다. 새 코어는 정상적으로 시작됐지만 브라우저가 여전히 이전 인스턴스에 연결하는 상황을 방지할 수 있습니다.
적합한 경우: 여러 서비스를 동시에 실행하거나 기존 포트가 이미 다른 용도로 사용 중인 경우
v2rayN 로컬 포트 변경 및 코어 재시작
일반적인 「설정」→「매개변수 설정」 경로를 기준으로 설명합니다. 크로스 플랫폼 데스크톱 인터페이스와 클래식 인터페이스는 항목 이름과 배치가 다를 수 있습니다. 화면에서 ‘로컬 수신 포트’, ‘SOCKS 포트’, ‘HTTP 포트’ 또는 혼합 인바운드 항목을 찾아 변경하고, 구독 노드의 서버 포트는 수정하지 마세요.
-
기존 설정 기록
현재 수신 주소와 포트, 시스템 프록시 상태를 기록하세요. 예를 들어 현재 값이
127.0.0.1:10808이고 구형 설정에 HTTP 포트 10809가 별도로 있을 수 있습니다. 로컬 항목만 기록하면 되며 구독 링크나 노드 인증 정보는 복사할 필요가 없습니다. -
새 포트 확인
앞서 안내한 PowerShell 명령으로 20808을 수신 중인 프로세스가 없는지 확인하세요. 별도 HTTP 인바운드를 유지하려면 사용할 20809도 확인합니다. 조회 결과에 수신 프로세스가 없더라도 이는 해당 시점에 TCP 수신이 없었다는 뜻일 뿐이므로 시스템 예약 포트 범위도 확인해야 합니다.
-
인바운드 포트 변경
「설정」→「매개변수 설정」으로 이동해 실제 사용하는 로컬 수신 포트를 10808에서 20808로 변경하세요. 별도의 HTTP 항목이 있고 해당 포트도 바꿔야 한다면 10809를 20809로 변경합니다. 혼합 인바운드라면 두 번째 연결 지점을 따로 만들 필요가 없습니다.
-
저장 후 재시작
설정을 저장하고 클라이언트에 변경 사항이 적용될 때까지 기다리세요. 로그에 새 포트의 수신 정보가 표시되지 않으면 트레이 메뉴에서 정상 종료한 뒤 v2rayN을 다시 시작하세요. 이후 20808의 수신 PID를 조회해 현재 클라이언트가 시작한 코어인지 확인합니다.
-
시스템 프록시 재설정
트레이 메뉴의 「시스템 프록시」에서 먼저 「시스템 프록시 지우기」를 선택한 다음 「시스템 프록시 자동 설정」을 선택하세요. 인터페이스 버전에 따라 메뉴 문구는 다를 수 있습니다. 중요한 점은 이전 포트가 그대로 남지 않도록 현재 HTTP 또는 혼합 인바운드 주소로 시스템 프록시를 다시 설정하는 것입니다.
로컬에서만 사용할 경우 루프백 주소를 그대로 유지하세요. 포트 충돌을 해결하려고 “LAN 연결 허용”을 켜지 마세요. 수신 범위만 달라질 뿐 기존에 점유된 포트가 해제된다는 보장은 없습니다. 포트는 클라이언트 인바운드 설정에 해당하며 VMess·VLESS 노드를 바꾸거나 다른 라우팅 규칙을 선택하는 것과는 별개의 문제입니다.
시스템 프록시·브라우저·명령줄 설정 동기화
포트를 변경할 때 가장 놓치기 쉬운 것은 연결하는 쪽의 설정입니다. Windows 시스템 프록시, 브라우저의 수동 프록시, 터미널 환경 변수는 각각 이전 값을 저장할 수 있습니다. v2rayN만 바꿔서는 모든 앱의 설정이 자동으로 업데이트되지 않습니다. 결과가 헷갈리지 않도록 아래 순서대로 하나씩 확인하고 노드, DNS, 라우팅은 동시에 변경하지 마세요.
- Windows: 「설정」→「네트워크 및 인터넷」→「프록시」를 열고 ‘수동 프록시 설정’의 주소와 포트를 확인하세요. 시스템 HTTP 프록시는 HTTP를 지원하는 인바운드를 가리켜야 합니다. SOCKS 전용 포트를 그대로 입력하면 안 됩니다.
- 브라우저: 시스템 프록시를 사용하도록 설정했다면 시스템 설정을 따릅니다. 별도 수동 프록시나 프록시 확장 프로그램을 설정했다면 해당 설정에서 포트를 변경하세요. SOCKS5와 HTTP 항목은 실제 연결 지점의 프로토콜과 일치해야 합니다.
- 터미널:
HTTP_PROXY,HTTPS_PROXY,ALL_PROXY가 여전히 10808 또는 10809를 가리키는지 확인하세요. 영구 환경 변수를 수정한 뒤에는 이미 열려 있는 터미널을 다시 시작해야 하는 경우가 많습니다. - 기타 앱: 다운로드 도구나 개발 도구 등이 별도의 프록시 주소를 저장할 수 있으므로 앱별로 새 포트를 설정하세요. TUN으로 연결되는 트래픽은 시스템 HTTP 프록시에 전적으로 의존하지 않습니다. 이번 테스트는 먼저 일반 시스템 프록시 모드에서 진행하는 것이 좋습니다.
PowerShell에서 현재 프로세스의 환경 변수를 확인할 수 있습니다. 출력에 계정 정보가 포함되어 있다면 로컬에서만 확인하고 공개 게시판에 그대로 올리지 마세요.
Get-ChildItem Env: |
Where-Object { $_.Name -match '^(HTTP_PROXY|HTTPS_PROXY|ALL_PROXY|NO_PROXY)$' }
수정 확인: 로컬 연결 지점과 원격 연결 구분
먼저 TCP 연결을 테스트한 다음 프록시 프로토콜을 확인하세요. 첫 번째 명령이 성공해도 로컬 포트에 연결할 수 있다는 뜻일 뿐, 노드가 정상이라는 의미는 아닙니다. 실제 인바운드 유형에 맞춰 HTTP 또는 SOCKS5 테스트 명령을 선택하세요. 두 명령을 모두 실행할 필요는 없습니다.
Test-NetConnection 127.0.0.1 -Port 20808
# HTTP 또는 혼합 인바운드용
curl.exe --noproxy "" --proxy http://127.0.0.1:20808 --connect-timeout 5 --max-time 20 -I https://1v2ray.com/
# SOCKS5 또는 혼합 인바운드용
curl.exe --noproxy "" --proxy socks5h://127.0.0.1:20808 --connect-timeout 5 --max-time 20 -I https://1v2ray.com/
curl.exe를 명시하면 일부 PowerShell 환경에서 curl이 다른 명령으로 해석되는 것을 방지할 수 있습니다. socks5h는 대상 도메인 처리를 프록시 측에 맡깁니다. 연결 제한 5초와 전체 제한 20초는 테스트용 설정이며 속도를 보장하는 값이 아닙니다. 별도 HTTP 포트 20809를 사용한다면 HTTP 테스트 명령의 포트도 바꾸세요.
- 연결 거부: 수신 상태를 다시 조회해 코어가 시작됐는지, 주소가 127.0.0.1인지, 포트 변경 사항이 저장됐는지 확인하세요.
- 프록시 프로토콜 오류: SOCKS 전용 포트를 HTTP로 사용하고 있지 않은지, 다른 프로그램 인스턴스에 연결하고 있지 않은지 확인하세요.
- HTTP 응답이 있음: 이번 요청이 로컬 프록시 연결 지점을 거쳐 대상 응답을 받았다는 뜻입니다. 상태 코드가 403 또는 405여도 곧바로 포트 충돌이라고 판단하지 마세요.
- 연결 지점에는 접속되지만 핸드셰이크 시간 초과: 코어 로그를 확인한 다음 노드, 전송 방식, 원격 서비스를 점검하세요. 이 단계에서는 로컬 포트 충돌이 더 이상 주요 원인이 아닐 가능성이 큽니다.
포트 점유가 확인되지 않을 때 자주 묻는 질문
수신 프로세스가 없는데도 바인딩 오류가 표시되는 이유는 무엇인가요?
먼저 ‘주소가 이미 사용 중’이라는 오류와 ‘소켓 액세스 권한이 거부됨’이라는 오류를 구분하세요. 후자는 Windows의 제외 포트 범위, 보안 정책 또는 바인딩 주소와 관련이 있을 수 있습니다. 아래 netsh 명령으로 범위를 확인하세요. 새 포트가 범위 안에 있다면 시스템 예약 항목을 직접 삭제하지 말고 범위 밖의 빈 포트로 변경하는 편이 좋습니다.
프로그램을 종료했는데도 10808에서 계속 수신 중이면 어떻게 하나요?
OwningProcess를 다시 조회한 다음 작업 관리자의 「세부 정보」에서 PID와 파일 위치를 확인하세요. 종료한 클라이언트에서 남은 코어 프로세스임을 확인한 뒤에만 종료합니다. 종료 직후 다시 나타난다면 다른 클라이언트 인스턴스, 시작 프로그램 또는 프로세스를 자동으로 실행하는 서비스를 확인하세요.
20808로 변경한 뒤 브라우저에서만 연결되지 않는 이유는 무엇인가요?
먼저 curl.exe에서 새 포트를 명시해 테스트하세요. 테스트에 성공하면 브라우저에 10808이 남아 있는지, 수동 프록시 확장 프로그램이 시스템 설정을 덮어쓰는지 확인한 다음 Windows의 「프록시」 설정도 점검하세요. 앱 하나의 설정이 동기화되지 않았다고 노드 설정까지 다시 바꾸지는 마세요.
재부팅할 때마다 충돌이 반복되면 계속 포트를 바꿔야 하나요?
재부팅 후 두 번째 클라이언트를 수동으로 실행하기 전에 기존 포트의 PID부터 조회하세요. 작업 관리자의 「시작 앱」과 자주 사용하는 클라이언트 폴더를 확인하고 실행 경로를 하나로 정리하세요. 여러 인스턴스를 함께 실행해야 한다면 각 인스턴스에 서로 겹치지 않는 고정 로컬 포트를 지정하세요.
netsh interface ipv4 show excludedportrange protocol=tcp
netsh interface ipv6 show excludedportrange protocol=tcp
수정이 완료되려면 새 포트를 예상한 코어가 수신하고, 프록시를 명시한 테스트에서 응답이 오며, 시스템과 앱의 프록시가 모두 올바른 연결 지점을 가리켜야 합니다. 문제가 계속되면 로컬 포트, 프로세스 이름, 오류 원문과 발생 단계를 기록한 뒤 문제 해결 안내에 따라 원인을 더 확인하세요. 기록에 구독 주소나 노드 인증 정보는 포함하지 않아도 됩니다.