v2rayN은 열리지만 코어가 시작되지 않는다면 ‘프로그램 실행, 설정 읽기, 매개변수 검사, 포트 수신 대기’ 순서로 원인을 좁혀 보세요. 이 글에서는 Windows용 v2rayN을 기준으로 전체 시작 로그를 저장하고, 포트를 사용 중인 프로세스를 확인하며, JSON과 코어 파일을 점검하는 방법을 설명합니다. 수정 후에는 포트 수신이 정상으로 돌아왔는지 확인하세요. 코어는 실행되지만 요청이 시간 초과되는 경우에는 연결 및 라우팅 문제를 따로 점검해야 합니다.
먼저 확인하기: 코어가 시작되지 않았나요, 시작 후 연결되지 않나요?
v2rayN은 노드, 구독, 설정을 관리하는 그래픽 클라이언트이며 실제 연결은 호출된 코어가 처리합니다. 메인 창이 열리고 서버 목록이 표시되어도 코어가 실행 중이라는 뜻은 아닙니다. 반대로 웹페이지가 열리지 않는다고 코어 시작 실패라고 단정할 수도 없습니다. 노드에 연결할 수 없거나 DNS 확인에 실패하거나 라우팅 규칙이 잘못 적용되는 문제는 코어가 정상적으로 시작된 뒤에도 발생할 수 있습니다.
이 흐름은 문제 발생 단계를 찾기 위한 기준이며, 모든 코어가 내부적으로 정확히 같은 순서로 동작한다는 뜻은 아닙니다. 로그의 failed to start는 대개 상위 단계의 요약일 뿐입니다. 실제 원인은 뒤에 나오는 failed to listen, 파일 경로 또는 파싱 오류에 있을 수 있습니다. 마지막 한 줄만 잘라내지 말고 전체 오류와 앞뒤 로그를 함께 보관하세요.
| 관찰된 현상 | 우선 확인할 원인 | 다음 단계 |
|---|---|---|
| 설정 파싱 오류가 발생한 뒤 프로세스가 종료됨 | 설정 또는 매개변수 문제 | 오류가 난 필드, 파일 경로, 코어 유형 확인 |
| 수신 대기 실패와 로컬 주소 및 포트가 표시됨 | 포트 충돌 또는 바인딩 제한 | 해당 포트를 사용하는 프로세스 조회 |
| 프로그램 파일을 찾을 수 없고 코어 시작 로그도 없음 | 파일, 경로 또는 압축 해제 문제 | 실제로 호출되는 실행 파일 확인 |
| 로컬 수신 대기는 정상이지만 요청 시 시간 초과 | 연결 단계 문제 | 노드, DNS, 시스템 시간, 라우팅 확인 |
전체 시작 로그 한 번 저장하기
클라이언트 버전, 현재 노드의 프로토콜, 선택한 코어, 마지막으로 변경한 항목을 먼저 기록하세요. 메뉴 이름은 버전에 따라 다를 수 있으므로 아래에서는 일반적인 중국어 인터페이스 경로를 사용합니다. 사용 중인 버전에서 위치가 다르면 같은 이름의 설정 항목을 찾아보세요. 메뉴 경로를 맞추려고 모든 설정을 초기화하지 마세요.
-
현재 상태 기록
‘도움말’ → ‘정보’에서 클라이언트 버전을 기록하세요. ‘설정’ → ‘매개변수 설정’에서 로컬 수신 포트와 Core 유형 관련 항목을 확인합니다. 사용 중인 버전에서 코어를 별도 페이지로 관리한다면 해당 페이지에 표시된 코어 이름도 기록하세요.
-
변수 줄이기
설정을 백업하고 TUN을 잠시 끈 다음 노드 하나만 선택해 테스트하세요. 시스템 프록시는 애플리케이션 트래픽을 전달하는 진입점일 뿐, 코어 시작에 필요한 조건은 아닙니다. 분할 라우팅, DNS, 구독 내용을 한꺼번에 변경하지 마세요.
-
다시 시작 시도
메인 창 하단의 로그 영역에서 현재 시간을 확인한 다음 도구 모음이나 트레이 메뉴의 서비스 재시작 기능으로 한 번 실행하세요. 여러 번 연속해서 클릭하면 실패 로그가 뒤섞일 수 있습니다.
-
원본 로그 저장
이번 시작 시도에서 사용한 파일 경로, 오류 흐름, 종료 메시지를 복사해 두세요. 코어 출력이 보이지 않으면 로그 관련 설정에서 코어 로그 표시를 켠 뒤 다시 시도합니다. 로그를 공유하기 전에는 구독 주소, 노드 인증 정보, 개인 파일 경로를 가리세요.
포트 충돌: 수신 주소로 해당 프로세스 찾기
아래 영문은 흔히 볼 수 있는 오류 예시입니다. 주소와 포트, 바깥쪽 접두어는 사용 중인 기기의 로그를 기준으로 확인하세요. 예시에 나온 127.0.0.1:10808은 모든 버전의 고정 기본값이 아닙니다. 설정이나 오류에 표시된 포트를 조회해야 합니다.
오류: bind: address already in use
원인 및 해결: 대상 주소와 포트를 이미 다른 프로세스가 사용 중입니다. 수신 대기 중인 프로세스를 확인하고 중복 실행된 클라이언트를 종료하거나, 현재 인바운드에 사용 가능한 포트를 지정한 뒤 다시 시작하세요.
오류: Only one usage of each socket address (protocol/network address/port) is normally permitted.
원인 및 해결: Windows에서 흔히 발생하는 소켓 주소 충돌 메시지입니다. 같은 오류에 표시된 포트를 확인한 뒤 해당 포트를 사용하는 프로세스를 찾으세요. 이 문구만으로 원격 서버 문제라고 단정할 수는 없습니다.
PowerShell에서 다음 읽기 전용 명령을 실행하세요. 첫 번째 명령은 TCP 수신 대기 항목과 PID를 표시하고, 두 번째 명령은 해당 프로세스의 이름, 실행 파일 경로, 시작 매개변수를 확인합니다. 경로 정보가 비어 있으면 작업 관리자에서 추가로 확인하고, 필요한 경우 관리자 권한으로 조회하세요.
Get-NetTCPConnection -LocalPort 10808 -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, OwningProcess
Get-NetTCPConnection -LocalPort 10808 -State Listen -ErrorAction SilentlyContinue |
ForEach-Object {
Get-CimInstance Win32_Process -Filter "ProcessId = $($_.OwningProcess)"
} |
Select-Object ProcessId, Name, ExecutablePath, CommandLine
- 클라이언트가 두 개 실행 중: 트레이와 작업 관리자에서 확인한 뒤 불필요한 인스턴스를 정상 종료하고, 남겨 둔 클라이언트만 다시 시작하세요.
- 이전 코어 프로세스가 남아 있음: 먼저 v2rayN을 종료하고 경로와 명령줄로 남은 프로세스를 확인하세요. 어떤 프로그램의 프로세스인지 확인한 후에만 종료하고, 이름만 보고 일괄 종료하지 마세요.
- 다른 서비스가 포트를 사용 중: 정체를 알 수 없는 시스템 서비스를 중지하지 마세요. ‘설정’ → ‘매개변수 설정’에서 해당 로컬 수신 포트를 예시의 10808에서 사용 가능한 것으로 확인한 10818로 변경한 뒤 저장하고 다시 시작할 수 있습니다.
- 포트를 바꾼 뒤 연결 설정도 변경: 프록시를 수동으로 설정한 브라우저, 터미널, 애플리케이션은 여전히 이전 포트를 사용할 수 있으므로 함께 업데이트해야 합니다. 로그에 UDP 바인딩 실패가 표시되면
Get-NetUDPEndpoint -LocalPort 10808로 조회하세요.
정리: 포트를 바꾸기 전에 사용 중인 프로세스부터 확인하세요
포트를 사용 중인 프로세스가 현재 클라이언트의 정상적인 코어인지 먼저 확인하세요. 오류가 과거 로그에만 있고 현재 수신 대기가 정상이라면 포트를 바꿀 필요가 없습니다. 재현했을 때도 충돌이 발생하는 경우에만 중복 인스턴스를 정리하거나 해당 인바운드 포트를 변경하세요.
JSON 오류: 문법을 고친 뒤 필드 의미 확인하기
JSON 문법이 올바른 것과 코어가 설정을 받아들이는 것은 별개의 문제입니다. 따옴표나 괄호가 빠졌거나 쉼표가 추가된 경우는 문법 오류입니다. 필드 위치가 잘못되었거나 현재 코어가 전송 매개변수를 지원하지 않는 경우는 설정 의미 또는 호환성 문제입니다. ‘설정 오류’가 보인다고 구독을 반복해서 업데이트하지 마세요.
오류: unexpected EOF
원인 및 해결: 데이터를 읽던 중 예상보다 일찍 끝에 도달했다는 뜻입니다. 설정이 잘렸거나 괄호가 닫히지 않았을 수 있습니다. 먼저 상위 로그를 확인해 구독 응답이 아니라 설정 파일을 파싱하던 중인지 확인한 다음, 완전한 파일로 복원하세요.
오류: invalid character '}' looking for beginning of object key string
원인 및 해결: 객체의 키를 읽기 전에 닫는 괄호를 만난 경우입니다. 마지막 항목 뒤에 쉼표가 남아 있는 것이 흔한 원인입니다. 해당 객체를 찾아 끝에 붙은 쉼표를 지운 뒤 실제 코어로 다시 확인하세요.
아래 설정 조각은 엄격한 JSON에서 마지막 쉼표가 문제를 일으키는 사례를 설명하기 위한 것으로, 바로 실행할 수 있는 완성된 프록시 설정이 아닙니다. 객체와 배열의 마지막 항목 뒤에는 쉼표를 붙이지 말고 문자열에는 영문 큰따옴표를 사용하세요.
{
"log": {
"loglevel": "warning"
}
}
일반 노드 모드에서는 v2rayN이 노드와 설정을 바탕으로 실행 설정을 생성하는 경우가 많습니다. 생성된 파일을 직접 수정하면 다시 시작할 때 변경 사항이 덮어써질 수 있으므로 노드 편집 창이나 설정 메뉴에서 원본을 수정하세요. 사용자 지정 설정 모드라면 가져온 원본 파일을 수정하고, 로그에 표시된 경로가 바로 그 파일인지 확인해야 합니다.
inbounds및outbounds같은 배열과 객체의 괄호가 짝을 이루는지, 불리언 값이 문자열로 잘못 입력되지는 않았는지 확인하세요.- 로그에 행·열 번호나 바이트 오프셋이 표시되면 해당 위치와 바로 앞 항목을 확인하세요. 쉼표가 빠진 경우 오류 위치가 다음 필드를 가리키는 일이 많습니다.
- 구독 텍스트, 단일 노드 공유 링크, 클라이언트 백업 파일을 코어 실행용 JSON으로 사용하지 마세요.
- 전체 설정을 온라인 포맷터에 업로드하지 마세요. 노드 주소, 사용자 식별 정보, 키가 유출되지 않도록 로컬 편집기를 사용하세요.
코어 파일 누락과 매개변수 호환성 문제는 따로 확인하기
코어 자체의 출력이 전혀 없다면 먼저 프로그램이 실제로 실행되었는지 확인하세요. Windows에서 The system cannot find the file specified.가 표시되면 예외에 나온 파일 이름을 살펴봐야 합니다. 누락된 파일은 코어 실행 파일일 수도 있고 시작에 필요한 다른 파일일 수도 있으므로 구독이 만료되었다고 바로 단정하지 마세요.
-
경로 확인
시작 오류에서 실제 호출 경로를 찾아 해당 파일이 존재하는지 확인하세요. 폴더에 같은 이름의 파일이 있다는 사실만으로는 충분하지 않습니다. 클라이언트 설정이 실제로 그 파일을 가리키는지도 확인하세요.
-
압축 파일 전체 해제
사용 중인 시스템과 프로세서 아키텍처에 맞는 클라이언트 패키지 전체를 새 별도 폴더에 압축 해제하고 폴더 구조를 유지하세요. 압축 파일 미리보기에서 바로 실행하거나 기본 프로그램만 복사해 기존 폴더에 덮어쓰지 마세요.
-
차단 여부 확인
Windows 보안 센터의 보호 기록과 파일 권한을 확인하세요. 파일이 차단되거나 처리되었다면 출처와 탐지 이유를 먼저 확인한 뒤 복원하거나 다시 받으세요. 문제 해결을 위해 전체 보호 기능을 끄지 마세요.
-
코어 확인
‘설정’ → ‘매개변수 설정’에서 Core 유형 관련 항목을 확인하고, 현재 노드에 별도 코어가 지정되어 있는지도 확인하세요. 클라이언트에 포함된 코어 파일을 우선 사용하고 출처가 다른 프로그램과 설정을 섞지 마세요.
매개변수 호환성 문제는 대개 설정을 읽는 단계까지 진행된 뒤 발생합니다. 예를 들어 VLESS 노드의 일부 보안 또는 전송 설정은 해당 기능을 지원하는 코어가 필요합니다. VMess 노드도 프로토콜 이름만으로 모든 매개변수가 호환된다고 볼 수 없습니다. V2Ray와 Xray는 설정의 일부를 공유하지만 필드와 기능이 완전히 같지는 않으므로, 코어를 바꾸면 무조건 해결된다고 생각하지 마세요.
.\xray.exe version
.\xray.exe run -test -config ".\config.json"
검사가 통과하면 해당 코어가 파일을 읽고 설정 검사를 통과했다는 뜻입니다. 포트가 비어 있거나 노드에 연결할 수 있다는 보장은 아닙니다. 검사에 실패하면 가장 안쪽 오류를 보관하고, 오류가 가리키는 프로토콜, 전송, 보안 설정 또는 외부 파일을 수정하세요. 한 번에 한 항목씩 바꾸고 매번 다시 검사합니다.
수정 후 다시 확인하기: 수신 대기, 프록시 진입점, 요청 로그
복구할 때는 먼저 코어가 계속 실행되는지 확인하고, 그다음 시스템 프록시를 복원한 뒤 마지막으로 TUN을 따로 테스트하세요. 처음부터 모든 진입점을 한꺼번에 활성화하면 새로운 권한, 가상 네트워크 어댑터, 라우팅 문제가 기존 오류를 덮을 수 있습니다.
- 시작 단계: 서비스를 한 번 재시작하고 이번 로그에 새로운 설정 오류, 바인딩 실패 또는 즉시 종료 메시지가 없는지 확인하세요.
- 수신 대기 단계: 앞에서 안내한 포트 조회 명령으로 실제 포트를 확인하세요. 수신 대기 PID가 이번에 시작한 코어의 PID인지 확인해야 합니다.
- 요청 단계: 필요한 프록시 진입점을 복원하고 요청을 한 번 보내 클라이언트 로그에서 요청이 코어에 전달되는지 확인하세요. 액세스 로그를 활성화하지 않았다면 기록이 없다고 해서 요청이 전달되지 않았다는 뜻은 아닙니다.
- 기능 단계: 기본 프록시가 작동한 뒤 TUN과 사용자 지정 라우팅을 복원하세요. 이 단계에서만 문제가 발생한다면 새로 활성화한 기능을 점검하고 JSON 문장 부호를 계속 수정하지 마세요.
컴퓨터를 재시작한 뒤 포트 충돌이 다시 발생하면 어떻게 하나요?
오류에 표시된 포트의 PID와 프로그램 경로를 조회한 다음 작업 관리자의 시작 앱과 트레이 인스턴스를 확인하세요. 클라이언트 복사본 두 개가 자동 시작된다면 시작 항목을 하나만 남기세요. 포트만 바꾸고 중복 실행을 그대로 두지 마세요.
관리자 권한으로 실행하면 해결됩니다. 계속 관리자 권한으로 실행해야 하나요?
먼저 TUN을 끄고 일반 로컬 프록시가 시작되는지 확인하세요. 일반적인 높은 번호의 포트에서 수신 대기하는 데는 대개 관리자 권한이 필요하지 않습니다. TUN을 켰을 때만 실패한다면 무조건 권한을 높이지 말고 로그의 권한 및 가상 네트워크 어댑터 관련 메시지를 확인하세요.
구독을 업데이트하면 JSON 오류가 해결되나요?
오류가 노드 데이터에서 발생했고 구독 제공 측에서 이미 수정한 경우에만 도움이 될 수 있습니다. 사용자 지정 설정의 괄호 오류, 로컬 포트 충돌, 코어 파일 누락은 기기에서 직접 해결해야 합니다. 먼저 오류에 나온 경로가 어떤 설정 파일을 가리키는지 확인하세요.
시작 오류는 없는데 웹페이지가 계속 시간 초과되면 어떻게 하나요?
애플리케이션이 현재 수신 포트를 사용 중인지 먼저 확인한 다음 노드 연결 상태, DNS, 시스템 시간, 라우팅을 점검하세요. 코어 시작 문제 확인은 여기서 끝났습니다. 연결 단계별로 원인을 좁히려면 문제 해결 가이드를 참고하세요.
v2rayN 클라이언트 다운로드
클라이언트 전체 패키지를 다시 받아야 한다면 운영체제와 프로세서 아키텍처에 맞는 파일을 선택하세요. 기존 설정을 먼저 백업하고 별도 폴더에서 기본 실행을 확인한 뒤 노드와 사용자 지정 설정을 옮기세요.
다운로드 옵션 보기 사용 가이드 보기