Clash Meta·Mihomo sniffing(스니핑) 때문에 이 이상할 때: 끄기·분류 예외·DNS 정렬 실측

TUN이나 규칙 프록시를 켠 뒤 특정 HTTPS 사이트만 인증서 경고·로딩 멈춤·CSS·이미지만 빠지는 식으로 증상이 갈라질 때, 포럼에서는 sniffing을 의심하는 글이 자주 올라옵니다. 이 글은 Clash Meta·Mihomo 계열에서 스니퍼가 TLS SNI·QUIC 등에서 호스트 이름을 추정rules 매칭과 DNS(fake-ip·DoH) 해석이 어긋나는 패턴을 한국어 검색 의도에 맞춰 정리하고, 전역으로 끄기·지정 도메인만 스킵·DOMAIN-SUFFIX분류 예외를 두는 단계별 실측 순서를 묶었습니다. 본 블로그의 TUN 심화·순수 DNS 튜토리얼과 겹치지 않게, 스니핑과 분기·DNS의 교차점에 초점을 둡니다.

① sniffing이 하는 일: 왜 「도메인 규칙」과 충돌이 나기 쉬운가

Clash Meta·Mihomosniffer는 연결의 목적지가 IP로만 보이거나, 애플리케이션이 프록시 뒤에서 실제 호스트를 숨긴 것처럼 보일 때 패킷 내용을 훑어 example.com 같은 이름 후보를 뽑아 냅니다. 대표적으로 TLS ClientHello의 SNI, HTTP Host, 일부 QUIC 흐름이 후보입니다. 이렇게 얻은 이름으로 DOMAIN·DOMAIN-SUFFIX 규칙을 맞추면 「IP만 보이던 연결」도 의도한 프록시 그룹으로 보내기 쉬워집니다.

반대로 이 추정이 틀리거나 중간 프록시·CDN·기업 SSL 가로채기와 섞이면, 규칙 엔진이 실제 브라우저가 기대하는 서버와 다른 출구를 고를 수 있습니다. 사용자 입장에서는 자물쇠 아이콘은 있는데 세부 오류가 나거나, 메인 HTML만 열리고 하위 도메인 자산이 죄다 실패하는 식으로 나타나기도 합니다. 그래서 검색어로는 Clash sniffing·Mihomo 스니핑 끄기·HTTPS 이상이 같이 붙는 경우가 많습니다.

② 스니핑 의심 전에: TUN·DNS·다른 VPN부터 한 번에 겹치지 않았는지

모든 이상을 스니핑 탓으로 몰아가면 진단이 느려집니다. TUN시스템 DNS·브라우저 DoH가 동시에 켜져 있으면, 규칙 로그의 도메인과 브라우저가 본 IP가 서로 다른 레이어에서 나온 것일 수 있습니다. 먼저 TUN 모드·DNS 심화 글의 순서로 캡처 경로이름 해석 경로를 나눠 보는 것이 좋습니다. 회사 PC에서는 사내 VPN·보안 에이전트가 TLS를 검사하며 비슷한 증상을 내기도 하니, 정책상 허용된 도구인지도 함께 확인해야 합니다.

이 글의 전제는 노드 자체는 정상이고 특정 호스트에서만 패턴이 반복된다는 쪽입니다. 전체가 안 되면 Global 모드로 출구 품질을 먼저 가르는 편이 빠릅니다.

③ A/B 실측: 스니퍼만 끄면 사라지는지 확인하기

가장 비용이 낮은 실험은 sniffer.enable을 false로 두고 동일 사이트를 다시 여는 것입니다. GUI 클라이언트라면 스니핑·Sniff 류 스위치가 있는지 보고, YAML을 쓰는 경우에는 프로필의 sniffer: 블록에서 enable: false로 바꿉니다. 코어 버전마다 키 이름이 조금씩 다를 수 있으므로 사용 중인 Mihomo 릴리스 문서를 한 번 확인하세요.

# Conceptual — confirm keys against your core version
sniffer:
  enable: false

꺼졌을 때만 정상이라면, 원인 후보를 스니핑 기반 도메인 추정 쪽으로 좁힐 수 있습니다. 반대로 차이가 없으면 규칙 순서·fake-ip·특정 RULE-SET·IPv6 등 다른 축을 우선 보는 편이 맞습니다. 프로필을 만지기 전에 보내기·백업을 해 두세요.

④ 전역 끄기 대신: 문제 도메인만 스니핑에서 빼기(skip-domain)

스니핑이 다른 사이트에서는 도움이 되고 소수 도메인만 깨진다면, 전역 false보다 예외 목록이 운영에 유리합니다. Mihomo 계열에서는 sniffer 아래에 스킵할 도메인 패턴을 두는 방식이 흔합니다. 접두 규칙은 배포 프로필마다 다를 수 있으니, 예시는 구조 이해용으로만 보고 실제 문법은 코어 스키마를 따릅니다.

# Example shape — verify skip-domain / wildcard rules in your version docs
sniffer:
  enable: true
  skip-domain:
    - '+.cdn-problem.example'
    - 'bank.example.com'

여기서 목표는 「스니퍼가 이 호스트에 대해 추정한 이름으로 규칙을 덮어쓰지 않게」 하는 것에 가깝습니다. 정확한 호스트는 연결 로그와 브라우저 개발자 도구의 네트워크 탭에서 확인한 뒤, 최소한의 서픽스만 넣는 습관이 안전합니다.

⑤ 분류 예외: DOMAIN-SUFFIX로 「이 사이트는 DIRECT」를 규칙 상단에 두기

스니핑을 끄지 않고도, 특정 도메인 트래픽을 회선으로 직접 보내고 싶다rules에서 먼저 매칭되게 올려 두는 방법이 있습니다. Clash 계열은 보통 위에서 아래로 첫 매칭이 이깁니다. GEOIP나 거대 RULE-SET보다 예외 줄이 위에 있어야 의도대로 나갑니다.

rules:
  # Site-specific exception — put above GEOIP / broad RULE-SET
  - DOMAIN-SUFFIX,problem-site.example,DIRECT
  - DOMAIN,cdn.problem-site.example,DIRECT
  # ... remainder of profile ...

DIRECT가 정답은 아닙니다. 은행·업무 SaaS를 다른 프록시 그룹으로 보내야 한다면 동일하게 해당 그룹 이름을 적습니다. 문법이 익숙하지 않다면 사용자 정의 규칙 튜토리얼에서 rulesproxy-groups 이름을 맞추는 방법부터 보는 것이 좋습니다. 그룹 구조가 복잡하면 프록시 그룹 가이드와 함께 정리하세요.

⑥ DNS 정렬: fake-ip·redir-host·DoH가 스니핑과 같이 읽힐 때

스니핑으로 잡힌 도메인클라이언트 DNS가 돌려준 주소가 다르면, 사용자는 「규칙은 맞는 것 같은데 화면만 깨진다」고 느낍니다. fake-ip 모드에서는 앱이 보는 IP와 실제 outbound가 바라보는 목적지가 문서를 읽지 않으면 헷갈리기 쉽습니다. 브라우저 DoH가 켜져 있으면 OS 리졸버와 Clash dns 블록이 경쟁하기도 합니다.

실무에서는 한 번에 한 축만 바꿉니다. 예를 들어 증상이 특정 사이트에만 고정돼 있으면 스니핑 스킵DOMAIN 규칙을 먼저 적용하고, 그다음 DNS 모드·hijack·fallback을 조정합니다. TUN과 DNS를 같이 쓰는 큰 그림은 앞서 인용한 TUN 심화와 연결해 읽으면 빠릅니다.

⑦ QUIC·HTTP/3: 스니핑 포트·프로토콜 설정을 과하게 켠 경우

일부 템플릿은 QUIC 스니핑443 UDP를 넓게 잡아 두어, 특정 CDN 조합에서만 지연·실패가 나기도 합니다. 이때는 프로토콜별 스니핑을 단계적으로 줄이거나 문제 구간의 도메인을 스킵하는 식으로 좁히는 편이 낫습니다. 「최신 예시 YAML을 그대로 붙여 넣기」가 가장 흔한 사고 원인 중 하나라는 점만 기억해도 진단이 빨라집니다.

⑧ 로그로 증명하기: 어떤 이름이 규칙에 붙었는지 남기기

포럼에 질문할 때 유용한 건 증상 한 줄보다 해당 요청의 매칭 결과입니다. 클라이언트 로그에서 도메인(또는 스니핑으로 복원된 이름)·적중한 규칙 줄·선택된 정책을 같이 보면, skip-domain을 넣을지 rules 순서를 바꿀지 결정하기 쉽습니다. 브라우저에서는 실패한 요청의 호스트 이름을 복사해 규칙에 그대로 옮기는 방식이 실수가 적습니다.

⑨ 보안·정책: 스니핑은 「가시성」이지 우회 허가가 아님

기술적으로 연결을 어떻게 나누느냐와 별개로, 서비스 약관·현지 법령·회사 IT 정책을 지킬 책임은 사용자에게 있습니다. 이 문서는 합법적 범위 안에서 Clash Meta·Mihomo안정적으로 쓰기 위한 분류·DNS 정렬을 설명합니다. 금융·의료 등 민감 서비스는 공식 허용 경로를 우선하세요.

⑩ 정리: 스니핑 의심 → 끄기로 재현 → 스킵·규칙·DNS 순으로 좁힌다

TUN규칙 프록시를 쓰는 환경에서 일부 HTTPS만 이상할 때, sniffing은 그중 하나의 강한 후보입니다. 전역 비활성으로 증상이 사라지면 원인을 확신할 수 있고, 장기적으로는 skip-domainDOMAIN-SUFFIX 같은 분류 예외로 범위를 줄이는 편이 낫습니다. 그 과정에서 DNS가 같은 스토리를 말하는지까지 맞추면 「절반만 로드」 류 현상을 줄이기 쉽습니다.

클라이언트 설치와 패키지 선택은 릴리스만 쫓기보다 사이트의 다운로드 페이지를 따르는 편이 덜 헷갈립니다. 처음 설정 개념을 잡으려면 Clash 입문 튜토리얼을 먼저 보는 것도 좋습니다. 규칙 기반 클라이언트는 전역 VPN보다 관측 가능한 분기에 강점이 있으니, 로그와 함께 쓰면 장기적으로 시간이 아낍니다. → Clash를 무료로 내려받고, Meta·Mihomo에서 sniffing·분류 예외·DNS를 단계적으로 맞춰 보세요.