TUN 모드란? 시스템 프록시와의 차이점
Clash에는 트래픽을 프록시로 라우팅하는 두 가지 방법이 있습니다: 시스템 프록시와 TUN 모드입니다. 이 차이를 이해하는 것이 Clash를 올바르게 활용하는 핵심입니다.
| 비교 항목 | 시스템 프록시 (HTTP/SOCKS5) | TUN 모드 (가상 NIC) |
|---|---|---|
| 동작 레이어 | 애플리케이션 계층 (L7) | 네트워크 계층 (L3) |
| 차단 방식 | 앱이 능동적으로 프록시 주소 설정 | OS 커널 수준의 트래픽 가로채기 |
| 적용 범위 | 프록시 프로토콜을 지원하는 앱만 | 모든 TCP/UDP 트래픽, 앱 지원 불필요 |
| UDP 지원 | 제한적, 앱 구현에 의존 | 완전한 UDP 지원 |
| 필요 권한 | 일반 사용자 권한 | 관리자 / root 권한 |
시스템 프록시는 OS 수준에서 HTTP/SOCKS5 프록시 주소(예: 127.0.0.1:7890)를 설정하는 방식입니다. 브라우저 등 프록시 프로토콜을 지원하는 앱은 요청을 해당 주소로 보내고 Clash가 전달합니다. 그러나 게임 클라이언트·CLI 도구·일부 Electron 앱은 시스템 프록시 설정을 무시하고 직접 연결합니다.
TUN 모드는 OS 내에 가상 네트워크 인터페이스(Mihomo TUN)를 생성하고 드라이버 수준에서 모든 발신 패킷을 가로챕니다. 앱이 프록시 프로토콜을 지원하는지 여부와 관계없이 모든 트래픽이 강제로 캡처되어 Clash의 규칙 엔진에서 처리됩니다. 이것이 진정한 의미의 "전역 투명 프록시"입니다.
TUN 모드가 필요한 경우
다음 시나리오에서 TUN 모드 활성화를 강력히 권장합니다:
- 게임 가속: Steam·Epic Games·Battle.net 등의 게임 클라이언트는 보통 시스템 프록시를 거치지 않습니다. TUN 활성화 시 게임 트래픽을 직접 프록시할 수 있습니다
- CLI 도구:
git clone·npm install·pip install·docker pull등은 기본적으로 시스템 프록시를 따르지 않습니다. TUN 모드 또는 환경 변수 수동 설정이 필요합니다 - UDP 프로토콜 앱: 화상 통화(Zoom·Teams)·음성 채팅(Discord)·DNS 쿼리 등 UDP에 의존하는 트래픽은 시스템 프록시의 UDP 지원이 제한적입니다
- 비표준 앱: 일부 개발 도구·학술 소프트웨어·VPN 클라이언트는 시스템 프록시 설정을 무시합니다
- iOS/macOS 전체 프록시: Stash/Surge와 조합하면 TUN이 시스템 업데이트를 포함한 모든 트래픽을 처리할 수 있습니다
Windows에서 TUN 모드 활성화하기 (Clash Verge Rev)
사전 조건
TUN 모드는 Clash Verge Rev를 관리자 권한으로 실행해야 합니다. 트레이 아이콘을 우클릭 → "관리자 권한으로 재시작"을 선택하거나, 시작 메뉴에서 앱 아이콘을 우클릭 → "관리자 권한으로 실행"을 선택하세요.
TUN을 처음 시작할 때 wintun.dll 드라이버(Windows TUN 가상 NIC 드라이버)가 자동으로 설치됩니다. 이 과정에서 약 1 MB의 드라이버 파일을 인터넷에서 다운로드합니다. 설치는 한 번만 필요합니다.
활성화 단계
- Clash Verge Rev가 관리자 권한으로 실행 중인지 확인합니다 (제목 표시줄 또는 트레이 아이콘에 방패 표시가 있어야 합니다)
- 왼쪽 탐색에서 "설정"을 클릭합니다
- "시스템 설정" 섹션에서 "TUN 모드" 스위치를 켭니다
- 드라이버 설치 메시지가 나타나면 "확인"을 클릭하고 설치 완료를 기다립니다
- 활성화 후 작업 관리자의 네트워크 어댑터 목록에 "Mihomo" 가상 NIC가 나타납니다
macOS에서 TUN 모드 활성화하기 (Clash Verge Rev)
활성화 단계
- Clash Verge Rev의 "설정" 페이지에서 "TUN 모드"를 찾아 켭니다
- 시스템 보안 알림이 나타나면 "시스템 환경설정 → 개인 정보 보호 및 보안"으로 이동합니다
- 페이지 하단의 "시스템 확장 프로그램이 차단됨" 알림을 찾아 "허용"을 클릭합니다
- macOS 사용자 암호를 입력하여 승인하고, Clash Verge Rev로 돌아가 TUN 스위치를 다시 켭니다
macOS Sequoia(15) 이상에서는 "시스템 설정 → VPN 및 필터"에서 Mihomo의 네트워크 확장 프로그램을 수동으로 허용해야 합니다.
Android TUN 모드 (ClashMeta for Android)
Android 버전 CMFA의 TUN 모드는 시스템의 VpnService API를 기반으로 구현되어 root가 필요하지 않습니다. 프록시 시작 시 나타나는 VPN 권한 요청이 TUN 모드의 승인 다이얼로그입니다.
- CMFA를 실행하고 프로필이 활성화되어 있는지 확인합니다
- 메인 화면의 시작 버튼을 탭합니다. 첫 실행 시 VPN 권한 요청이 나타납니다
- "확인"을 탭합니다. Android 상태 표시줄에 열쇠 아이콘이 나타나면 TUN이 활성화된 것입니다
- "설정 → 설정 재정의"에서 TUN 작동 모드를 조정할 수 있습니다 (Mixed / TUN only / System Proxy only)
Android의 TUN은 기본적으로 모든 앱의 트래픽을 처리하므로 추가 설정이 필요하지 않습니다. 은행 앱 등 특정 앱은 앱 목록에서 제외하여 보안 감지가 트리거되는 것을 방지할 수 있습니다.
TUN 모드 YAML 설정 상세 설명
설정 파일에 tun 필드를 추가하여 TUN 모드를 세밀하게 제어할 수 있습니다:
tun:
enable: true
stack: mixed # mixed(권장)/ system / gvisor
auto-route: true # 라우트를 자동 추가하여 트래픽이 TUN으로 들어오게 함
auto-detect-interface: true # 출구 NIC 자동 감지, 다중 NIC 환경에서 필수
dns-hijack:
- any:53 # 모든 DNS 요청 가로채기(UDP 53 포트 포함)
strict-route: false # true 시 TUN 이외 트래픽 차단. 보안성 향상되지만 LAN에 영향
mtu: 9000 # 최대 전송 단위. 9000으로 단편화 감소, 처리량 향상
# DNS 설정은 TUN과 함께 사용
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
nameserver:
- 223.5.5.5
- 119.29.29.29
fallback:
- tls://8.8.8.8:853
- tls://1.1.1.1:853
fallback-filter:
geoip: true
geoip-code: CN
stack 파라미터 선택
| stack 값 | 설명 | 권장 시나리오 |
|---|---|---|
mixed | TCP는 시스템 스택, UDP는 gVisor — 최고 호환성 | 기본 권장, 대부분의 경우 |
system | 모두 시스템 네트워크 스택 사용 — 최고 성능 | Linux / macOS 고성능 환경 |
gvisor | 사용자 공간 가상 네트워크 스택 — 격리성 우수 | 호환성 문제 발생 시 시도 |
TUN 모드 문제 해결
활성화 후 인터넷 연결 불가
- 관리자 권한으로 실행 중인지(Windows) 또는 네트워크 확장 프로그램이 승인되었는지(macOS) 확인합니다
- 설정 파일에
GEOIP,CN,DIRECT규칙이 포함되어 있는지 확인하여 국내 트래픽 루프를 방지합니다 - Clash 로그를 확인하여 TUN 인터페이스가 성공적으로 생성되었는지 확인합니다 (로그에 "inbound started" for tun 이 나타나야 합니다)
- 바이러스 백신 소프트웨어를 일시적으로 비활성화합니다. 일부 보안 소프트웨어가 가상 NIC 드라이버를 차단할 수 있습니다
게임 트래픽이 여전히 직접 연결됨
다음 설정이 모두 완료되었는지 확인하세요:
- TUN 스위치가 켜져 있고
auto-route: true로 설정되어 있음 - 프록시 모드가 "규칙" 또는 "전역"으로 설정되어 있고 "직접 연결"이 아님
- 게임 서버의 도메인/IP에 대한 규칙이 DIRECT가 아닌 프록시 정책을 가리키고 있음
- Clash 로그에서 게임 프로세스 이름을 검색하여 트래픽이 실제로 Clash를 통과하는지 확인
DNS 루프 / 이름 확인 실패
TUN 활성화 후 dns-hijack: any:53은 모든 DNS 요청을 Clash가 처리하도록 가로챕니다. Clash의 DNS 설정에 문제가 있으면(예: 네임서버에 접근 불가) DNS 확인이 실패합니다.
해결 방법: DNS 네임서버를 임시로 223.5.5.5(Alibaba DNS)로 변경하여 기본 연결을 확인한 후 조정하세요.
TUN 활성화 후 속도 저하
TUN 모드는 커널 수준에서 패킷을 처리하므로 약 5~15%의 추가 CPU 오버헤드가 발생합니다. 눈에 띄는 속도 저하가 발생하면:
stack을gvisor에서mixed또는system으로 변경합니다auto-route: true가 설정되어 있는지 확인합니다 (라우팅 테이블 충돌 방지)- 다른 VPN 소프트웨어가 동시에 실행 중인지 확인합니다 (이중 프록시가 되는 경우)
정리: TUN 모드 사용의 핵심 포인트
- TUN 모드는 드라이버 수준에서 모든 트래픽을 가로채고, 시스템 프록시는 프록시 프로토콜을 지원하는 앱만 커버합니다
- 게임·CLI 도구·UDP 앱에서 TUN은 유일한 신뢰할 수 있는 해결책입니다
- Windows는 관리자 권한 + wintun 드라이버 필요, macOS는 네트워크 확장 프로그램 승인 필요, Android는 VpnService 기반 (root 불필요)
- YAML 모범 사례 조합:
stack: mixed+auto-route: true+dns-hijack: any:53 - 국내 직접 연결 규칙(
GEOIP,CN,DIRECT)을 반드시 포함하여 국내 트래픽이 프록시를 거쳐 속도가 저하되는 것을 방지하세요
관련 글
- 규칙 기반 라우팅 설정 가이드: DOMAIN / IP-CIDR / GEOIP 등의 규칙 유형을 심층 이해
- DNS 오염 방지 설정: TUN 모드와 함께 DNS 누출 문제를 완전히 해결
- Clash 완전 설치 설정 가이드: 처음부터 시작하는 초보자용 입문 가이드