Сниффер
Блок sniffer анализирует первые байты каждого соединения, чтобы восстановить имя хоста назначения, когда DNS-контекст недоступен (обычно потому, что клиент открыл соединение напрямую по IP). Результат используется правилами маршрутизации и очисткой fake-IP.
Параметры
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
enable | bool | false | true | false | Включить сниффинг соединений. Когда выключен, остальная часть блока игнорируется. |
override-destination | bool | false | true | 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-mapping | bool | false | true | false | Когда обратное отображение fake-IP не находится, откатываться к сниффингу для восстановления имени хоста. |
parse-pure-ip | bool | false | true | false | Сниффить соединения, назначение которых уже является IP-литералом (то есть DNS-запроса не было). |
sniff | map[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)
