رفتن به محتوای اصلی

راهنمای کاربر mudfish-exclude

اطلاعات

این ابزار فقط در Mudfish Cloud VPN 6.5.4 یا جدیدتر در دسترس است.

mudfish-exclude ابزاری خط فرمان برای Mudfish در Linux است که برنامهٔ مشخصی را خارج از مسیر Mudfish اجرا می‌کند. به‌ویژه هنگام استفاده از Full VPN، برای ارسال مستقیم ترافیک مرورگر، پیام‌رسان، پخش‌کنندهٔ ویدیو یا ابزار دانلود از خط اینترنت اصلی مفید است.

일반 프로그램       -> 미꾸라지 경로 -> 중계 서버
mudfish-exclude 앱 -> 기존 기본 경로 -> 인터넷

در نمودار اصلی بالا، برنامهٔ عادی از مسیر Mudfish و سرور رله می‌گذرد، اما برنامهٔ اجراشده با mudfish-exclude از مسیر پیش‌فرض اصلی به اینترنت می‌رود.

این ابزار تنظیمی به داشبورد اضافه نمی‌کند. کافی است برنامهٔ موردنظر را به‌جای فرمان معمول، با mudfish-exclude اجرا کنید.

دامنهٔ پشتیبانی: در حال حاضر فقط Linux و IPv4 پشتیبانی می‌شوند. در Windows، macOS و Android قابل استفاده نیست و برای ترافیک IPv6 سیاست جداگانه‌ای جهت دور زدن مسیر اعمال نمی‌کند.

محیط موردنیاز​

تمام شرایط زیر لازم است.

  • Mudfish برای Linux نصب باشد.
  • cgroup v2 در /sys/fs/cgroup متصل شده باشد.
  • فرمان‌های ip و iptables و قابلیت cgroup match در iptables در دسترس باشند.
  • برای تنظیم مسیریابی مبتنی بر سیاست و قواعد فایروال، دسترسی sudo داشته باشید.
  • جدول مسیریابی main در Linux یک مسیر پیش‌فرض IPv4 معتبر داشته باشد.

فایل اجرایی معمولاً در مسیر زیر قرار دارد. عبارت کره‌ای داخل مسیر به معنی «نسخهٔ Mudfish» است.

/opt/mudfish/<미꾸라지 버전>/bin/mudfish-exclude

با فرمان زیر مسیر نصب فعلی را پیدا کنید.

ls /opt/mudfish/*/bin/mudfish-exclude

اگر فایل اجرایی در PATH نیست، در نمونه‌های زیر mudfish-exclude را با مسیر کامل پیداشده جایگزین کنید. برای نمونه، مسیر پیش‌فرض نسخهٔ 6.5.4 برابر با /opt/mudfish/6.5.4/bin/mudfish-exclude است.

استفادهٔ پایه​

  1. Mudfish را اجرا کنید و آیتم موردنظر یا حالت Full VPN را به‌درستی متصل کنید.
  2. اگر برنامهٔ موردنظر از قبل اجرا شده است، آن را کاملاً، همراه با آیکون ناحیهٔ اعلان و فرایندهای پس‌زمینه، ببندید.
  3. در ترمینال، برنامه را با قالب زیر دوباره اجرا کنید. جای‌نگهدارهای کره‌ای به معنی برنامه و گزینه‌های برنامه هستند.
sudo mudfish-exclude <프로그램> [프로그램 옵션...]

برای نمونه، برای مستثنا کردن Discord:

sudo mudfish-exclude discord

برای مستثنا کردن Firefox و باز کردن پنجرهٔ خصوصی:

sudo mudfish-exclude firefox --private-window

اگر مسیر فایل اجرایی فاصله دارد، آن را داخل علامت نقل‌قول قرار دهید.

sudo mudfish-exclude "/path/to/My Program" --option

sudo برای تنظیم سیاست شبکه استفاده می‌شود. خود برنامهٔ اجراشده با sudo mudfish-exclude ...، در صورت امکان با UID، GID، پوشهٔ خانه و محیط نشست دسکتاپ کاربری اجرا می‌شود که در ابتدا sudo را فراخوانده است.

نکات مهم​

  • سیاست استثنا روی فرایندی که تازه با mudfish-exclude شروع شده و فرایندهای فرزند آن اعمال می‌شود.
  • نمی‌توان سیاست را بعداً به برنامهٔ در حال اجرا افزود. برنامه‌های تک‌نمونه‌ای را ابتدا کاملاً ببندید تا فرایند قبلی را دوباره استفاده نکنند.
  • در روش عادی اجرای یک‌باره، پس از پایان برنامه و همهٔ فرزندان آن، سیاست خودکار پاک می‌شود.
  • چند فرمان mudfish-exclude را می‌توان هم‌زمان اجرا کرد. سیاست مشترک پس از پایان آخرین برنامهٔ مستثناشده پاک می‌شود.
  • ترافیک IPv4 برنامهٔ مستثناشده از سرور رله، قابلیت شتاب‌دهی و IP عمومی مسیر Mudfish استفاده نمی‌کند.

بررسی عملکرد صحیح​

وقتی IP عمومی IPv4 پیش از اتصال Full VPN با IP عمومی سرور رلهٔ Full VPN متفاوت باشد، بررسی آسان‌تر است.

ابتدا در ترمینال عادی و با Full VPN متصل، نشانی را بررسی کنید.

curl -4 https://myip.mudfish.net

همان فرمان را با mudfish-exclude اجرا کنید.

sudo mudfish-exclude curl -4 https://myip.mudfish.net

نتیجهٔ نخست باید نشانی سمت سرور رله و نتیجهٔ دوم باید نشانی خط اینترنت اصلی باشد. گزینهٔ -4 بررسی را مطابق دامنهٔ پشتیبانی ابزار، به IPv4 محدود می‌کند.

برای بررسی در مرورگر، ابتدا مرورگر را کاملاً ببندید، سپس مانند زیر اجرا کنید و به https://myip.mudfish.net بروید.

sudo mudfish-exclude firefox

خروج و پاک‌سازی سیاست​

در خروج عادی، فرمان پاک‌سازی جداگانه لازم نیست. اما اگر فرایند mudfish-exclude را به‌اجبار ببندید، ترمینال غیرعادی بسته شود یا سیستم متوقف شود، ممکن است سیاست باقی بماند.

ابتدا تمام برنامه‌هایی را که با ابزار اجرا کرده‌اید ببندید، سپس فرمان زیر را اجرا کنید.

sudo mudfish-exclude --cleanup

استفاده از --cleanup در حالی که برنامهٔ مستثناشده هنوز اجرا می‌شود، ممکن است بلافاصله دور زدن مسیر آن را متوقف کند.

گزینه‌های فرمان​

قالب اصلی زیر، گزینه‌ها، نام برنامه و گزینه‌های آن را نشان می‌دهد؛ جای‌نگهدارهای کره‌ای بدون تغییر حفظ شده‌اند.

사용법: mudfish-exclude [옵션] 프로그램 [프로그램 옵션...]
گزینهتوضیح
-h, --helpراهنما را چاپ می‌کند.
--setupفقط سیاست شبکهٔ استثنا را تنظیم و خارج می‌شود. نمی‌توان هم‌زمان برنامه‌ای تعیین کرد.
--cleanupسیاست شبکهٔ استثنا را حذف و خارج می‌شود. نمی‌توان هم‌زمان برنامه‌ای تعیین کرد.
--no-setupبدون تنظیم دوبارهٔ سیاست، وارد cgroup مشخص‌شده می‌شود و برنامه را اجرا می‌کند.
--cgroup NAMEنام cgroup v2 را تعیین می‌کند. پیش‌فرض mudfish-exclude است.
--mark VALUEmark فایروال بسته‌ها را تعیین می‌کند. پیش‌فرض 0x6d660001 است.
--priority VALUEاولویت قاعدهٔ سیاست IPv4 را تعیین می‌کند. پیش‌فرض 8252 است.
--table VALUEشمارهٔ جدول مسیریابی حاوی مسیر پیش‌فرض اصلی را تعیین می‌کند. پیش‌فرض 8252 است.

برای پایان صریح پردازش گزینه‌ها، نام برنامه را پس از -- قرار دهید.

sudo mudfish-exclude -- firefox --private-window

استفادهٔ مجدد از سیاست برای چند برنامه​

برای کاربران عادی، روش اجرای یک‌باره برای هر برنامه توصیه می‌شود. اگر باید سیاست را یک بار دستی تنظیم و در چند فرمان استفاده کنید، مراحل زیر را انجام دهید.

sudo mudfish-exclude --setup
sudo mudfish-exclude --no-setup discord
sudo mudfish-exclude --no-setup firefox

پس از بستن تمام برنامه‌ها، حتماً سیاست را پاک کنید.

sudo mudfish-exclude --cleanup

روش دستی پاک‌سازی خودکار ندارد. همچنین بعضی برنامه‌های دسکتاپ هنگام اجرا به cgroup دیگری در systemd منتقل می‌شوند. برای آن‌ها روش پیش‌فرض اجرای یک‌باره مناسب‌تر است، چون انتقال cgroup را دنبال و پاک‌سازی را خودکار انجام می‌دهد.

اگر مقادیر --cgroup، --mark، --priority یا --table را تغییر داده‌اید، در --setup، --no-setup و --cleanup از همان مقادیر استفاده کنید. مقادیر سفارشی نباید با markهای فایروال یا قواعد مسیریابی موجود سیستم تداخل داشته باشند.

رفع مشکل​

mudfish-exclude: command not found​

فایل اجرایی در PATH نیست. با فرمان زیر محل نصب را پیدا کنید و با مسیر کامل اجرا کنید.

ls /opt/mudfish/*/bin/mudfish-exclude
sudo /opt/mudfish/6.5.4/bin/mudfish-exclude discord

شمارهٔ نسخه در فرمان دوم را مطابق نسخهٔ نصب‌شده تغییر دهید.

network policy setup requires root​

دسترسی لازم برای تنظیم سیاست شبکه را ندارید. پیش از فرمان sudo بگذارید و دوباره اجرا کنید.

sudo mudfish-exclude discord

cgroup v2 is required at /sys/fs/cgroup​

سیستم از cgroup v2 استفاده نمی‌کند یا آن را در محل موردنظر متصل نکرده است. با فرمان زیر بررسی کنید. پیام کره‌ای در خروجی به معنی «cgroup v2 در دسترس است» است.

test -f /sys/fs/cgroup/cgroup.controllers && echo "cgroup v2 사용 가능"

اگر خروجی ندارد، روش فعال کردن cgroup v2 در توزیع خود را بررسی کنید.

iptables rule add failed یا خطای cgroup match​

نصب بودن iptables و پشتیبانی کرنل و iptables از cgroup match را بررسی کنید. حتی در توزیع‌های مبتنی بر nftables، ابزار مستقیماً از فرمان سازگار iptables استفاده می‌کند و به لایهٔ سازگاری سالم نیاز دارد.

failed to find the IPv4 default route​

مسیر پیش‌فرض IPv4 خط اینترنت اصلی در جدول main پیدا نشده است. بررسی کنید خروجی فرمان زیر مسیر default داشته باشد.

ip -4 route show default table main

اگر مسیر پیش‌فرض وجود ندارد یا از قبل به رابط VPN دیگری اشاره می‌کند، mudfish-exclude نمی‌تواند مسیر اینترنت اصلی را تنظیم کند.

با وجود استثنا، IP عمومی تغییر نمی‌کند​

به‌ترتیب موارد زیر را بررسی کنید.

  1. Full VPN واقعاً متصل باشد و اجرای عادی، IP سرور رله را نشان دهد.
  2. تمام فرایندهای قبلی و پس‌زمینهٔ برنامهٔ مقصد را ببندید و دوباره اجرا کنید.
  3. برای اشتباه نگرفتن نتیجه با IPv6، از curl -4 یا روش بررسی IPv4 استفاده کنید.
  4. بررسی کنید برنامه کار را به سرویس جداگانه یا Launcher ازقبل‌اجراشده واگذار نکند. سیاست استثنا فقط بر زنجیرهٔ فرایندهایی اعمال می‌شود که mudfish-exclude تازه ایجاد کرده است.
  5. مسیر پیش‌فرض در ip -4 route show default table main باید به رابط واقعی اینترنت اشاره کند.

برنامه را بسته‌ام، اما فرمان ترمینال تمام نمی‌شود​

ممکن است فرزند یا فرایند پس‌زمینه هنوز در cgroup استثنا اجرا شود. تمام آیکون‌های ناحیهٔ اعلان، Launcherها و فرایندهای به‌روزرسانی مرتبط را ببندید. روش پیش‌فرض تا پایان تمام فرزندان صبر می‌کند و سپس سیاست را پاک می‌کند.

پس از خروج غیرعادی، شبکه مشکل دارد​

تمام برنامه‌های اجراشده با این ابزار را ببندید و سیاست باقی‌مانده را پاک کنید.

sudo mudfish-exclude --cleanup

اگر مشکل ادامه دارد، Mudfish را ببندید، مسیر پیش‌فرض و قواعد iptables سیستم را بررسی کنید و دوباره متصل شوید.

روش کار​

mudfish-exclude برنامه را در یک cgroup v2 جداگانه قرار می‌دهد و بسته‌های IPv4 آن cgroup را با iptables mark علامت می‌زند. بسته‌های دارای این mark از جدول مسیریابی سیاست جداگانه به مسیر پیش‌فرضی هدایت می‌شوند که از جدول main لینوکس پیدا شده است، و NAT MASQUERADE لازم اعمال می‌شود.

این فرایند تنظیمات یا وضعیت حافظهٔ مشترک mudrun، mudflow، mudfish یا mudwfp_proxy را تغییر نمی‌دهد. سیاست استثنا فقط در لایه‌های cgroup، iptables و مسیریابی سیاست IPv4 سیستم‌عامل عمل می‌کند.