왜 TUN과 시스템 프록시를 구분해야 할까?

Clash(Mihomo 코어)를 처음 쓰는 분들은 메인 화면의 System Proxy(시스템 프록시)와 TUN Mode 스위치를 동시에 켜 본 경험이 있을 겁니다. 그런데 브라우저는 되는데 터미널은 안 되거나, 반대로 TUN만 켰을 때 특정 앱이 느려지는 일이 생깁니다. 원인은 대부분 두 모드가 트래픽을 잡는 계층이 다르기 때문입니다.

이 글에서는 Clash TUN 모드와 시스템 프록시의 작동 원리, 장단점, 실제로 언제 무엇을 쓸지, 그리고 Windows·macOS·Linux에서 TUN을 안전하게 켜는 방법까지 정리합니다. 규칙 분할(Rule)은 문서의 규칙 분할 섹션을 함께 보면 이해가 빠르고, 여기서는 「프록시를 시스템에 어떻게 붙이느냐」에 집중합니다.

전제: 아래 설명은 Mihomo(Clash.Meta) 계열 코어를 쓰는 Clash Verge Rev, ClashX Meta, FlClash 등을 기준으로 합니다. 구독·노드 가져오기는 문서의 구독 가져오기 또는 각 플랫폼 설치 가이드를 먼저 참고하세요.

시스템 프록시란?

시스템 프록시는 운영체제의 HTTP/HTTPS(SOCKS) 프록시 설정을 Clash가 대신 켜 주는 방식입니다. Windows에서는 「설정 → 네트워크 → 프록시」, macOS에서는 「시스템 설정 → 네트워크 → 프록시」에 값이 들어가고, 이를 읽는 앱만 Clash의 mixed-port(또는 HTTP/SOCKS 포트)로 트래픽을 보냅니다.

작동 흐름

  1. Clash가 로컬에서 127.0.0.1:7890 같은 포트를 엽니다.
  2. System Proxy 스위치를 켜면 OS 프록시 주소가 위 포트로 설정됩니다.
  3. 프록시 API를 지원하는 앱(대부분의 브라우저, 일부 데스크톱 앱)이 요청을 Clash로 보냅니다.
  4. Clash는 규칙에 따라 DIRECT(직접 연결) 또는 프록시 노드로 전달합니다.

장점은 설정이 간단하고 권한이 거의 필요 없으며, 일상적인 웹 서핑·SNS·스트리밍에 충분하다는 점입니다. 단점은 시스템 프록시 설정을 무시하는 프로그램—명령줄 도구, 일부 게임 런처, Electron 앱의 특정 빌드, Windows UWP 앱 등—은 프록시 밖으로 나간다는 것입니다.

TUN 모드란?

TUN 모드는 가상 네트워크 인터페이스(TUN/TAP)를 만들고, 그 NIC로 들어오는 IP 패킷을 Clash 코어가 가로채 처리합니다. 앱이 프록시 설정을 지원하는지와 관계없이, 시스템에서 나가는 TCP/UDP 트래픽 대부분을 규칙 엔진에 태울 수 있어 「진짜에 가까운 전역 프록시」로 불립니다.

작동 흐름

  1. Clash가 Wintun(Windows), utun(macOS), tun0(Linux) 등 가상 NIC를 생성합니다.
  2. 라우팅 테이블이 조정되어 해당 NIC로 트래픽이 유도됩니다(auto-route).
  3. 패킷이 Mihomo 코어로 들어가 프로토콜·목적지에 따라 규칙 매칭 후 전달됩니다.
  4. 필요 시 DNS 쿼리도 dns-hijack으로 코어 안에서 처리해 유출을 줄입니다.

TUN은 강력하지만 관리자/root 권한, 가상 드라이버 설치, 약간의 CPU·배터리 오버헤드가 따릅니다. 게임·P2P·로컬 LAN 장치와 충돌할 수 있어, 「항상 TUN」보다는 필요할 때만 켜는 편이 안정적입니다.

주의: TUN을 켠 뒤에도 System Proxy를 켜 두면 이중 경로로 트래픽이 처리될 수 있습니다. TUN이 정상이라면 시스템 프록시는 끄는 것을 권장합니다.

한눈에 보는 비교표

비교 항목 시스템 프록시 TUN 모드
작동 계층 애플리케이션(HTTP/SOCKS 프록시 API) 네트워크(IP 패킷)
권한 일반 사용자 관리자 / sudo / macOS 헬퍼
터미널·CLI 대부분 미적용 적용 가능
게임·UWP 종종 미적용 대부분 적용
DNS 제어 제한적 dns-hijack 등으로 강함
리소스 가벼움 상대적으로 무거움
추천 상황 브라우저 위주 일상 사용 전역·개발·게임·DNS 통제

시스템 프록시를 쓰면 좋은 경우

  • Chrome, Edge, Firefox 등 브라우저만 프록시가 필요할 때
  • 회사·학교 PC에서 관리자 권한을 쓸 수 없을 때
  • 노트북 배터리를 아끼고 싶을 때(TUN보다 부하가 적음)
  • 로컬 NAS·프린터 등 LAN 직접 접속을 최대한 유지하고 싶을 때

Windows에서는 Clash Verge Rev Windows 가이드 4단계처럼 Proxies에서 노드를 고른 뒤 System Proxy만 켜도 대부분의 웹 사용 시나리오는 해결됩니다.

TUN 모드를 쓰면 좋은 경우

  • git, npm, docker, ssh터미널·개발 도구 전체에 프록시가 필요할 때
  • Steam, Epic, 일부 온라인 게임 클라이언트처럼 시스템 프록시를 무시하는 앱
  • Windows Store(UWP) 앱 트래픽까지 규칙 분할하고 싶을 때
  • DNS 유출을 줄이고 해석 경로까지 Clash가 관리해야 할 때
  • Android에서는 FlClash 등에서 VPN/TUN으로 앱 전체를 덮을 때(FlClash Android 가이드 참고)

Windows: Clash Verge Rev에서 TUN 설정

Windows 사용자에게는 Clash Verge Rev가 가장 흔한 선택입니다. TUN 활성화 절차는 다음과 같습니다.

  1. 관리자 권한으로 실행
    바로 가기 우클릭 → 「관리자 권한으로 실행」. 호환성 탭에서 「관리자 권한으로 이 프로그램 실행」을 고정해 두면 편합니다.
  2. 구독·노드 준비
    Profiles에서 구독을 가져오고, Proxies에서 노드 또는 Auto Select 그룹을 선택합니다. Rule 모드인지 확인하세요(Global은 국내 트래픽까지 프록시를 태웁니다).
  3. TUN Mode 켜기
    Settings → Clash Core에서 「TUN Mode」 스위치를 켭니다. Wintun 드라이버 설치 안내가 나오면 허용합니다.
  4. System Proxy 끄기
    메인 화면의 System Proxy를 OFF로 두고, CMD에서 ping 1.1.1.1 또는 curl https://www.google.com로 외부 연결을 확인합니다.

TUN이 켜졌는데도 CMD만 실패한다면 방화벽에서 Mihomo를 허용했는지, 현재 노드가 UDP를 지원하는지, Wintun 재설치가 필요한지 순서대로 점검하세요.

macOS: ClashX Meta에서 TUN 설정

macOS에서는 ClashX Meta(또는 ClashX Pro 계열)가 널리 쓰입니다. 메뉴 막대 아이콘에서 다음을 확인합니다.

  1. Enhanced Mode / TUN
    「设置为系统代理」와 별도로 「TUN 模式」 또는 Enhanced Mode 항목을 켭니다. 첫 실행 시 시스템 확장·헬퍼 설치 권한을 요청하면 macOS 비밀번호로 승인합니다.
  2. 시스템 프록시와의 관계
    TUN이 안정적이면 시스템 프록시만으로도 브라우저는 동작하지만, 터미널·IDE까지 쓰려면 TUN을 유지하는 편이 낫습니다.
  3. 로컬 서비스 예외
    localhost, 127.0.0.1, 사내망 대역은 규칙에서 DIRECT로 두어 개발 서버 접속이 끊기지 않게 합니다.

Linux: CLI·GUI에서 TUN 설정

Linux에서는 sudo로 Clash/Mihomo를 실행해야 TUN 디바이스를 만들 수 있습니다. 데스크톱용으로는 Clash Verge Rev Linux 빌드, 서버에는 systemd로 Mihomo를 띄우는 방식이 흔합니다.

  • 커널에 TUN 모듈(/dev/net/tun)이 있어야 합니다.
  • Docker·K8s 노드에서는 TUN과 브리지 네트워크가 겹칠 수 있어, 컨테이너 네트워크 대역을 DIRECT 규칙에 넣습니다.
  • Wayland/Hyprland 등 최신 DE에서도 GUI 클라이언트의 TUN 스위치 동작은 Windows와 유사합니다.

config.yaml TUN 구성 예시

GUI만 써도 되지만, 고급 사용자는 프로필 YAML에서 TUN을 직접 제어합니다. Mihomo 기준 예시는 아래와 같습니다.

tun:
  enable: true
  stack: system
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53

dns:
  enable: true
  enhanced-mode: fake-ip
  nameserver:
    - https://1.1.1.1/dns-query
    - https://8.8.8.8/dns-query

stacksystem, gvisor, mixed 중 선택합니다. 일반 데스크톱은 system이 무난하고, 특정 환경에서 호환 문제가 있으면 mixed를 시험해 볼 수 있습니다. dns-hijack은 TUN의 핵심 보조 기능으로, DNS가 프록시 밖으로 새는 현상을 줄입니다.

DNS와 TUN을 함께 쓸 때

시스템 프록시만 쓸 때는 OS나 브라우저가 DNS를 직접 물어 가서, 규칙과 무관한 해석 경로가 생길 수 있습니다. TUN + fake-ip 또는 redir-host 조합은 도메인 해석을 Clash 파이프라인 안으로 끌어들이는 전형적인 패턴입니다.

다만 fake-ip를 쓰면 일부 은행·사내 포털이 IP 기반 검증에 실패할 수 있습니다. 이때는 해당 도메인을 nameserver-policy로 실제 DNS에 보내거나, 해당 트래픽만 DIRECT 규칙으로 빼는 식으로 조정합니다.

자주 묻는 질문

TUN과 시스템 프록시를 동시에 켜도 되나요?

권장하지 않습니다. TUN이 정상 동작하면 System Proxy는 끄세요. 동시에 켜면 루프·이중 프록시·일부 앱의 연결 실패가 발생할 수 있습니다.

브라우저만 쓰는데 TUN이 필요한가요?

대부분 필요 없습니다. 시스템 프록시 + Rule 모드면 충분합니다. TUN은 터미널·게임·DNS 통제가 필요할 때 켜세요.

TUN 드라이버 설치가 실패합니다.

관리자 실행, 백신·방화벽 예외, 이전 Wintun 잔여 파일 삭제 후 재설치를 시도하세요. 회사 PC는 정책상 가상 NIC 생성이 막혀 있을 수 있습니다.

일반 VPN 앱과 TUN의 차이는?

둘 다 가상 NIC를 쓸 수 있지만, Clash TUN은 규칙 분할·정책 그룹·프로토콜별 라우팅이 핵심입니다. 「전부 터널」이 아니라 GEOIP·도메인 규칙으로 국내는 DIRECT, 해외만 프록시 같은 세밀한 제어가 가능합니다.

도구를 고를 때: Clash가 이 주제에서 유리한 이유

브라우저 확장(Proxy SwitchyOmega 등)은 설치가 쉽지만 시스템 전체·터미널·게임을 다루지 못합니다. 단순 SOCKS 클라이언트는 포트만 열 뿐 규칙 분할 UI가 없고, 구형 Clash for Windows 포크는 TUN·Hysteria2 등 신규 기능 반영이 느린 경우가 많습니다.

Clash(Mihomo)는 같은 config.yaml 안에서 시스템 프록시로 가볍게 시작했다가, 필요할 때만 TUN을 켜 전역에 가깝게 확장할 수 있습니다. Rule·GEOIP·RULE-SET으로 국내 직결과 해외 프록시를 나누는 흐름도 한 코어에서 이어지므로, 「브라우저만」에서 「개발 환경 전체」로 요구가 바뀌어도 클라이언트를 갈아탈 필요가 적습니다.

Windows·macOS·Android·Linux용 클라이언트를 한곳에서 받을 수 있다면, TUN과 시스템 프록시를 오가며 쓰는 연습도 훨씬 수월합니다. 아직 Clash를 설치하지 않았다면, 아래에서 플랫폼에 맞는 빌드를 받아 구독을 가져온 뒤 이 글의 순서대로 모드를 선택해 보세요.

Clash를 무료로 다운로드하고 원활한 인터넷 환경을 시작하세요 →