پرش به محتویات

Mimic

Mimic یک ابزار شخص ثالث است که بسته‌های UDP را به شکل TCP درمی‌آورد. Hysteria به صورت داخلی با آن یکپارچه شده است، بنابراین می‌توانید آن را مستقیماً در پیکربندی خود فعال کنید و نیازی به راه‌اندازی دستی mimic ندارید.

از دید تجهیزات میانی در مسیر، اتصال Hysteria به جای UDP شبیه TCP دیده می‌شود - چیزی که ممکن است ترجیح داده شود، یا حتی در برخی شبکه‌های محدودکننده برای کارکرد Hysteria ضروری باشد.

توجه داشته باشید که این به معنای آن نیست که Hysteria واقعاً از TCP استفاده می‌کند. همچنان از QUIC روی UDP استفاده می‌شود و فقط چنان بسته‌بندی شده که روی خط شبیه TCP به نظر برسد. این نوعی مبهم‌سازی است، نه تغییر پروتکل.

نحوهٔ کارکرد

Mimic برنامه‌های eBPF را به یک واسط شبکه متصل می‌کند و بسته‌ها را هنگام خروج از دستگاه و ورود به آن بازنویسی می‌کند: بسته‌های UDP خروجی یک سرآیند TCP جعلی می‌گیرند و از بسته‌های ورودی حذف می‌شود. این بازنویسی در لایه‌ای پایین‌تر از سوکت انجام می‌شود، بنابراین Hysteria همچنان QUIC معمولی ارسال و دریافت می‌کند.

از آنجا که هر دو سمت باید بر سر یک پوشش یکسان توافق داشته باشند، mimic باید هم روی سرور و هم روی کلاینت فعال باشد.

پیش‌نیازها

‏Mimic فقط روی لینوکس کار می‌کند و همراه Hysteria عرضه نمی‌شود. روی هر دو دستگاه به موارد زیر نیاز دارید:

  • برنامهٔ mimic در PATH (یا مشخص‌شده به صورت صریح، به ادامه مراجعه کنید).
  • بارگذاری ماژول هستهٔ آن (modprobe mimic).
  • اجرای خود Hysteria با دسترسی root، چون اتصال برنامه‌های eBPF به آن نیاز دارد.

برای نصب به راهنمای Getting Started خودِ mimic و برای مرجع کامل خط فرمان به mimic(1) مراجعه کنید.

نیازی نیست سرویس systemd مربوط به mimic را راه‌اندازی کنید یا فایل پیکربندی برای واسط شبکه بنویسید. Hysteria خودش mimic را اجرا و مدیریت می‌کند.

پیکربندی

بلوک mimic در پیکربندی سرور و کلاینت یکسان است.

نمونهٔ حداقلی:

mimic:
  enabled: true

در بیشتر موارد، تنها چیزی که لازم دارید enabled: true در هر دو سمت است.

نمونهٔ کامل:

mimic:
  enabled: true # (1)!
  interface: eth0 # (2)!
  xdpMode: skb # (3)!
  path: /usr/bin/mimic # (4)!
  extraArgs: [] # (5)!
  1. فعال بودن یا نبودن mimic. باید در هر دو سمت یکسان باشد.
  2. واسط شبکه‌ای که باید به آن متصل شود. اختیاری؛ به صورت پیش‌فرض Hysteria واسطی را انتخاب می‌کند که ترافیک به سمت طرف مقابل از آن عبور می‌کند.
  3. تعیین اجباری حالت اتصال XDP، یا native یا skb. اختیاری؛ آن را خالی بگذارید مگر آنکه mimic نتواند متصل شود، که با برخی درایورهای دارای رفتار نادرست در حالت native رخ می‌دهد.
  4. مسیر فایل اجرایی mimic. اختیاری؛ به صورت پیش‌فرض در PATH جست‌وجو می‌شود.
  5. آرگومان‌های اضافی که عیناً به mimic داده می‌شوند، برای تنظیماتی که معادلی در Hysteria ندارند (پارامترهای padding، دست‌دهی و keepalive). اختیاری.

رفتارهای مهم

  • سروری که mimic روی آن فعال است، بدون mimic در دسترس نیست. کلاینت‌هایی که از آن استفاده نمی‌کنند هیچ پاسخی دریافت نمی‌کنند و این بیشتر شبیه یک مشکل شبکه به نظر می‌رسد تا خطای پیکربندی. فعال کردن آن برای کلاینت‌های موجود یک تغییر شکننده است - جابه‌جایی هر دو سمت را با هم برنامه‌ریزی کنید.

  • نمی‌توان آن را با پرش پورت ترکیب کرد. ‏Mimic ترافیک را بر اساس یک آدرس و پورت مشخص تطبیق می‌دهد، در حالی که پرش پورت پورت را در یک بازه جابه‌جا می‌کند. Hysteria چنین پیکربندی‌ای را هنگام راه‌اندازی رد می‌کند.

  • یک نمونهٔ mimic به کل دستگاه سرویس می‌دهد. چون mimic به جای سوکت به یک واسط شبکه متصل می‌شود، چند فرایند Hysteria که به یک سرور متصل می‌شوند از یک نمونهٔ مشترک استفاده می‌کنند. اگر فیلترهای نمونهٔ در حال اجرا آدرس موردنیاز را پوشش دهند، Hysteria از همان استفاده می‌کند؛ و اگر پوشش ندهند، به جای ارسال بسته‌هایی که بازنویسی نمی‌شوند، از راه‌اندازی خودداری می‌کند.