Skip to content

Сниффер

Блок sniffer анализирует первые байты каждого соединения, чтобы восстановить имя хоста назначения, когда DNS-контекст недоступен (обычно потому, что клиент открыл соединение напрямую по IP). Результат используется правилами маршрутизации и очисткой fake-IP.

Параметры

ПолеТипПо умолчаниюДопустимые значенияОписание
enableboolfalsetrue | falseВключить сниффинг соединений. Когда выключен, остальная часть блока игнорируется.
override-destinationboolfalsetrue | falseЗаменять IP назначения в метаданных соединения на имя хоста, полученное сниффингом. При true правила маршрутизации видят имя хоста вместо исходного IP.
sniffing[]string[]tls | http | quicКакие снифферы включить. Устарело — предпочитайте карту `sniff` по протоколам ниже.
force-domain[]string[]<domain pattern>Принудительно сниффить соединения к этим назначениям, даже если протокол уже известен.
skip-src-address[]string[]<CIDR>Никогда не сниффить соединения, исходящие с этих адресов-источников.
skip-dst-address[]string[]<CIDR>Никогда не сниффить соединения, направленные на эти адреса.
skip-domain[]string[]<domain pattern>Не перезаписывать назначение, если полученное сниффингом значение совпадает с одним из этих шаблонов.
port-whitelist[]string[]<port> | <port-range>Сниффить только соединения, порт назначения которых входит в этот список. Пустой список означает все порты.
force-dns-mappingboolfalsetrue | falseКогда обратное отображение fake-IP не находится, откатываться к сниффингу для восстановления имени хоста.
parse-pure-ipboolfalsetrue | falseСниффить соединения, назначение которых уже является IP-литералом (то есть DNS-запроса не было).
sniffmap[string]RawSniffingConfig{}{ "TLS": {...}, "HTTP": {...}, "QUIC": {...} }Конфигурация снифферов по протоколам. Ключи — TLS, HTTP или QUIC; значения — блоки `RawSniffingConfig` с переопределениями портов.

Исходный код: config/config.go:370-383 · зафиксировано на v1.19.29 (e26714a)

Пример

yaml
sniffer:
  enable: true
  override-destination: true
  parse-pure-ip: true
  force-dns-mapping: true
  skip-domain:
    - +.push.apple.com
  sniff:
    TLS:
      ports: [443, 8443]
    HTTP:
      ports: [80, 8080]
      override-destination: true
    QUIC:
      ports: [443]

Примечания

  • sniffing (массив) — устаревшая форма; карта sniff предпочтительнее, поскольку содержит списки портов по каждому протоколу.
  • Всегда включайте высоконагруженные CDN-домены в skip-domain, чтобы цепочка прокси оставалась стабильной; иначе скачки SNI могут дёргать выбор прокси.

Исходный код: config/config.go:370-383 · v1.19.29 (e26714a)

Core Tutorial от Argsment