포트 사용 중일 때 해결 방법: 점유 프로세스 확인 및 V2Ray 로컬 수신 포트 변경

클라이언트 시작 시 포트 사용 중 오류가 발생하면 시스템 명령으로 10808/10809를 점유한 프로세스를 찾고, 프로세스를 종료할지 포트를 변경할지 판단한 뒤 시스템 프록시 설정까지 함께 업데이트하는 방법을 안내합니다.

v2rayN이 코어를 시작하려면 먼저 로컬 컴퓨터에 인바운드 수신을 만들어야 합니다. 일반적인 기본 조합은 SOCKS 수신 포트 10808, HTTP 수신 포트 10809이며 주소는 보통 127.0.0.1입니다. 같은 포트를 다른 프로세스가 이미 사용 중이면 새로 시작한 Xray 또는 V2Ray 코어가 바인딩을 완료하지 못합니다. 노드 설정이 올바르더라도 사용할 수 없는 상태가 됩니다.

이 문제의 핵심은 클라이언트를 바로 재설치하는 것이 아니라 ‘충돌 포트 확인, 프로세스 식별, 소유자 판단, 포트 해제 또는 변경, 시스템 프록시 동기화, 재검증’ 순서로 처리하는 것입니다. 클라이언트 포트만 바꾸고 시스템 프록시를 업데이트하지 않으면 시작 오류가 ‘코어는 실행 중이지만 웹 페이지가 열리지 않음’으로 바뀔 수 있으므로 양쪽 설정을 함께 확인해야 합니다.

이 글의 핵심 내용

10808, 10809 또는 사용자 지정 로컬 포트를 수신하지 못하는 v2rayN·v2rayNG 사용자에게 적합합니다. 점검을 마치면 실제 점유 프로세스를 식별하고 안전한 처리 방법을 선택한 뒤, 브라우저·시스템 프록시·클라이언트 코어가 같은 포트를 가리키는지 확인할 수 있습니다.

먼저 포트 충돌인지 확인하고 노드 오류와 혼동하지 않기

포트 사용 문제는 원격 VMess, VLESS 노드에 연결하기 전 로컬 컴퓨터의 인바운드 단계에서 발생합니다. 즉 서버 주소, UUID, 전송 방식, 라우팅 규칙이 실제 통신에 참여하기도 전에 클라이언트가 로컬 포트를 수신하지 못해 중단됩니다. 이때 구독을 반복해서 갱신하거나 노드를 바꾸고 전송 프로토콜을 변경해도 대개 결과는 달라지지 않습니다.

v2rayN의 로그 영역을 열고 listen, bind, address already in use 또는 구체적인 포트 번호가 포함된 행을 중점적으로 확인하세요. 로그에 연결 시간 초과, TLS 핸드셰이크 실패 또는 원격 서버의 연결 거부만 표시된다면 로컬 포트가 아니라 노드 연결 경로를 점검해야 합니다.

10808
일반적인 SOCKS 수신 포트
10809
일반적인 HTTP 수신 포트
127.0.0.1
로컬 루프백 수신 주소
1개
동시에 포트를 수신하는 주체

오류: listen tcp 127.0.0.1:10808: bind: Only one usage of each socket address is normally permitted

원인 및 해결 방법:Windows에서 이미 10808을 수신 중인 프로세스가 있습니다. PID로 프로세스 신원을 확인한 다음 중복 인스턴스를 종료하거나 v2rayN의 포트를 사용 가능한 값으로 변경하세요.

오류: listen tcp 127.0.0.1:10809: bind: address already in use

원인 및 해결 방법:10809가 다른 로컬 서비스에서 사용 중입니다. 기존 서비스를 종료하거나 HTTP 수신 포트와 시스템 프록시 포트를 새 값으로 함께 변경하세요.

오류: failed to start app/proxyman/inbound: failed to listen TCP

원인 및 해결 방법:코어가 인바운드 수신을 만들지 못했습니다. 같은 로그 구간의 마지막 부분에서 주소와 포트를 계속 확인하세요. 상위 단계의 오류만으로 노드가 실패했다고 판단해서는 안 됩니다.

Windows에서 10808 및 10809 점유 프로세스 확인하기

먼저 v2rayN을 완전히 종료한 뒤 다시 한 번 실행하세요. 오류가 계속되면 이전 코어 프로세스가 종료되지 않았거나 다른 프록시 도구, 개발 서비스, 보안 소프트웨어가 포트를 사용 중일 수 있습니다. PID가 보인다고 바로 강제 종료하지 말고 실행 파일 이름과 시작 경로를 먼저 확인하세요.

‘터미널’ 또는 ‘명령 프롬프트’에서 다음 명령을 실행하세요. 10808과 10809를 각각 조회하는 것이 좋습니다. 두 포트를 서로 다른 프로세스가 수신 중일 수 있기 때문입니다.

netstat -ano | findstr :10808
netstat -ano | findstr :10809

결과에서 상태가 LISTENING인 행을 찾으세요. 가장 오른쪽 숫자가 PID입니다. 예를 들어 결과 끝에 6420이 표시되면 작업 목록으로 프로세스 이름을 조회합니다.

tasklist /FI "PID eq 6420"

PowerShell을 사용한다면 수신 연결과 해당 프로세스를 바로 조회할 수 있습니다. 두 번째 명령의 6420은 실제로 확인한 PID로 바꿔야 합니다.

Get-NetTCPConnection -LocalPort 10808 -State Listen |
  Select-Object LocalAddress, LocalPort, OwningProcess

Get-Process -Id 6420 |
  Select-Object Id, ProcessName, Path
  1. 현재 사용 중인 v2rayN 코어 프로세스입니다. 먼저 클라이언트에서 종료한 다음 작업 관리자에서 남은 코어를 종료하고 클라이언트를 다시 시작하세요.
  2. 계속 실행해야 하는 다른 로컬 서비스입니다. 해당 프로세스는 유지하고 v2rayN의 포트를 변경하세요.
  3. 연결은 여러 개 표시되지만 LISTENING이 없습니다. 이는 일반적으로 해당 포트를 사용하는 클라이언트 연결일 뿐, 수신 진입점을 점유한 프로세스라는 뜻은 아닙니다.
  4. 조회 결과가 없는데도 시작 오류가 발생한다면 관리자 권한 터미널을 다시 열어 조회하고, 로그의 실제 주소가 IPv4인지 IPv6인지 또는 다른 포트인지 확인하세요.
표시된 상태 의미 다음 단계
127.0.0.1:10808 LISTENING 로컬에서만 접근 가능한 수신자 PID로 프로세스 이름 조회
0.0.0.0:10808 LISTENING 모든 IPv4 인터페이스에서 수신 중인 프로세스 로컬 네트워크 접근이 필요한지 확인
[::]:10808 LISTENING IPv6 인터페이스에서 수신 중인 프로세스 같은 포트의 듀얼 스택 바인딩 관계 확인
ESTABLISHED 이미 데이터가 전송 중인 연결 해당 LISTENING 행 계속 찾기

결론: PID의 신원이 처리 방법을 결정합니다

이전 코어의 잔류 프로세스라면 포트를 해제하는 것이 적합하고, 계속 작동 중인 업무 프로세스라면 유지한 채 v2rayN의 포트를 바꾸는 것이 적합합니다. ‘10808 사용 중’이라는 사실만으로 어느 쪽을 종료해야 하는지는 판단할 수 없습니다.

이전 프로세스를 종료할까, 클라이언트 포트를 바꿀까

점유자가 비정상 종료 후 남은 Xray 또는 V2Ray 코어라면 먼저 v2rayN 메뉴에서 ‘종료’를 실행하고 약 5초 기다린 뒤 포트를 확인하세요. 클라이언트 창이 닫혔다고 백그라운드 코어까지 항상 종료된 것은 아닙니다. 특히 시스템 절전 모드에서 복귀했거나 코어 업데이트가 중단된 경우, 또는 클라이언트를 여러 번 실행한 경우에 그렇습니다.

잔류 프로세스임을 확인했다면 작업 관리자의 ‘세부 정보’ 탭에서 PID로 찾아 작업을 종료할 수 있습니다. PowerShell에서도 지정한 PID를 종료할 수 있지만 이름과 경로를 확인한 뒤 실행해야 합니다.

Stop-Process -Id 6420

점유자가 계속 실행되어야 하는 프로그램이라면 v2rayN의 로컬 수신 포트를 바꾸는 편이 안전합니다. 새 포트는 20000~50000 범위에서 현재 수신 중이 아닌 값을 선택할 수 있으며, 예를 들어 20808과 20809를 사용할 수 있습니다. 선택하기 전에 다시 조회하여 LISTENING 결과가 없는지 확인하세요.

netstat -ano | findstr :20808
netstat -ano | findstr :20809
  • 프로세스 종료:중복 실행된 클라이언트 인스턴스, 주 창이 사라진 이전 코어, 더 이상 사용하지 않는 임시 서비스에 적합합니다.
  • 포트 변경:개발 서버, 다른 로컬 프록시 또는 장기간 백그라운드에서 실행되는 서비스가 10808과 10809를 계속 사용해야 하는 경우에 적합합니다.
  • 무작정 연속해서 포트 번호를 시도하지 않기:변경할 때마다 먼저 조회하면 10808에서 이미 사용 중인 다른 포트로 충돌을 옮길 가능성을 줄일 수 있습니다.
  • 주소 범위를 명확히 유지하기:로컬에서만 사용할 때는 127.0.0.1을 유지하세요. 충돌을 피하려고 0.0.0.0으로 바꾸지 마세요. 수신 주소를 바꿔도 같은 포트의 사용 문제는 해결되지 않습니다.

v2rayN에서 포트 변경 후 시스템 프록시 동기화하기

v2rayN 7.x의 화면 문구는 세부 버전에 따라 달라질 수 있지만 작업 메뉴는 ‘설정’ 영역에 모여 있습니다. ‘설정’ → ‘매개변수 설정’을 열고 Core 기본 설정 또는 로컬 수신 관련 항목에서 SOCKS·HTTP 포트와 로컬 수신 주소를 확인하세요. 10808을 20808로, 10809를 20809로 바꾼 뒤 저장하고 코어를 다시 시작합니다.

현재 버전이 하나의 기본 포트에서 다음 포트를 자동으로 계산한다면 화면 안내에 따라 기본값을 변경하세요. 설정 파일과 그래픽 인터페이스에 서로 충돌하는 두 세트의 값을 따로 지정하면 안 됩니다. 변경을 마친 뒤 로그에서 수신 성공 메시지가 나타나고 bind 오류가 더 이상 표시되지 않는지 확인하세요.

  1. ‘설정’ → ‘매개변수 설정’으로 이동하여 변경 전의 수신 주소와 포트를 기록합니다.
  2. SOCKS 포트를 20808로, HTTP 포트를 20809로 설정하세요. 화면에 기본 포트만 표시된다면 해당 버전의 포트 안내에 따라 설정합니다.
  3. 설정을 저장하고 ‘서비스 다시 시작’을 실행하거나 v2rayN을 종료한 뒤 다시 엽니다.
  4. 메인 화면의 ‘시스템 프록시’ 메뉴에서 ‘시스템 프록시 자동 설정’을 선택하여 v2rayN이 현재 HTTP 수신 포트로 시스템 설정을 다시 기록하게 하세요.
  5. Windows ‘설정’ → ‘네트워크 및 인터넷’ → ‘프록시’를 열고 수동 프록시 주소가 127.0.0.1인지, 포트가 20809로 업데이트되었는지 확인하세요.

증상: 코어는 실행 중으로 표시되지만 브라우저에서 즉시 프록시 서버에 연결할 수 없다고 표시됨

원인 및 해결 방법:클라이언트 포트는 20809로 바뀌었지만 시스템 프록시는 여전히 10809를 가리키고 있습니다. ‘시스템 프록시’ → ‘시스템 프록시 자동 설정’을 다시 실행하거나 Windows 프록시 포트를 수동으로 동기화하세요.

증상: SOCKS 테스트는 성공하지만 HTTP 프록시를 사용하는 프로그램은 계속 실패함

원인 및 해결 방법:프로그램이 여전히 이전 HTTP 포트에 연결하고 있을 수 있습니다. 해당 프로그램의 프록시 주소를 127.0.0.1:20809로 업데이트하고 20809가 수신 중인지 확인하세요.

증상: 설정을 저장한 뒤 다시 시작해도 여전히 10808에서 수신함

원인 및 해결 방법:현재 사용 중인 설정 항목이 아닌 다른 항목을 변경했거나 이전 인스턴스가 백그라운드에 남아 있을 수 있습니다. 클라이언트를 완전히 종료하고 관련 프로세스가 끝났는지 확인한 다음 매개변수 설정을 다시 열어 실제 값을 확인하세요.

브라우저는 일반적으로 Windows 시스템 프록시를 읽지만 일부 프로그램은 독립적인 프록시 설정을 사용합니다. 어떤 프로그램에 127.0.0.1:10808을 직접 입력했다면 v2rayN을 변경한 뒤 해당 프로그램의 설정도 업데이트해야 합니다. 구독 주소와 VMess 또는 VLESS 노드 포트는 로컬 포트 변경에 맞춰 바꿀 필요가 없습니다.

Android 및 다른 데스크톱 플랫폼의 처리 방식 차이

v2rayNG이 Android VPN 서비스로 트래픽을 처리할 때는 보통 다른 앱에서 로컬 SOCKS 수신 주소를 직접 입력할 필요가 없습니다. 하지만 사용자 지정 인바운드, 로컬 네트워크 공유 또는 중복 서비스 때문에 10808이 사용 중일 수 있습니다. 먼저 v2rayNG 연결을 중지하고 앱 작업 목록에서 이전 인스턴스를 종료한 뒤 다시 열어 현재 설정을 시작하세요.

Xray 코어를 사용하는 v2rayNG과 v2fly 코어를 사용하는 v2flyNG은 포트 충돌을 판단하는 원칙이 같습니다. 로그에서 먼저 구체적인 수신 주소와 포트를 찾고, 로컬 네트워크 연결 허용, 사용자 지정 SOCKS 인바운드 또는 추가 HTTP 인바운드가 활성화되어 있는지 확인하세요. 원격 노드 포트를 로컬 포트로 잘못 변경하지 마세요.

포트를 20808로 바꾼 후 구독을 다시 가져와야 하나요?

아니요. 로컬 수신 포트는 클라이언트 인바운드 설정이고, 구독에는 노드 주소·인증 정보·전송 방식·원격 포트가 저장되므로 서로 독립적입니다.

컴퓨터를 다시 시작할 때마다 10808 사용 중 오류가 나타나면 어떻게 하나요?

작업 관리자의 ‘시작 앱’에서 클라이언트 인스턴스가 두 개 시스템과 함께 시작되는지 확인하고, v2rayN이 자동 실행으로 설정되어 있는지도 확인하세요. 시작 항목은 하나만 남긴 뒤 netstat -ano로 수신 프로세스를 확인합니다.

수신 주소를 0.0.0.0으로 바꾸면 해결할 수 있나요?

안 됩니다. 같은 프로세스의 주소 범위를 넓혀도 포트가 해제되지 않으며 오히려 로컬 네트워크 기기가 접근할 수 있습니다. 로컬에서만 사용할 때는 127.0.0.1을 유지하고 포트를 해제하거나 번호를 변경하여 충돌을 해결하세요.

v2rayNG을 시작하자마자 중지되는데 먼저 10808을 바꿔야 하나요?

먼저 앱 로그를 확인하세요. 로그에 10808과 수신 실패가 명확히 포함된 경우에만 포트를 변경합니다. VPN 권한, 노드 시간 초과 또는 DNS 오류라면 해당 로그에 맞춰 처리해야 합니다.

macOS 또는 Linux에서 수신 프로세스를 어떻게 확인하나요?

macOS에서는 lsof -nP -iTCP:10808 -sTCP:LISTEN을 실행하고, Linux에서는 ss -lntp 'sport = :10808'을 실행할 수 있습니다. 프로세스 이름을 확인한 뒤 용도를 판단하고 프로세스를 종료할지 클라이언트 포트를 변경할지 결정하세요.

변경 후 전체 검증 순서

포트 점검의 완료 기준은 ‘오류 창이 사라짐’이 아니라 코어 수신, 시스템 프록시, 실제 요청의 세 계층이 일치하는 것입니다. 먼저 새 포트를 현재 코어가 실제로 수신하는지 확인하고, 시스템 프록시가 올바르게 기록되었는지 검증한 다음 네트워크에 접속하여 로그에 새로운 인바운드 연결이 나타나는지 확인하세요.

  1. 수신 상태 확인: netstat -ano | findstr :20808netstat -ano | findstr :20809을 실행하여 상태가 LISTENING인지 확인하세요.
  2. PID 확인:수신 중인 PID를 조회하여 해당 프로세스가 다른 백그라운드 서비스가 아닌 현재 v2rayN 코어인지 확인하세요.
  3. 시스템 프록시 확인:주소는 127.0.0.1이고 HTTP 포트는 클라이언트의 현재 설정과 일치해야 합니다. 예를 들어 20809입니다.
  4. 클라이언트 로그 확인:웹 페이지에 접속한 뒤 새로운 연결 기록이 나타나야 하며, 수신 실패나 이전 포트 연결 거부가 다시 나타나서는 안 됩니다.
  5. 분할 라우팅 테스트:직접 연결되어야 하는 대상과 프록시를 사용해야 하는 대상에 각각 접속하여 포트 변경으로 기존 라우팅 규칙의 적용 결과가 달라지지 않았는지 확인하세요.
  6. 재시작 후 재검증:클라이언트를 완전히 종료한 뒤 다시 시작하여 이전 인스턴스가 포트를 다시 선점하지 않는지 확인하세요.
netstat -ano | findstr :20808
netstat -ano | findstr :20809
tasklist /FI "PID eq 실제 PID"

수신 상태는 정상인데도 네트워크에 접속할 수 없다면 노드 가용성, 라우팅 분할, DNS를 점검해야 합니다. 이 단계에서는 로컬 포트 변경을 반복하지 마세요. 포트 계층의 검증은 이미 끝났기 때문입니다. 계층별로 범위를 좁히면 노드 장애, 이름 해석 문제, 로컬 인바운드 장애를 한 가지 문제로 혼동하는 일을 피할 수 있습니다.

클라이언트 다운로드