증상: 규칙 프록시인데도 IPv6·DNS가 새어 보일 때

TUN이나 시스템 프록시로 Clash를 켠 상태에서 속도 측정·「내 IP」류 사이트를 열면, 기대한 노드 측 IPv4 대신 통신사 할당 IPv6가 그대로 표시되거나, 브라우저마다 결과가 갈라지는 경우가 있습니다. 앱 일부는 프록시를 타고 나머지는 DIRECT로 빠지거나, 해석은 되는데 연결만 꼬이는 패턴은 DNS 유출·이중 스택·규칙 순서가 동시에 얽힐 때 자주 나타납니다. 원인을 「노드 불량」 하나로만 몰아가기 전에, 규칙 분류와 매칭 순서를 떠올려 MATCH보다 앞선 줄이 IPv4·IPv6 목적지를 어떻게 나누는지부터 확인하는 편이 빠릅니다.

특히 운영체제가 IPv4+IPv6 이중 스택을 동시에 올려 두면, 애플리케이션이 AAAA 레코드를 받아 ::/0 경로로 나가거나, Clash 밖의 시스템 리졸버가 먼저 응답하는 경우가 있습니다. 이 글은 Clash Meta(Mihomo) 계열을 가정하고, 설정 파일에서 IPv6를 끄고 DNS·TUN·직결 규칙을 같은 전제로 맞춘 뒤, 외부 유출 테스트로 다시 확인하는 순서를 정리합니다.

범위: 게이트웨이·OpenWrt 전체에 Clash를 올리는 경우에는 LAN·dnsmasq·브리지까지 한 번에 봐야 합니다. 가정용 라우터 맥락은 OpenWrt·OpenClash 게이트웨이 가이드와 결이 비슷하지만, 본문은 PC·단말 한 대에 클라이언트를 두는 경우를 중심으로 설명합니다.

왜 이중 스택에서 경로가 갈라지나

Clash는 도메인 규칙으로 「어느 정책 그룹을 탈지」를 정하지만, 목적지가 이미 IPv6 주소로 확정된 뒤에는 인터페이스 선택·라우팅 테이블이 OS에 맡겨지는 경우가 있습니다. 상위에 ipv6: true 또는 DNS에서 IPv6를 허용하면 AAAA가 살아 있고, TUN이 IPv4 위주로만 잡혀 있으면 평행 경로가 생깁니다. 반대로 DNS만 막고 IPv6 인터페이스가 살아 있으면, 일부 클라이언트는 여전히 직접 빠져 나갈 수 있습니다.

Fake-IP를 쓰는 프로필에서는 LAN·캐스터 기기 예외가 어긋나면 가정 내 트래픽만 이상해질 수 있으므로, Fake-IP·LAN·라우터 우회 글과 함께 fake-ip-filter를 점검하는 것이 좋습니다. 요지는 「한 겹만」이 아니라 커널·DNS·규칙·TUN을 같은 가정으로 맞추는 것입니다.

1단계: 커널 설정에서 IPv6 명시적으로 끄기

Clash Meta 계열에서는 최상위에 ipv6: false를 두어 커널이 불필요한 IPv6 관련 동작을 하지 않도록 하는 것이 일반적입니다. 이미 구독·규칙만으로 복잡한 프로필이라면, 이 한 줄이 빠져 있어 예상과 다른 경로가 열리는 경우가 있습니다. 설정을 저장한 뒤 프로세스를 재시작하고, 동일 증상이 재현되는지부터 봅니다.

config.yaml — top-level ipv6
ipv6: false
mode: rule
# ... proxies, proxy-groups, rules

2단계: DNS 블록과 dns-hijack 정렬

dns 섹션에서도 ipv6: false를 맞추면 AAAA를 기대하지 않게 정리하기 쉽습니다. enable: true일 때 listen·enhanced-mode(fake-ip 또는 redir-host)는 nameserver·fallback·fake-ip-filter 가이드에서 다룬 것처럼 한 덩어리로 설계하는 것이 안전합니다. 브라우저 DoH만 켜 두고 Clash DNS와 경쟁시키면 「유출」처럼 보이는 분기가 늘어납니다.

config.yaml — dns ipv6 off (illustrative)
dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  # nameserver / fallback / fake-ip-filter — see dedicated guide

3단계: 직결(DIRECT)·IP-CIDR6 규칙 보강

로컬·국내 리전을 DIRECT로 두는 프로필이라면, GEOIP·IP-CIDR만으로는 IPv6 대역이 빠질 수 있습니다. 필요 시 IP-CIDR6로 사설·루프백·할당 대역을 명시하고, 규칙 순서는 모범 사례에 맞춰 좁은 규칙이 넓은 MATCH보다 위에 오게 합니다. 「전부 프록시」가 아닌 이상, IPv6가 살아 있을 때 남는 구멍이 바로 측정 사이트에 드러나는 경우가 많습니다.

rules — example IPv6 private ranges (adjust to your region)
rules:
  - IP-CIDR6,fe80::/10,DIRECT
  - IP-CIDR6,fc00::/7,DIRECT
  - IP-CIDR6,::1/128,DIRECT
  # ... domain rules, GEOIP, then MATCH

4단계: TUN·시스템 DNS 가로채기

TUN을 사용할 때는 tun.enable과 함께 dns-hijack으로 시스템의 53번 요청을 Clash 쪽으로 끌어와야 DNS가 규칙과 같은 그림을 봅니다. 스택(system/gvisor/mixed) 선택·다른 VPN과의 충돌은 TUN 모드 심화에서 다룬 패턴을 참고하세요. Windows 11·macOS에서 종료 뒤 인터넷이 꼬이는 경우에는 시스템 프록시 잔류와 함께 IPv6 경로를 의심할 수 있으며, 종료 후 인터넷 불가·프록시 정리 글의 순서로 되돌린 뒤 본 가이드를 적용하는 편이 안전합니다.

tun — dns-hijack example
tun:
  enable: true
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53

OS·라우터에서 IPv6 선호도 조정(선택)

Clash 쪽을 정리해도 OS가 여전히 행복한 경로로 IPv6를 잡으면, 운영체제 설정에서 IPv6를 끄거나 IPv4 우선으로 두는 선택을 고려할 수 있습니다. Windows·macOS·Linux마다 UI와 커널 파라미터가 다르므로, 여기서는 「Clash만으로 끝나지 않을 수 있다」는 점만 짚습니다. 가정용 라우터에서 IPv6 PD(접두사 위임)가 켜져 있으면 단말이 새 전역 IPv6를 받아 다시 이중 경로가 생기므로, 라우터 관리 화면에서의 IPv6 스위치도 같은 맥락으로 봅니다.

검증: 유출 테스트와 로그로 확인

설정을 바꾼 뒤에는 (1) 브라우저 시크릿 창에서 공개 DNS 유출·IP 확인 페이지를 열어 응답 서버와 출구 IP가 기대와 맞는지 확인하고, (2) Clash 로그에서 해당 세션이 어떤 정책·인터페이스를 탔는지 대조합니다. CLI·GUI마다 로그 가독성이 다르므로, 진단을 자주 한다면 클라이언트 선택 때 연결 기록·필터 UI를 기준에 넣는 것이 좋습니다. 한 번에 모든 수치가 바뀌지 않으면, 변경 사항을 한 겹씩 되돌리며 어느 단계에서 IPv6 표시가 사라지는지 비교하세요.

목표는 「측정 사이트 숫자 하나」가 아니라, Clash가 가정한 DNS·라우팅 모델과 실제 트래픽이 같은지 확인하는 것입니다. 수치가 안정되면 일상 사용 중 끊김이 줄었는지까지 함께 보는 것이 좋습니다.
준수: 소재지 법령·고용주·학교·통신사 약관과 각 서비스 이용약관을 지키세요. 이 글은 허용된 네트워크에서의 경로·DNS·IPv6 정리를 기술적으로 설명하며, 무단 침해·약관 위반을 조장하지 않습니다.

일부 환경에서는 VPN·프록시 사용 자체가 정책 위반이거나 계약 위반이 될 수 있습니다. 네트워크를 바꾸기 전에 권한 있는 담당자에게 확인하는 것이 안전합니다.

맺음말

Clash IPv6 이슈는 종종 단일 토글로 끝나지 않고, 이중 스택·DNS 유출·직결 규칙·TUN이 한꺼번에 얽힌 결과로 나타납니다. 커널에서 IPv6를 끄고, DNS에서 동일한 전제를 맞추며, 필요한 IP-CIDR6DIRECT 줄을 보강한 다음 TUN dns-hijack으로 시스템 질의까지 같은 길로 모으면, 측정 페이지와 실제 앱 체감이 함께 안정되는 경우가 많습니다. 반복 시에는 로그에 찍힌 정책 이름과 목적지를 기록해 두면 다음에 같은 구멍을 빨리 찾을 수 있습니다.

Clash 계열 도구는 규칙을 파일에 남길 수 있다는 점에서 장기 운영에 유리합니다. 같은 목표라도 상용 VPN 앱보다 분기·검증이 투명한 편이라, 유출 테스트를 몇 번 돌려 본 뒤 프로필을 고정해 두면 이후 트러블슈팅 시간이 줄어듭니다.

Clash를 무료로 다운로드해 IPv6·DNS·직결을 한 전제로 맞춘 뒤, 측정과 로그로 경로를 다시 확인해 보세요.