v2rayN 코어 시작 오류 해결: 로그로 포트 충돌과 설정 오류 찾기

코어가 시작 직후 종료되면 로그에서 오류를 확인하세요. 포트 충돌, JSON 구문 오류, 알 수 없는 필드, geo 파일 누락별 원인과 해결 방법을 안내합니다.

이 글의 핵심

v2rayN 창은 열리지만 노드를 활성화한 뒤 코어가 바로 종료되는 경우에 해당합니다. 먼저 한 번 실행했을 때의 오류 로그 전체를 보관하고, 포트·설정 파싱·코어 호환성·규칙 리소스 순으로 원인을 찾아보세요. 아래에 Windows 포트 조회 명령, JSON 수정 예시와 복구 확인 순서를 정리했습니다. 예시 포트는 10808이며, 실제 작업은 로그에 표시된 수신 주소를 기준으로 해야 합니다.

1. 코어 종료와 연결 시간 초과 구분하기

v2rayN은 그래픽 관리 프로그램이며, 프록시 연결은 호출된 코어가 처리합니다. 메인 창이 열려도 코어가 실행 중이라는 뜻은 아닙니다. 반대로 웹페이지가 열리지 않는다고 해서 코어 시작 오류인 것도 아닙니다. 먼저 메인 화면 아래의 로그 영역을 확인하세요. 실행 후 설정 읽기 오류나 수신 대기 실패가 나타나고 프로세스가 종료됐다면 이 글의 점검 절차를 따라가면 됩니다.

로그에 수신 대기 성공이 표시된 뒤 웹사이트에 접속할 때 i/o timeout이 발생한다면 노드 연결 상태, DNS, 라우팅 분기를 먼저 확인하세요. 실행 중 발생한 요청 오류를 시작 오류로 오인하지 말고, 코어가 정상적으로 시작되기 전에 시스템 프록시를 반복해서 변경하지 마세요. 시스템 프록시는 앱의 트래픽을 어디로 보낼지 정할 뿐, 코어의 JSON 구문 오류를 해결하지 못합니다.

  1. 현재 상태 기록하기

    「도움말」→「정보」에서 v2rayN 버전을 기록하고, 시작 로그에서 실제 코어 이름과 버전을 확인하세요. 메뉴 이름은 UI 버전에 따라 다를 수 있으므로 현재 화면을 기준으로 확인해야 합니다.

  2. 오류 한 번 재현하기

    현재 노드를 선택하고 Enter 키를 눌러 활성 서버로 지정하세요. 이번 실행 시간대의 로그를 확인하고 설정 읽기부터 종료까지 전체 내용을 보관하세요. 마지막의 「시작 실패」 한 줄만 캡처하면 원인을 찾기 어렵습니다.

  3. 가장 안쪽의 원인 찾기

    failed to, 콜론 또는 >로 이어지는 오류를 따라가며 포트, 필드 이름, 파일 경로 또는 줄·열 위치를 확인하세요. 상위 단계의 요약 메시지보다 이런 정보가 원인 파악에 더 유용합니다.

  4. 한 번에 한 항목만 수정하기

    설정이나 사용자 지정 구성을 먼저 백업한 뒤, 확인된 문제만 하나씩 수정하세요. 노드를 다시 활성화하고 새 로그에서 기존 오류가 사라졌는지 확인한 다음 다음 오류를 처리합니다.

2. 포트 충돌: PID로 수신 프로세스 찾기

오류에 listen tcp, bind 또는 address already in use가 있다면 먼저 로컬 수신 포트를 확인하세요. 아래 오류 문구는 유형을 구분하기 위한 예시이며, 전체 접두어는 시스템과 코어 버전에 따라 달라질 수 있습니다. Windows의 바인딩 오류는 포트 예약이나 보안 정책 때문일 수도 있으므로 bind가 보인다고 특정 프로세스가 포트를 점유했다고 단정하면 안 됩니다.

오류: address already in use

원인 및 해결: 코어가 수신 대기하려는 주소와 포트를 이미 다른 프로세스가 사용 중입니다. 해당 PID를 조회해 중복 실행된 코어인지 확인하세요. 중복 인스턴스를 정상 종료하거나 v2rayN의 인바운드 포트를 사용 가능한 포트로 변경합니다.

오류: Only one usage of each socket address (protocol/network address/port) is normally permitted.

원인 및 해결: Windows에서 흔히 나타나는 소켓 주소 충돌 메시지입니다. 이 메시지 앞에 표시된 주소와 포트를 조회하세요. 기본 포트만 확인해서는 안 됩니다.

Windows 터미널에서 아래 명령 두 개를 실행하세요. 첫 번째 명령은 10808이 포함된 TCP 기록을 찾습니다. LISTENING 행의 맨 오른쪽에서 PID를 확인한 다음, 두 번째 명령의 1234를 실제 PID로 바꾸세요. 원격 포트가 우연히 10808인 연결을 로컬 수신으로 오인하지 않도록 「로컬 주소」 열도 확인해야 합니다.

netstat -ano -p tcp | findstr ":10808"
tasklist /FI "PID eq 1234"

3. JSON 구문 오류: 형식을 먼저 고친 뒤 프로토콜 필드 확인하기

사용자 지정 설정으로 시작하지 못한다면 먼저 JSON 파싱 단계에서 중단됐는지 확인하세요. 흔한 원인은 마지막에 불필요한 쉼표를 붙인 경우, 문자열에 한글 따옴표를 사용한 경우, 객체 괄호를 닫지 않은 경우, Windows 경로의 백슬래시를 이스케이프하지 않은 경우입니다. 일반 구독 노드는 대개 v2rayN이 실행 설정을 생성합니다. 설정을 직접 편집하지 않았다면 파일 전체를 감으로 다시 작성하기보다 구독 내용과 생성 과정을 확인하세요.

오류: invalid character '}' looking for beginning of object key string

원인 및 해결: 객체를 닫기 전에 불필요한 쉼표가 남아 있을 수 있습니다. 파서는 다음 필드 이름을 기다리는 상태입니다. 오류 위치 바로 앞 줄을 확인하고 마지막 쉼표를 지운 뒤 다시 검사하세요.

오류: unexpected EOF

원인 및 해결: 파일이 중간에 잘렸거나 닫는 따옴표, 중괄호 또는 대괄호가 빠졌을 수 있습니다. 로컬 편집기에서 괄호가 짝을 이루는지 확인하고, 필요하다면 이전 백업을 복원하세요.

아래는일부러 오류를 남긴 예시입니다. "warning" 뒤의 쉼표는 객체의 마지막 필드 뒤에 올 수 없습니다. 구문 설명을 위한 예시일 뿐, 실행 가능한 프록시 설정이 아닙니다.

{
  "log": {
    "loglevel": "warning",
  }
}

이 쉼표를 삭제하면 해당 예시의 JSON 구문은 올바르게 됩니다. 하지만 구문이 맞는다고 코어 설정까지 유효한 것은 아닙니다. 필드 이름과 유형, 프로토콜 지원 범위를 계속 확인해야 합니다. 경로는 "C:\\Tools\\v2rayN\\rules"처럼 작성해야 하며 JSON 문자열에 백슬래시 하나만 그대로 넣으면 안 됩니다.

{
  "log": {
    "loglevel": "warning"
  }
}

4. 알 수 없는 필드: 실제 코어와 설정 출처 확인하기

JSON 파싱은 성공했지만 코어가 특정 필드나 프로토콜을 지원하지 않는다면 설정에 맞는 코어와 버전을 확인해야 합니다. v2rayN 버전과 코어 버전은 별개입니다. 관리 프로그램을 업데이트해도 모든 코어가 함께 업데이트되는 것은 아닙니다. 로그에 표시된 실제 실행 파일과 버전을 기준으로 판단하세요.

Xray와 V2Fly는 설정 체계의 일부를 공유하지만 모든 항목을 서로 바꿔 쓸 수 있는 것은 아닙니다. 예를 들어 REALITY와 XTLS Vision은 Xray 관련 기능이므로 이런 설정이 포함된 구성을 V2Fly에 그대로 전달할 수 없습니다. Xray를 사용하더라도 오래된 코어는 최신 설정 항목을 인식하지 못할 수 있습니다.

로그 단서우선 확인할 항목확인 위치
unknown field필드 이름의 오타, 올바른 계층, 현재 코어의 지원 여부노드 편집 창 또는 사용자 지정 설정 원본 파일
unknown config id인바운드 또는 아웃바운드 프로토콜 이름과 코어 지원 범위설정의 protocol과 코어 선택
오류가 realitySettings를 가리킴실제로 Xray를 호출하는지, 버전과 설정이 서로 맞는지「설정」→「매개변수 설정」의 코어 관련 옵션
오류가 flow를 가리킴노드 프로토콜, 흐름 제어 값과 서버 요구 사항이 일치하는지노드 편집 창의 흐름 제어 항목

판단 순서: 코어를 먼저 확인한 뒤 필드 수정하기

오류가 노드에 필요한 전송 또는 보안 설정을 가리킨다면 코어가 해당 설정을 지원하는지 먼저 확인한 뒤 구성을 수정하세요. 시작 검사를 통과하려고 해당 필드를 바로 삭제하면 코어는 실행되지만 핸드셰이크에 실패할 수 있습니다.

5. geo 파일 누락: 로그에 표시된 경로에서 규칙 리소스 복구하기

설정의 geoip: 및 geosite: 규칙에는 해당 리소스 파일이 필요한 경우가 많습니다. 규칙 초기화는 시작 단계에서 진행되므로 리소스가 없거나 읽기 권한이 부족하거나 파일 형식이 맞지 않으면 코어가 바로 종료될 수 있습니다. 로그에 파일 이름이 나타나면 실제로 읽으려는 경로를 확인하세요. 다운로드 폴더에 같은 이름의 파일이 있는지만 확인해서는 안 됩니다.

오류: failed to load GeoIP

원인 및 해결: GeoIP 리소스를 읽거나 파싱하지 못했습니다. 뒤에 이어지는 파일 경로와 세부 오류를 확인하고 파일이 있는지 살펴본 다음, 클라이언트의 Geo 파일 업데이트 기능으로 관련 리소스를 복구하세요.

오류: The system cannot find the file specified.

원인 및 해결: 앞부분에 geoip.dat 또는 geosite.dat가 표시됐다면 실제 경로에 해당 파일이 없는 것입니다. 전체 디렉터리 구조를 복원하거나 리소스 경로를 수정하세요. 빈 파일로 대신하면 안 됩니다.

  1. 읽으려는 대상 확인. 오류 메시지에서 파일 이름과 경로를 적어 두세요. 코어 설정, 규칙 리소스, 실행 파일 중 무엇을 읽으려는지 구분해야 합니다. 「파일을 찾을 수 없음」이라는 메시지가 항상 geo 문제를 뜻하는 것은 아닙니다.
  2. 디렉터리 구조 복원. 프로그램을 옮긴 직후라면 본 프로그램만 복사한 것은 아닌지 확인하세요. 설정을 백업한 뒤 관련 파일을 복원하고, 출처가 다른 리소스를 임의로 섞지 마세요.
  3. 리소스 업데이트 실행. 「업데이트 확인」에서 Geo 파일 관련 업데이트 항목을 찾아 업데이트가 끝날 때까지 기다린 다음 코어를 다시 시작하세요. UI에서 리소스 항목이 나뉘어 있다면 각각 업데이트됐는지 확인합니다.
  4. 항목 이름 확인. 파일이 있는데도 특정 분류를 찾을 수 없다는 메시지가 나타나면 라우팅 규칙의 분류 이름과 현재 데이터 파일의 내용을 비교하세요. 원래 존재하지 않는 분류 이름은 다시 다운로드해도 해결되지 않습니다.

6. 복구 후 확인: 수신 대기부터 요청 테스트까지

복구 여부는 창이 계속 열려 있는지가 아니라 같은 유형의 오류가 사라졌는지로 판단해야 합니다. 노드를 다시 활성화한 뒤 코어가 바로 종료되지 않는지 확인하고, 수신 포트를 점검한 다음 시스템 프록시를 다시 적용해 접속을 테스트하세요. 이 단계에서 TLS, DNS 또는 시간 초과 오류가 나타난다면 연결 단계에 진입한 것이므로 새 오류 유형에 맞춰 계속 점검합니다.

매번 관리자 권한으로 실행하면 시작 오류를 해결할 수 있나요?

일반적인 해결책은 아닙니다. 로컬의 일반 고번 포트에서 수신 대기하는 데는 보통 관리자 권한이 필요하지 않습니다. 포트 충돌이나 JSON 오류도 관리자 권한으로 해결되지 않습니다. 먼저 TUN 모드를 끄고 일반 프록시 인바운드로 확인하세요. 로그에서 권한이나 가상 네트워크 어댑터 문제가 명확히 확인될 때만 해당 기능의 요구 사항에 따라 조치합니다.

구독을 업데이트한 뒤 실패합니다. 모든 노드를 삭제해야 하나요?

기존 구독 그룹은 유지하고 이전에 작동했던 노드부터 시도하세요. 새 노드만 실패한다면 프로토콜과 코어 요구 사항을 확인한 뒤 노드 편집 창을 살펴봅니다. 주소나 설정 출처가 잘못된 것을 확인한 경우에만 해당 그룹을 수정하면 됩니다. 모든 설정을 지울 필요는 없습니다.

로그에 구체적인 오류 없이 코어가 종료될 때는 어떻게 하나요?

시작 시간대에 코어 실행 파일 누락이나 보안 소프트웨어 차단 기록이 있는지 확인하고 프로그램 압축이 제대로 풀렸는지도 살펴보세요. 코어를 직접 실행해 진단해야 한다면 먼저 해당 코어의 명령 도움말을 확인한 다음 로그에 표시된 설정 파일로 테스트하세요. 다른 코어의 매개변수를 그대로 적용하지 마세요.

포트를 변경한 뒤 코어는 정상인데 브라우저에서 페이지가 열리지 않나요?

브라우저가 이전 포트를 계속 사용하도록 설정돼 있는지 확인하고 v2rayN의 시스템 프록시 설정을 다시 적용하세요. 요청이 이미 코어 로그에 나타난다면 노드 연결을 점검해야 합니다. 로컬 포트를 계속 바꾸지 마세요.

v2rayN 다운로드