Tun
TUN 모드는 가상 네트워크 인터페이스를 생성해 시스템 전체 트래픽을 처리하며, 클라이언트 소프트웨어의 프록시 설정 지원이 필요 없어 현재 가장 추천되는 전역 프록시 방식입니다. 여기서는 최상위 tun 필드의 설정을 설명합니다.
listeners에서도 tun을 설정할 수 있지만 이는 고급 사용자를 위한 작성법입니다. 일반 사용자는 최상위 설정의 tun 필드, 즉 이 페이지에서 설명하는 내용을 그대로 사용하세요.
설정 예시
tun: enable: true stack: mixed auto-route: true auto-redirect: true auto-detect-interface: true dns-hijack: - any:53 - tcp://any:53 device: utun0 mtu: 9000 strict-route: true
핵심 필드
enable필수TUN 모드를 활성화합니다.
stack기본값 gvisor프로토콜 스택으로, system/gvisor/mixed 중 선택할 수 있습니다. 호환성 문제가 없다면 mixed를 권장합니다: TCP는 system 스택(더 안정적이고 리소스 사용이 적음)을, UDP는 gvisor 스택을 사용해 보통 가장 좋은 사용감을 제공합니다. 시스템 방화벽이 활성화되어 있다면 system/mixed 스택을 사용하려면 코어 프로그램을 수동으로 허용해야 합니다.
device선택TUN 네트워크 인터페이스 이름을 지정합니다. macOS에서는 utun으로 시작하는 이름만 사용할 수 있습니다.
auto-route선택전역 라우팅을 자동으로 설정해 시스템 트래픽을 자동으로 TUN 인터페이스로 유입시키며, 거의 항상 활성화해야 합니다.
auto-redirectLinux 전용iptables/nftables를 자동으로 설정해 TCP 연결을 리다이렉트합니다. auto-route가 활성화되어 있어야 하며, 주로 공유기 환경에서 사용됩니다.
auto-detect-interface선택트래픽 출구 네트워크 인터페이스를 자동으로 선택합니다. 기기에 여러 출구가 동시에 연결되어 있다면(예: Wi-Fi와 유선 네트워크를 동시에 연결한 경우) 자동 감지보다 출구 인터페이스를 수동으로 지정하는 것을 권장합니다.
dns-hijack선택매칭된 DNS 요청을 코어에 내장된 DNS 모듈로 유입시킵니다. 기본 작성법은 프로토콜 없이 udp://입니다. macOS/Windows는 LAN으로 보내는 DNS 요청을 자동으로 하이재킹할 수 없습니다. Android에서 "프라이빗 DNS"가 활성화되어 있으면 마찬가지로 자동 하이재킹이 불가능합니다.
strict-route선택auto-route를 기반으로 더 엄격한 라우팅 규칙을 적용해 주소 유출을 방지하며, Android에서 DNS 하이재킹이 정상적으로 작동하기 위한 전제 조건이기도 합니다. Windows에서는 VirtualBox 등의 애플리케이션이 특정 상황에서 정상적으로 작동하지 않을 수 있습니다.
mtu / gso / gso-max-size선택mtu는 최대 전송 단위로 일반적으로 수정할 필요가 없습니다. gso(Linux 전용)는 일반 세그먼테이션 오프로드를 활성화해 성능을 향상시키며, gso-max-size는 데이터 블록의 최대 길이를 설정합니다.
라우팅 범위와 필터링
| 필드 | 설명 |
|---|---|
route-address / route-exclude-address | auto-route가 활성화되어 있을 때 사용자 지정 대역을 기본 경로 대신 라우팅하거나 사용자 지정 대역을 제외합니다. 일반적으로 설정할 필요가 없습니다 |
route-address-set / route-exclude-address-set | 지정한 규칙 세트의 대상 IP CIDR을 방화벽에 추가해 라우팅/제외합니다. Linux + nftables만 지원하며 auto-route+auto-redirect가 필요합니다 |
include-interface / exclude-interface | 라우팅될 네트워크 인터페이스를 제한합니다. 둘은 서로 배타적이며 동시에 설정할 수 없습니다 |
include-uid / exclude-uid(및 range 버전) | Linux 사용자 UID로 TUN 라우팅되는 트래픽을 제한/제외합니다. Linux만 지원하며 auto-route가 필요합니다 |
include-android-user | 라우팅될 Android 사용자를 제한합니다(기기 소유자 0 / 부계정 10 / 멀티 인스턴스 999). Android만 지원합니다 |
include-package / exclude-package | Android 앱 패키지 이름으로 TUN 라우팅되는 트래픽을 제한/제외합니다 |
endpoint-independent-nat | 엔드포인트 독립적인 NAT를 활성화합니다. 성능이 약간 저하될 수 있으므로 필요하지 않다면 활성화를 권장하지 않습니다 |
udp-timeout | UDP NAT 만료 시간(단위: 초)으로 기본값은 300(5분)입니다 |
곧 폐지될 "기존 작성법" 필드들(inet4-route-address 등)도 있으며, 새 설정에서는 위의 새 필드 이름을 바로 사용하는 것을 권장합니다.