블로그 고급 설정 약 9분

TUN 모드 완벽 해설

시스템 프록시는 표면적인 해법일 뿐이며, "모든 트래픽을 프록시로" 만드는 근본적인 방법은 TUN 모드입니다. 원리부터 설정까지 TUN 모드의 사용법을 전부 다룹니다.


시스템 프록시의 한계

Windows와 macOS 모두 "시스템 프록시" 기능을 제공합니다. 시스템 설정에 프록시 서버 주소와 포트를 입력하면, 브라우저나 메일 클라이언트처럼 네트워크 규약을 잘 따르는 프로그램들이 이 설정을 읽어 프록시를 거쳐 요청을 보냅니다. 구현이 단순하고 호환성이 넓어서 Clash에서 가장 흔히 쓰이는 방식입니다.

하지만 시스템 프록시에는 근본적인 한계가 있습니다. 전적으로 애플리케이션의 "자발적인 협조"에 의존한다는 점입니다. 시스템 프록시는 사실 하나의 "권고"일 뿐이라 운영체제가 모든 프로그램에 강제할 수 없고, 앱은 하위 네트워크 API를 직접 호출해 이를 건너뛸 수 있습니다. 다음과 같은 상황에서는 시스템 프록시가 전혀 작동하지 않습니다:

게임 클라이언트: Steam, Epic Games, EA App 같은 게임 플랫폼은 대체로 자체적으로 네트워크 요청을 관리하며 시스템 프록시 설정을 읽지 않습니다. 낮은 지연이 중요한 멀티플레이어 게임을 할 때 Clash를 켜놔도 게임 트래픽은 그대로 직접 연결되어 프록시의 혜택을 받지 못합니다.

UWP 앱 (Windows): Windows Store 앱은 샌드박스 안에서 실행되며 AppContainer 권한으로 격리되어 시스템 프록시 설정에 접근할 수 없습니다. Xbox 앱, Windows용 Spotify, 일부 마이크로소프트 기본 도구가 여기에 해당합니다.

커맨드라인 도구: git, npm, pip, docker pull 같은 도구는 HTTP_PROXY 환경변수를 직접 설정하지 않으면 시스템 프록시를 사용하지 않습니다. 개발자에게는 특히 번거로운 부분으로, 터미널에서 작업할 때마다 프록시 변수를 매번 export 해야 합니다.

iOS / Android 네이티브 앱: 모바일 시스템 프록시는 보통 HTTP/HTTPS 요청에만 적용되며, UDP 통신(다수의 게임, 영상 통화, DNS 요청 등)은 프록시 범위 밖에 있습니다.

TUN 모드란?

TUN(TUNnel)은 운영체제 커널이 제공하는 가상 네트워크 장치 인터페이스로, 원래 VPN 구현에 쓰이던 기술입니다. TUN 모드는 Clash가 시스템 커널 레벨에서 가상 네트워크 어댑터(보통 utun이나 Meta라는 이름으로 생성됨)를 만들고, 시스템 라우팅 테이블을 수정해서 기기의 모든 네트워크 트래픽(시스템 프록시를 지원하는 트래픽뿐 아니라)을 이 가상 어댑터로 전달한 뒤, Clash가 규칙에 따라 트래픽을 분류·처리하는 방식입니다.

이렇게 하면 트래픽이 어떤 애플리케이션의 네트워크 라이브러리에 도달하기도 전에, 이미 커널 레벨에서 Clash가 가로챈 상태가 됩니다. 애플리케이션이 시스템 프록시 설정을 따르는지 여부와 무관하게, 어떤 프로그래밍 언어나 네트워크 프레임워크를 쓰든 네트워크 요청이 발생하면 반드시 Clash의 규칙 엔진을 거치게 됩니다. 이것이 바로 "진짜 전역 프록시"의 의미입니다 — 어떤 프로그램도 프록시의 관할을 벗어날 수 없습니다.

iOS와 Android의 "VPN 모드"도 본질적으로는 TUN입니다 — Clash가 시스템 VPN API를 통해 가상 어댑터를 만드는 것으로 원리는 같고 이름만 다릅니다.

작동 원리

TUN 모드를 켜면 Clash는 시스템에 다음과 같은 작업을 수행합니다:

1단계, 가상 네트워크 어댑터 생성. 운영체제 커널에 가상 네트워크 장치를 등록하고, 사설 IP 대역(예: 198.18.0.0/16)을 할당합니다. 이 어댑터는 물리적으로 실재하지 않으며, Clash 프로그램이 사용자 모드에서 동작을 완전히 시뮬레이션합니다.

2단계, 시스템 라우팅 테이블 수정. 시스템 라우팅 테이블에 전역을 커버하는 두 개의 라우팅 규칙을 추가합니다: 목적지가 0.0.0.0/1128.0.0.0/1인 모든 트래픽(둘을 합치면 전체 IPv4 주소 공간)을 가상 어댑터로 전달합니다. 이 두 라우팅은 기본 게이트웨이 라우팅보다 우선순위가 높아, 모든 아웃바운드 트래픽이 먼저 Clash를 거치도록 보장합니다.

3단계, DNS 하이재킹(Fake-IP). TUN 모드는 보통 Fake-IP DNS 모드와 함께 사용됩니다. 앱이 DNS 쿼리를 시작하면 Clash가 즉시 "가짜" 내부 IP(198.18.x.x)를 반환하고, 앱은 이 가짜 IP로 연결을 시작합니다. Clash는 가상 어댑터 레벨에서 이 연결을 가로채 원래 도메인을 복원한 뒤, 규칙에 따라 직결 또는 프록시 경유를 결정합니다. 이 과정은 앱에게는 투명하게 처리되면서도 실제 DNS 쿼리 지연을 줄여 속도가 빠르고, DNS 유출도 완전히 방지합니다(DNS 요청이 시스템 기본 DNS 서버로 전송되지 않기 때문입니다).

4단계, 트래픽 분류 처리. Clash는 모든 트래픽을 받은 뒤 설정 파일의 규칙 세트에 따라 각 연결의 경로를 판단합니다: 직결 규칙에 매칭되면 실제 네트워크 어댑터로 바로 전달하고, 프록시 규칙에 매칭되면 프록시 노드를 거쳐 중계하며, 차단 규칙에 매칭되면 바로 폐기합니다.

대표적인 사용 사례

게임 지연시간 개선: TUN 모드를 켜는 가장 흔한 이유입니다. Steam 다운로드, 게임 내 매치메이킹 서비스, Discord 같은 음성 통화는 모두 UDP를 사용해서 시스템 프록시가 전혀 통하지 않습니다. TUN 모드를 켜면 UDP 트래픽도 함께 가로채져, 해외 서버로 접속하는 게임의 지연시간을 효과적으로 낮추고 안정성을 높일 수 있습니다.

개발자 도구: 프록시 환경변수를 매번 export 할 필요가 없어집니다. npm install, git clone, docker pull 같은 명령이 TUN 모드에서 자동으로 프록시를 타면서 개발 경험이 크게 개선됩니다.

스트리밍 지역 해제: 일부 스트리밍 클라이언트(예: 브라우저가 아닌 Netflix 공식 앱)는 시스템 프록시를 건너뛰는데, TUN 모드는 이런 트래픽도 해제 노드를 거치도록 보장합니다.

iOS 전역 트래픽 관리: iOS의 Clash Plus는 기본적으로 TUN/VPN 모드로 동작해서, 모든 앱의 트래픽(UDP 영상 통화 포함)이 프록시의 관할 아래 있어 통합 관리와 분류가 가능합니다.

플랫폼별 설정 방법

Windows

관리자 권한으로 Clash Plus를 실행합니다(우클릭 → "관리자 권한으로 실행" 또는 작업 관리자에서 프로세스 권한 확인). "Settings → TUN Mode"로 들어가 "Enable TUN Mode" 스위치를 켭니다. 처음 켤 때 프로그램이 가상 네트워크 어댑터 드라이버 설치를 시도하며, UAC 권한 요청 창이 뜨면 "예"를 누릅니다. 설치가 끝나면 장치 관리자에서 "Mihomo" 또는 "WinTun"이라는 이름의 가상 어댑터를 확인할 수 있으며, 이는 설치가 성공했다는 뜻입니다.

macOS

"Settings → TUN Mode"로 들어가 스위치를 켭니다. 처음 켤 때 macOS가 "시스템 확장 프로그램이 차단됨" 알림을 띄우면 "시스템 설정 → 개인정보 보호 및 보안"으로 이동해 "보안" 영역에서 관련 확장 프로그램을 찾아 "허용"을 누릅니다. 이후 관리자 비밀번호를 입력하고 Clash Plus를 재시작해야 합니다. 이후로는 TUN 모드를 켤 때마다 다시 권한을 부여할 필요가 없습니다.

Android / iOS

모바일용 Clash Plus는 기본적으로 TUN/VPN 모드로 동작합니다. 홈 화면의 "연결" 버튼을 누르면 시스템이 VPN 권한을 요청하는데 "허용"을 누르면 프록시가 바로 TUN 모드로 작동하며 별도 설정이 필요 없습니다. iOS에서는 화면을 잠갔을 때 프록시가 끊기지 않도록 "On Demand(온디맨드 연결)"도 함께 켜두는 것을 추천합니다.

Stack 모드 선택

Clash Plus(Mihomo 코어)의 TUN 모드는 세 가지 네트워크 프로토콜 스택(Stack)을 지원하며, 설정 파일의 tun 섹션에서 stack 필드로 지정합니다:

Stack구현 방식적합한 상황
system운영체제의 TCP/IP 스택을 그대로 호출호환성이 가장 좋고 성능이 안정적, 기본값으로 추천
gvisorGo로 구현된 사용자 모드 네트워크 스택(Google gVisor)격리성이 더 강해서 특수한 격리가 필요한 상황에 적합
mixedTCP는 system, UDP는 gvisor 사용TCP 성능과 UDP 호환성을 모두 확보, 추천

대부분의 사용자에게는 mixed 모드를 추천합니다. TCP 연결은 운영체제 스택으로 성능을 보장하고, UDP 연결은 gVisor로 더 나은 DNS 처리와 UDP 통과 호환성을 확보합니다. 특정 UDP 앱에서 문제가 생긴다면 Stack을 system으로 바꿔서 원인을 확인해 보세요.

주의사항

권한 요구사항: 시스템 라우팅 테이블을 수정하는 것은 권한이 필요한 작업이라, TUN 모드는 관리자/root 권한이 필요합니다. Windows에서 Clash Plus를 관리자 권한으로 실행하지 않은 것이 TUN 모드 시작 실패의 가장 흔한 원인입니다.

시스템 프록시와 동시 사용: TUN 모드를 켜도 시스템 프록시를 동시에 유지할 수 있습니다. 시스템 프록시를 지원하는 앱은 시스템 프록시가 HTTP(S) 요청을 처리하고, TUN 모드가 나머지 모든 트래픽을 처리합니다. 둘은 충돌하지 않으며, 시스템 프록시가 처리하는 트래픽이 TUN 레벨에서 루프를 형성하는 부분은 Clash가 내부적으로 자동 처리해 무한 루프를 방지합니다.

성능 부담: TUN 모드는 커널 레벨에서 모든 트래픽을 가로채 처리하므로 시스템 프록시보다 CPU와 메모리를 더 많이 사용합니다. 저사양 기기(오래된 휴대폰, 라즈베리파이)에서는 성능 저하가 뚜렷하게 느껴질 수 있으니, 가벼운 일상 사용에는 시스템 프록시를 우선 권장합니다.

프록시 루프 방지: Clash가 프록시 서버에 접속하는 트래픽 자체는 TUN에 다시 가로채이지 않도록 해야 합니다. 그렇지 않으면 무한 루프가 발생합니다. Mihomo 코어는 아웃바운드 프록시 연결을 자동으로 직결 트래픽으로 표시해서 보통은 수동 개입이 필요 없지만, 연결이 멈추는 문제가 발생하면 라우팅 루프 여부를 확인해 보세요.

TUN 모드를 켠 뒤 네트워크가 완전히 끊긴다면 다음을 먼저 확인하세요: ① Clash Plus가 관리자 권한으로 실행 중인지, ② 백신 프로그램이 가상 네트워크 어댑터 드라이버를 차단하고 있는지, ③ 라우팅 테이블이 다른 VPN 소프트웨어에 의해 덮어써졌는지(여러 VPN·프록시 도구를 동시에 실행하면 충돌이 발생합니다).
Clash

아직 클라이언트를 설치하지 않으셨나요?

다운로드 페이지에서 사용 중인 시스템에 맞는 버전을 받으세요. TUN 모드는 설정에서 한 번의 클릭으로 켤 수 있습니다.