v2rayN TUN 모드 설정 방법: 가상 네트워크 어댑터로 전체 트래픽을 처리하는 원리와 설정 단계

시스템 프록시는 설정을 따르는 앱에만 적용됩니다. TUN 모드는 가상 네트워크 어댑터를 통해 트래픽을 처리합니다. 작동 원리와 관리자 권한, 설정 방법, 라우팅 규칙 활용법을 알아봅니다.

이 글 미리보기

이 글에서는 Windows 데스크톱용 v2rayN을 기준으로 설명합니다. 먼저 노드와 로컬 프록시가 정상인지 확인한 다음, 관리자 권한으로 TUN을 켜고 라우팅, DNS, 대상 앱을 점검합니다. 여기서 ‘전체 트래픽 처리’란 TUN이 받아들이는 트래픽의 범위가 넓어진다는 뜻이지, 모든 연결이 프록시를 거친다는 의미는 아닙니다. 실제 적용 범위는 라우팅 규칙, 제외 항목, IPv6 설정에 따라 달라집니다.

1. TUN과 시스템 프록시의 차이: 트래픽이 들어오는 경로와 분기 방식

시스템 프록시는 프록시 주소를 시스템 설정에 등록하고, 각 앱이 이 설정을 사용할지 결정하는 방식입니다. 브라우저는 대체로 설정을 따르지만 일부 명령줄 도구, 게임, 자체 네트워크 스택을 사용하는 프로그램은 자동으로 적용되지 않습니다. 따라서 브라우저에서 특정 사이트에 접속된다고 해서 다른 프로그램도 같은 프록시 경로를 사용한다고 볼 수는 없습니다.

TUN은 IP 패킷을 받는 3계층 가상 네트워크 인터페이스입니다. TUN을 켜면 클라이언트가 운영체제의 라우팅과 연동해 조건에 맞는 패킷을 TUN으로 전달합니다. 그러면 TUN을 구동하는 코어가 연결을 처리하고, 규칙에 따라 아웃바운드를 선택합니다. 모든 앱에 HTTP 프록시 포트를 열어 주는 방식은 아닙니다.

앱에서 데이터 전송 시스템 라우팅 결정 TUN에서 데이터 수신 규칙에 따라 아웃바운드 선택 직접 연결 또는 프록시
비교 항목시스템 프록시TUN 모드
트래픽 유입 경로앱이 로컬 프록시 주소로 직접 연결운영체제가 라우팅 조건에 맞는 패킷을 가상 인터페이스로 전달
앱의 프록시 설정 지원앱이 시스템 설정을 따르거나 프록시를 직접 지정해야 함일반적으로 앱에 프록시 설정 기능이 없어도 사용 가능
권한현재 사용자 프록시 설정 변경은 대개 관리자 권한이 필요하지 않음인터페이스 생성 및 라우팅 설정에는 대개 권한 상승이 필요함
아웃바운드 선택프록시 코어의 라우팅 규칙으로 결정실제로 실행 중인 코어의 라우팅 규칙으로 결정

따라서 ‘전체’에는 적어도 두 가지 의미가 있습니다. 더 많은 앱을 프록시 처리 경로로 끌어들이는 것과, 해당 경로에 들어온 연결을 모두 프록시 아웃바운드로 보내는 것입니다. TUN은 주로 첫 번째 문제를 해결합니다. LAN 직접 연결, 대상 주소 제외 규칙, 다른 가상 네트워크 어댑터의 전용 경로에 따라 일부 연결은 TUN을 우회할 수 있습니다.

2. 시작 전 확인 사항: 노드, 코어, 로컬 포트

먼저 일반 프록시 모드가 정상 작동하는지 확인한 다음 TUN을 켜세요. TUN은 작동하지 않는 구독, 잘못된 VLESS 매개변수, 서로 맞지 않는 TLS 설정을 고쳐 주지 않습니다. 현재 노드부터 연결되지 않는다면 가상 네트워크 어댑터를 추가해도 더 많은 앱에 장애가 퍼질 뿐입니다.

10808
아래 명시적 프록시 테스트에 사용할 로컬 포트 예시입니다. 실행 전 실제 리스닝 포트를 확인하세요
53
일반 DNS가 주로 사용하는 대상 포트입니다. 암호화 DNS 요청 전체를 포함하지는 않습니다

요점: 재현 가능한 프록시 기준 상태부터 만들기

먼저 로컬 프록시를 명시한 요청으로 노드를 확인하고, 이어서 프록시를 지정하지 않은 동일한 요청으로 TUN을 확인하세요. 같은 대상을 사용해야 ‘노드가 작동하지 않음’과 ‘트래픽이 TUN에 들어가지 않음’을 구분할 수 있습니다.

3. Windows에서 TUN 켜기: 관리자 권한, 활성화, 로그 확인

처음 설정할 때는 컴퓨터 앞에서 직접 작업하세요. 원격 데스크톱에만 의존해 라우팅을 변경하지 않는 것이 좋습니다. 네트워크가 끊기면 원격 연결도 함께 끊길 수 있습니다. 아래 단계는 메인 화면에 TUN 스위치가 있는 v2rayN을 기준으로 합니다. 사용 중인 버전에서 메뉴 위치가 다르면 매개변수 설정의 TUN 관련 화면을 확인하세요. 메뉴 이름이 버전마다 동일하다고 가정하지 마세요.

  1. 설정을 저장하고 클라이언트를 종료합니다. 먼저 TUN을 끈 다음 트레이 메뉴에서 v2rayN을 종료하세요. 이전 프로세스가 리스닝 포트를 계속 사용하거나 실행 상태를 유지하는 일을 방지할 수 있습니다.
  2. 관리자 권한으로 다시 실행합니다. v2rayN 프로그램을 마우스 오른쪽 버튼으로 클릭하고 Windows의 ‘관리자 권한으로 실행’을 선택해 시스템 권한을 허용하세요. 현재 설치 방식에 지원되는 권한 상승 방법이 있다면 권한 승인이 완료됐는지도 확인합니다.
  3. 활성 노드와 라우팅 모드를 선택합니다. 먼저 작동이 확인된 노드를 사용하세요. 규칙의 동작을 직접 설명할 수 있는 분기 규칙을 유지하고, 첫 테스트에서 출처를 모르는 규칙 세트를 함께 가져오지 마세요.
  4. 테스트를 분리하기 위해 시스템 프록시를 해제합니다. 메인 화면이나 트레이의 시스템 프록시 메뉴에서 시스템 프록시 해제를 선택하세요. 브라우저가 여전히 시스템 프록시로 접속해 TUN 미작동을 가리는 상황을 방지하기 위한 조치이며, 모든 환경에서 반드시 필요한 조건은 아닙니다.
  5. 메인 화면에서 TUN 스위치를 켭니다. 코어가 시작될 때까지 기다린 뒤 인터페이스 생성, 라우팅 설정, 시작 실패 관련 로그를 확인하세요. 스위치가 켜져 있다는 표시만으로 클라이언트가 상태를 기록했다고 볼 수 있을 뿐, 데이터 경로가 정상이라는 뜻은 아닙니다.
  6. 인터페이스를 확인하고 새 요청을 보냅니다. Windows 네트워크 어댑터 목록에 가상 인터페이스가 추가됐는지 확인한 다음, TUN으로 처리할 앱을 실행하세요. 이미 연결된 장시간 연결은 첫 테스트에 적합하지 않습니다. 연결을 끊었다가 새로 연결하세요.

관리자 권한은 인터페이스와 라우팅을 설정할 권한을 부여할 뿐, 서버의 UDP 지원 여부를 바꾸거나 모든 프로토콜 매개변수를 자동으로 호환되게 만들지는 않습니다. 로그에 지원하지 않는 필드가 표시되면 권한 설정을 더 추가하지 말고, 클라이언트가 생성한 설정과 함께 사용하는 코어가 호환되는지 확인하세요.

4. TUN 작동 확인: 브라우저 하나만으로 판단하지 않기

아래 명령은 Windows PowerShell에서 실행합니다. 첫 번째 명령은 로컬 SOCKS 리스닝 주소가 127.0.0.1:10808이라고 가정합니다. 실제 포트가 다르면 반드시 바꾸세요. curl.exe를 사용하는 이유는 실행 파일을 명시해 명령 별칭에 따른 인수 해석 차이를 피하기 위해서입니다.

curl.exe --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com/
curl.exe --noproxy "*" --connect-timeout 10 --max-time 20 -I https://example.com/
Get-NetAdapter
route print
Resolve-DnsName example.com

example.com은 여기서 명령 구문을 보여 주기 위한 예시일 뿐입니다. 대상에 직접 연결할 수 있다면 요청 성공만으로 프록시 아웃바운드가 선택됐다고 볼 수 없습니다. 해당 요청의 대상 주소와 시간, 코어 라우팅 로그를 함께 살펴 어느 규칙이 적용됐는지 확인하세요. 필요한 경우 동일한 테스트 대상을 기준으로 TUN을 끈 상태와 켠 상태를 비교합니다.

요점: TUN 유입 성공과 프록시 아웃바운드 성공은 따로 확인

새 연결이 TUN에 들어오는지 먼저 확인한 다음, 로그에서 예상한 아웃바운드가 선택됐는지 확인하세요. 직접 연결 규칙이 적용됐다면 외부 IP가 바뀌지 않았더라도 가상 네트워크 어댑터가 작동하지 않는다고 단정할 수 없습니다.

5. 라우팅, DNS, UDP: 혼동하기 쉬운 세 가지 경계

TUN이 연결을 받아도 라우팅 규칙은 여전히 적용됩니다. 프린터 연결이 실패하거나 프록시 서버로 향하는 연결이 다시 TUN으로 들어와 순환하지 않도록 LAN 주소, 필요한 로컬 서비스, 프록시 서버 자체 연결에 올바른 직접 연결 또는 제외 경로를 지정해야 합니다. 우선 클라이언트가 생성한 설정을 사용하세요. 다른 곳에서 가져온 필드 하나를 현재 설정 파일에 억지로 추가하지 마세요.

확인 대상발생할 수 있는 문제확인 방법
LAN 주소공유 폴더, 프린터, 라우터 관리 페이지 트래픽이 실수로 프록시를 통해 전달됨실제 LAN 대역을 확인하세요. 예: 192.168.1.0/24. 이는 예시이며 현재 네트워크 정보를 대신하지 않습니다
DNS 요청이름 조회와 접속 경로가 일치하지 않아 시간 초과가 발생하거나 현재 아웃바운드에 적합하지 않은 주소가 반환됨TUN의 DNS 설정과 리졸버 연결 가능 여부를 확인하고, 브라우저가 별도의 암호화 DNS를 사용하는지도 살펴보세요
IPv6IPv4만 처리할 경우 일부 연결이 IPv6 경로로 빠져나갈 수 있음IPv6 주소와 라우팅, TUN 지원 범위를 함께 확인하세요. IPv4 대상 하나만 테스트해서는 안 됩니다
UDP웹은 되지만 음성 채팅, 게임, QUIC 연결은 실패함TUN, 선택한 아웃바운드, 서버 경로가 해당 UDP 트래픽을 지원하는지 확인하세요

DNS 가로채기는 일반 DNS 요청을 코어의 리졸버로 보내는 과정에서 흔히 발생합니다. 하지만 대상 포트 53만 확인해서는 DoH 같은 암호화 DNS를 모두 파악할 수 없습니다. 앱이 HTTPS로 직접 이름을 조회하면 해당 연결은 일반 HTTPS 트래픽처럼 보입니다. 문제를 진단할 때는 ‘이름 조회를 누가 담당하는지’와 ‘조회 요청이 어느 경로로 나가는지’를 따로 기록하세요.

설정 형식도 서로 섞어 쓰면 안 됩니다. TUN은 클라이언트가 코어 기능을 구성하는 방식이지, tun이라는 범용 V2Ray JSON 최상위 필드가 아닙니다. sing-box, Xray, V2Fly는 설정 형식과 지원 범위가 서로 다릅니다. 설정을 직접 관리하기 전 로그에서 실제로 불러온 코어를 확인한 뒤 해당 코어의 필드를 살펴보세요. 기본 구조는 JSON 설정 매뉴얼을 참고하되, 코어가 다른 설정을 그대로 붙여 넣지 마세요.

6. 자주 발생하는 문제와 TUN 종료 후 복구 확인

시작 실패부터 트래픽 경로, 개별 앱 순서로 확인하세요. 문제가 발생한 시각 전후의 로그를 보관하고 권한 오류, 인터페이스 생성 실패, 주소 충돌, DNS 시간 초과, 아웃바운드 연결 오류를 중점적으로 살펴보세요. 로그를 공유하기 전에는 구독 주소, 인증 정보 등 민감한 내용을 삭제하세요.

TUN 스위치를 켠 직후 다시 꺼지나요?

먼저 코어 시작 로그를 확인하세요. 권한 부족이면 클라이언트를 종료하고 관리자 권한으로 다시 실행하세요. 설정 필드 오류라면 함께 사용하는 코어와 생성된 설정이 맞는지 확인합니다. 주소 또는 인터페이스 충돌이 표시되면 실행 중인 다른 터널을 먼저 종료한 뒤 다시 시도하세요. 인터페이스 생성을 연속해서 반복하지 마세요.

TUN을 켠 뒤 모든 사이트가 열리지 않으면 DNS부터 바꿔야 하나요?

먼저 TUN을 끄고 기존 네트워크가 복구되는지 확인한 다음, 로컬 프록시를 명시해 현재 노드를 테스트하세요. 노드가 정상이라면 TUN 로그와 라우팅을 확인하고 마지막으로 DNS를 점검합니다. 도메인 조회 시간 초과만 발생한다면 리졸버 주소와 해당 아웃바운드를 확인하세요. 노드, 라우팅, DNS를 한꺼번에 바꾸지 마세요.

웹은 되는데 게임이나 음성 채팅은 연결되지 않나요?

앱을 완전히 종료했다가 다시 연결해 이전 세션을 사용하지 않도록 하세요. 그런 다음 앱에 직접 연결 규칙이 적용되는지, 서버 경로가 UDP를 지원하는지, 방화벽이 해당 프로세스를 차단하는지 확인하세요. TUN이 패킷을 받는다고 해서 원격 서버가 앱에 필요한 트래픽을 전달할 수 있는 것은 아닙니다.

v2rayN을 종료한 뒤에도 네트워크가 정상으로 돌아오지 않으면 어떻게 하나요?

클라이언트를 다시 실행해 TUN을 정상적으로 끈 다음 시스템 프록시를 해제하고 종료하세요. Windows 프록시 설정이 여전히 로컬 리스닝 주소를 가리키는지 확인하고, 가상 인터페이스와 라우팅 상태도 살펴보세요. 그래도 복구되지 않으면 작업 내용을 저장한 뒤 시스템을 다시 시작할 수 있습니다. 회사 장비라면 먼저 관리자에게 문의하고 네트워크 어댑터를 일괄 삭제하지 마세요.

안정적으로 사용하기 위해 필요한 것은 간단합니다. 검증된 노드 하나, 동작을 설명할 수 있는 규칙 세트, 작동하는 이름 조회 설정, TUN을 정상적으로 끌 수 있는 방법을 유지하세요. 클라이언트나 코어를 업데이트한 뒤에는 스위치 상태만 보는 것보다 같은 테스트를 다시 실행하는 편이 확실합니다. 브라우저만 프록시가 필요하다면 시스템 프록시로 충분한 경우가 많습니다. 프록시 설정을 따르지 않는 앱이 있을 때 TUN을 사용하세요.

v2rayN 다운로드운영체제에 맞는 클라이언트 선택