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:363-376 · ثابت‌شده در v1.19.24 (a847246)

مثال

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:363-376 · v1.19.24 (a847246)

Core Tutorial اثر Argsment