커널 시작 실패, 재부팅 후 프록시가 작동하지 않는 문제, 또는 로컬 포트를 바꿨는데도 웹페이지가 열리지 않는 문제를 겪는 데스크톱 사용자에게 적합합니다. 먼저 수신 실패와 프록시 대상 설정 오류를 구분하고, Windows와 macOS 명령어로 프로세스를 찾은 다음 포트를 변경하고 연결을 다시 확인합니다. 구독을 삭제하거나 클라이언트를 재설치할 필요는 없습니다.
오류가 로컬 수신 문제인지 먼저 확인
로컬 수신 포트는 브라우저 같은 앱이 요청을 프록시 커널로 전달하는 입구입니다. 구독에 등록된 노드의 원격 포트와는 다릅니다. 예를 들어 127.0.0.1:10808은 로컬 루프백 주소의 입구를 뜻하고, 노드 주소 뒤의 443은 보통 서버 측 연결 대상 포트입니다. 원격 포트를 바꿔도 로컬 바인딩 실패는 해결되지 않으며, 오히려 정상적인 노드 설정을 망가뜨릴 수 있습니다.
먼저 v2rayN 메인 화면의 로그 영역을 열고 서비스를 다시 시작한 다음, 같은 시각에 기록된 오류를 확인하세요. 수신 주소와 포트, 실패 원인을 중점적으로 살펴보면 됩니다. 아래는 자주 나오는 오류 문구입니다. 전체 로그에는 앞부분에 커널 모듈명이 표시될 수 있고, 포트 번호는 설정에 따라 달라집니다.
오류: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
원인 및 해결: Windows에서 해당 주소와 포트를 다른 프로세스가 이미 수신 중입니다. 먼저 포트에 해당하는 PID를 확인한 뒤, 점유 프로그램을 정상 종료하거나 로컬 포트를 변경하세요.
오류: bind: address already in use
원인 및 해결: macOS 등에서 바인딩하려는 주소와 포트가 충돌한 상태입니다. lsof로 수신 프로세스를 확인하세요. 클라이언트가 두 개 실행 중인지도 살펴보세요.
오류: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
원인 및 해결: Windows에서 바인딩이 거부된 경우입니다. 포트 제외 범위나 보안 정책이 원인일 수 있으며, 반드시 다른 프로세스가 포트를 사용 중이라는 뜻은 아닙니다. 수신 상태와 시스템 예약 범위를 확인한 뒤 사용할 수 있는 빈 포트를 선택하세요.
로그에 노드 연결 시간 초과, 인증 실패, 도메인 이름 확인 실패만 표시되고 로컬 입구가 정상 수신 중이라면 노드, DNS 또는 라우팅 문제를 점검해야 합니다. '연결할 수 없음'이라는 메시지만 보고 바로 포트를 바꾸지 말고, 연결이 어느 구간에서 실패하는지 먼저 확인하세요.
Windows: 수신 포트로 점유 프로세스 찾기
여기서는 10808을 예로 듭니다. 실제로는 로그에 표시된 실패 포트로 바꿔 입력하세요. 모든 버전이 같은 기본 포트를 사용하는 것은 아닙니다. PowerShell에서 아래 명령어를 실행하세요. 프로세스 경로가 표시되지 않으면 관리자 권한으로 PowerShell을 다시 열어 확인할 수 있지만, 클라이언트를 계속 관리자 권한으로 실행할 필요는 없습니다.
Get-NetTCPConnection -LocalPort 10808 -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, State, OwningProcess
OwningProcess 열에서 PID를 확인한 뒤 해당 PID의 정보를 조회하세요. 아래의 6240은 예시 숫자이므로 앞 명령어에서 실제로 반환된 값으로 바꿔야 합니다. 프로세스 이름만 보는 것보다 프로그램 경로를 확인하면 서로 다른 폴더에 설치된 v2rayN을 구분하기 쉽습니다.
Get-Process -Id 6240 | Select-Object Id, ProcessName, Path
명령 프롬프트에서는 아래 두 명령어를 사용할 수도 있습니다. 첫 번째 명령어의 결과에는 원격 포트나 비슷한 숫자가 포함될 수 있으므로 '로컬 주소' 열을 확인하고 상태가 LISTENING인 행을 찾으세요. 행 끝의 숫자가 해당 수신 포트를 점유한 PID입니다.
netstat -ano -p tcp | findstr ":10808"
tasklist /FI "PID eq 6240"
- 다른 v2rayN 또는 해당 커널: 해당 프로그램의 트레이 메뉴에서 정상 종료한 다음 포트를 다시 조회하세요. 창을 닫아도 트레이에 최소화되어 계속 실행 중일 수 있습니다.
- 계속 사용해야 하는 다른 프로그램: 해당 프로그램은 그대로 두고 v2rayN에 다른 빈 포트를 지정하세요. 매번 컴퓨터를 켤 때 같은 입구를 두 프로그램이 차지하려는 상황을 피할 수 있습니다.
- 이름이 낯선 시스템 서비스: 먼저 서비스가 무엇인지 확인하고 강제 종료하지 마세요. 로그에 같은 PID가 반복해서 표시된다는 이유만으로 마음대로 종료해도 되는 프로세스라고 판단해서는 안 됩니다.
macOS: 수신 프로세스를 확인하고 정상 종료
'터미널'을 열고 lsof로 TCP 수신 상태를 조회하세요. HTTP와 SOCKS 프록시 입구는 우선 TCP를 확인하면 됩니다. 로그에서 UDP 바인딩 실패가 명확히 확인된 경우에만 UDP 조회를 추가하세요. TCP와 UDP는 포트 공간이 서로 다르므로 조회 결과를 혼동하면 안 됩니다.
lsof -nP -iTCP:10808 -sTCP:LISTEN
출력에서 COMMAND는 프로그램 이름, PID는 프로세스 번호, NAME은 수신 주소입니다. 권한이 부족해 다른 사용자의 수신 상태를 확인할 수 없다면 sudo lsof -nP -iTCP:10808 -sTCP:LISTEN을 실행하세요. 실행 명령을 확인하려면 아래 예시의 숫자를 실제 PID로 바꾸면 됩니다.
ps -p 6240 -o pid,ppid,command
- 메뉴 막대나 프로그램 메뉴에서 다른 클라이언트를 정상 종료하세요. 창만 닫고 백그라운드 서비스가 계속 실행되는 상황을 피해야 합니다.
lsof를 다시 실행해 기존 수신 프로세스가 사라졌는지 확인하세요. 곧바로 새 PID가 나타나면 해당 프로그램의 로그인 항목이나 자동 재시작 설정을 확인하세요.- 계속 사용할 v2rayN을 실행한 뒤 같은 포트를 다시 조회해 현재 인스턴스의 커널이 수신 중인지 확인하세요.
같은 포트에 IPv4와 IPv6 행이 모두 표시되면 먼저 PID를 비교하세요. 같은 프로그램이 두 주소 체계에서 수신하는 것일 수 있으므로 클라이언트가 두 개 실행 중이라고 단정할 수 없습니다. 행 개수만 세지 말고 주소 체계와 바인딩 주소, 로그를 함께 확인하세요.
설정에서 로컬 수신 포트 변경하기
기존 포트를 비울 수 없다면 로컬 입구를 예를 들어 11808로 옮길 수 있습니다. 먼저 앞의 명령어로 새 포트를 수신 중인 프로세스가 없는지 확인하세요. 예시 포트가 항상 비어 있다고 가정해서는 안 됩니다. 변경 전 기존 값을 기록해 두면 문제가 생겼을 때 되돌리기 쉽습니다.
-
기존 설정 기록
「설정」→「매개변수 설정」으로 이동해 로컬 수신 포트 관련 항목을 찾아 포트, 수신 주소, 입구 유형을 기록하세요. 버전에 따라 「로컬 수신 포트」 또는 「로컬 혼합 수신 포트」로 표시될 수 있으니 현재 화면을 기준으로 확인하세요.
-
새 포트 확인
조회 명령어의
10808을11808로 바꾸세요. 수신 결과가 없더라도 확인은 끝난 것이 아닙니다. Windows에서 권한 관련 오류가 발생하면 시스템 포트 제외 범위도 확인해야 합니다. -
저장 후 재시작
해당 입구의 포트를
11808로 변경하고 매개변수 설정을 저장한 뒤 서비스를 재시작하세요. 현재 화면에 재시작 메뉴가 없다면 프로그램을 정상 종료한 다음 다시 실행하면 됩니다. 이후 새 로그에서 바인딩에 성공했는지 확인하세요. -
프록시 다시 설정
트레이 메뉴의 「시스템 프록시」에서 먼저 「시스템 프록시 지우기」를 선택한 다음 「시스템 프록시 자동 설정」을 선택하세요. 이어서 운영체제의 프록시 설정에서 HTTP와 HTTPS 주소 및 포트가 업데이트되었는지 확인하세요.
-
앱 설정도 업데이트
브라우저의 수동 프록시 설정, 명령줄 환경 변수, 이전 포트가 고정 입력된 다른 앱도 함께 변경하세요. SOCKS5와 HTTP는 각 프로토콜을 지원하는 입구를 지정해야 합니다. 포트 번호가 같다는 이유만으로 서로 바꿔 쓸 수 있다고 판단하지 마세요.
변경 후 시스템 프록시를 단계별로 확인
'포트에서 수신 중'인 것과 '브라우저가 해당 포트를 사용하는 것'은 별개의 문제입니다. 먼저 11808의 수신 프로세스를 확인하고, 프록시를 명시한 요청을 보낸 다음 브라우저를 점검하세요. 이렇게 하면 노드 자체가 연결되지 않는 문제를 로컬 포트 설정 변경으로 해결하려고 반복하는 일을 피할 수 있습니다.
| 확인 단계 | 확인 방법 | 결과 해석 |
|---|---|---|
| 로컬 입구 | 새 포트의 LISTEN 상태와 PID 조회 | 수신 중이 아니면 먼저 커널 시작 문제를 해결하세요. 수신 중이면 프로토콜과 요청을 확인합니다. |
| 프록시 직접 지정 | curl에서 로컬 프록시를 명시해 요청 | 대상 서버의 응답을 받으면 해당 프록시 경로가 작동하는 것입니다. 연결이 거부되면 먼저 입구 주소와 포트를 확인하세요. |
| 시스템 프록시 | 시스템 설정에서 프록시 주소, 포트, 모드 확인 | 프록시를 직접 지정한 요청은 성공하고 브라우저만 실패한다면, 앱이 시스템 프록시를 사용하는지와 우회 규칙을 먼저 확인하세요. |
Windows PowerShell에서는 별칭 차이를 피하기 위해 curl.exe를 사용하세요. 11808이 HTTP 또는 혼합 입구라면 아래 명령어를 실행하면 됩니다. macOS에서는 명령어 앞부분을 curl로 바꾸세요. 공개 웹페이지는 요청 대상일 뿐, 고정된 속도 측정 사이트가 아닙니다.
curl.exe --proxy http://127.0.0.1:11808 --connect-timeout 5 --max-time 15 -I https://example.com/
입구가 SOCKS5만 지원한다면 아래 형식을 사용하세요. socks5h는 대상 도메인의 DNS 조회를 프록시에서 처리한다는 뜻입니다. 따라서 로컬에서 도메인을 조회하는 테스트와 요청 경로가 다릅니다. HTTP 응답 헤더가 도착하면 요청이 응답 서버까지 도달한 것이지만, 한 번 성공했다고 모든 웹사이트나 라우팅 규칙이 정상이라고 단정할 수는 없습니다.
curl.exe --proxy socks5h://127.0.0.1:11808 --connect-timeout 5 --max-time 15 -I https://example.com/
- 로컬 주소에 연결할 수 없다는 오류가 즉시 표시됨: 수신 프로세스와 포트, HTTP/SOCKS 유형을 다시 확인하세요.
- 로컬 연결은 됐지만 이후 시간 초과: 커널 로그에서 노드 연결, DNS, 라우팅 결과를 확인하세요. 로컬 포트를 계속 바꾸지 마세요.
- 명령어는 성공하지만 브라우저는 실패: 브라우저의 별도 프록시 설정, 확장 프로그램, 우회 목록을 확인하고
10808이나10809을 계속 가리키고 있지 않은지 살펴보세요.
자주 묻는 질문: 점유 프로세스가 안 보일 때, 재부팅 후 재발할 때, 여러 인스턴스 실행
점유 프로세스가 검색되지 않는데도 포트를 사용할 수 없다는 오류가 나는 이유는 무엇인가요?
로그에 표시된 포트를 조회했는지, 오류가 TCP와 UDP 중 어느 쪽인지 먼저 확인하세요. Windows에서 액세스 권한 오류가 나타나면 아래 명령어로 IPv4 TCP 제외 범위를 확인할 수 있습니다. IPv6 수신이라면 ipv4를 ipv6로 바꾸세요. 포트가 제외 범위에 포함되어 있다면 시스템 예약 항목을 함부로 삭제하지 말고, 제외되지 않았으며 수신 프로세스도 없는 포트로 바꾸세요.
컴퓨터를 재부팅하면 충돌이 다시 발생하는데 구독에 문제가 있는 건가요?
로컬 바인딩은 보통 구독 내용과 관계가 없습니다. 충돌이 발생하면 즉시 PID와 프로그램 경로를 조회하고, 서로 다른 폴더의 클라이언트 두 개가 모두 시작 프로그램으로 등록되어 있는지 확인하세요. 자동 실행 항목을 하나만 남기고 재부팅해 다시 확인하세요. 점유 프로그램을 계속 사용해야 한다면 두 프로그램에 서로 다른 포트를 지정하세요.
v2rayN을 두 개 실행해 각각 다른 노드에 연결해도 되나요?
각 인스턴스에 별도의 설정 디렉터리를 사용하고, 활성화된 모든 로컬 수신 포트가 겹치지 않도록 해야 합니다. 입구 하나만 바꿔도 다른 HTTP, SOCKS 또는 사용자 지정 인바운드 포트가 충돌할 수 있습니다. 시스템 프록시는 한 번에 한 인스턴스만 관리하도록 지정하고, 다른 인스턴스는 앱별 수동 프록시로 사용하세요. 그렇지 않으면 나중에 실행한 인스턴스가 앞서 설정한 프록시를 덮어쓸 수 있습니다.
v2rayN을 종료한 뒤 웹페이지가 열리지 않으면 어떻게 복구하나요?
클라이언트를 조작할 수 있다면 먼저 「시스템 프록시」→「시스템 프록시 지우기」를 선택한 뒤 프로그램을 종료하세요. 이미 종료했다면 운영체제의 프록시 설정에서 중지된 로컬 입구를 가리키는 수동 프록시를 해제하세요. 현재 문제와 관련된 설정만 삭제하고, 회사나 기관 네트워크에 필요한 프록시 설정까지 덮어쓰지 마세요. 직접 연결을 복구한 다음 클라이언트를 시작해 테스트하세요.
netsh interface ipv4 show excludedportrange protocol=tcp
마지막으로 세 가지를 확인하세요. 새 포트는 현재 커널이 수신 중이고, 프록시를 명시한 요청은 응답을 받으며, 브라우저와 시스템 설정은 더 이상 이전 포트를 가리키지 않아야 합니다. 변경 전후의 포트와 점유 프로그램 경로를 기록해 두면 다음에 시작 프로그램 간 포트 충돌이나 이전 인스턴스 잔류가 발생했을 때 같은 근거를 따라 빠르게 점검할 수 있습니다.