مرکزی مواد پر جائیں

mudfish-exclude صارف گائیڈ

معلومات

یہ پروگرام صرف Mudfish Cloud VPN 6.5.4 یا اس سے اوپر کے ورژن میں دستیاب ہے۔

mudfish-exclude Linux کے لیے Mudfish میں ایک کمانڈ لائن ٹول ہے جو صرف مخصوص پروگرام کو Mudfish کے راستے سے خارج کر کے چلاتا ہے۔ خاص طور پر جب آپ Full VPN موڈ استعمال کرتے ہوئے براؤزر، میسنجر، ویڈیو پلیئر، ڈاؤن لوڈ ٹولز وغیرہ کی ٹریفک کو براہ راست اپنی موجودہ انٹرنیٹ لائن پر بھیجنا چاہتے ہوں تو یہ استعمال ہو سکتا ہے۔

عام پروگرام         -> Mudfish کا راستہ -> ریلے سرور
mudfish-exclude ایپ -> موجودہ ڈیفالٹ راستہ -> انٹرنیٹ

یہ ٹول Mudfish ڈیش بورڈ میں کوئی سیٹنگ شامل نہیں کرتا۔ جس پروگرام کو خارج کرنا ہو اسے معمول کی چلانے والی کمانڈ کے بجائے mudfish-exclude سے شروع کریں۔

معاون دائرہ: فی الحال صرف Linux اور IPv4 معاون ہیں۔ Windows، macOS اور Android پر استعمال نہیں کیا جا سکتا اور IPv6 ٹریفک پر الگ بائی پاس پالیسی لاگو نہیں کی جاتی۔

درکار ماحول​

درج ذیل تمام شرائط ضروری ہیں۔

  • Linux کے لیے Mudfish انسٹال ہونا چاہیے۔
  • cgroup v2 /sys/fs/cgroup پر ماؤنٹ ہونا چاہیے۔
  • ip اور iptables کمانڈز اور iptables کا cgroup match فیچر استعمال کیا جا سکتا ہو۔
  • پالیسی روٹنگ اور فائر وال رولز سیٹ کرنے کے لیے sudo کی اجازت ہونی چاہیے۔
  • Linux کے main روٹنگ ٹیبل میں درست IPv4 ڈیفالٹ راستہ موجود ہونا چاہیے۔

انسٹال شدہ ایگزیکیوٹیبل فائل عموماً درج ذیل مقام پر ہوتی ہے۔

/opt/mudfish/<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 کو Mudfish سے خارج کرنے کے لیے درج ذیل طریقے سے چلائیں۔

sudo mudfish-exclude discord

Firefox کو خارج کرتے ہوئے پرائیویٹ ونڈو کھولنے کے لیے درج ذیل طریقے سے چلائیں۔

sudo mudfish-exclude firefox --private-window

اگر ایگزیکیوٹیبل فائل کے راستے میں خالی جگہ ہو تو اسے اقتباسی نشانات میں لکھیں۔

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

sudo نیٹ ورک پالیسی سیٹ کرنے کے لیے استعمال ہوتا ہے۔ sudo mudfish-exclude ... سے چلایا گیا پروگرام خود، جہاں ممکن ہو، sudo کو کال کرنے والے اصل صارف کے UID، GID، ہوم ڈائریکٹری اور ڈیسک ٹاپ سیشن ماحول کے ساتھ چلتا ہے۔

جاننے کی باتیں​

  • اخراج کی پالیسی mudfish-exclude سے نئے شروع کیے گئے پروسیس اور اس کے چائلڈ پروسیسز پر لاگو ہوتی ہے۔
  • پہلے سے چلتے ہوئے پروگرام پر پالیسی بعد میں نہیں لگائی جا سکتی۔ سنگل انسٹینس پروگرام موجودہ پروسیس کو دوبارہ استعمال نہ کرے، اس لیے پہلے اسے مکمل طور پر بند کرنا ضروری ہے۔
  • عام ایک بار چلانے کے طریقے میں جب پروگرام اور اس کے تمام چائلڈ پروسیسز ختم ہو جائیں تو پالیسی خودکار طور پر صاف ہو جاتی ہے۔
  • متعدد mudfish-exclude کمانڈز بیک وقت چلائی جا سکتی ہیں۔ مشترکہ پالیسی آخری خارج شدہ پروگرام کے ختم ہونے کے بعد صاف ہوتی ہے۔
  • خارج شدہ پروگرام کی IPv4 ٹریفک Mudfish ریلے سرور، ایکسلریشن فیچرز اور اس راستے کی پبلک IP استعمال نہیں کرتی۔

درست کام کرنے کی تصدیق​

سب سے آسان تصدیق تب ہوتی ہے جب Full VPN کنیکٹ ہونے سے پہلے کی پبلک IPv4 ایڈریس اور Full VPN ریلے سرور کی پبلک IPv4 ایڈریس مختلف ہوں۔

پہلے Full VPN سے جڑے ہوئے عام ٹرمینل میں ایڈریس چیک کریں۔

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

وہی کمانڈ mudfish-exclude سے چلائیں۔

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

پہلا نتیجہ Mudfish ریلے سرور کی طرف کا ایڈریس اور دوسرا نتیجہ آپ کی موجودہ انٹرنیٹ لائن کا ایڈریس دکھانا چاہیے۔ -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 VALUEپیکٹ کے لیے استعمال ہونے والا فائر وال mark متعین کرتا ہے۔ ڈیفالٹ 0x6d660001 ہے۔
--priority VALUEIPv4 policy rule کی ترجیح متعین کرتا ہے۔ ڈیفالٹ 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

دستی طریقہ خودکار صفائی نہیں کرتا۔ نیز بعض ڈیسک ٹاپ پروگرام چلتے وقت systemd کے کسی دوسرے cgroup میں منتقل ہو سکتے ہیں، اس لیے ایسے پروگراموں کے لیے cgroup کی منتقلی کو ٹریک کرنے اور خودکار صفائی کرنے والا ڈیفالٹ ایک بار چلانے کا طریقہ زیادہ موزوں ہے۔

اگر آپ نے --cgroup, --mark, --priority, --table کی ویلیوز بدلی ہیں تو --setup, --no-setup, --cleanup سب میں وہی ویلیوز استعمال کرنی چاہئیں۔ حسب ضرورت ویلیوز سسٹم کے موجودہ فائر وال mark یا policy routing رولز سے ٹکرانی نہیں چاہئیں۔

مسائل کا حل​

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 استعمال نہیں کرتا یا اسے اس مقام پر ماؤنٹ نہیں کیا گیا۔ درج ذیل کمانڈ سے تصدیق کی جا سکتی ہے۔

test -f /sys/fs/cgroup/cgroup.controllers && echo "cgroup v2 دستیاب ہے"

اگر کچھ بھی آؤٹ پٹ نہ ہو تو اپنی ڈسٹری بیوشن میں cgroup v2 فعال کرنے کا طریقہ دیکھنا ہوگا۔

iptables rule add failed یا cgroup match کی خرابی​

دیکھیں کہ iptables انسٹال ہے یا نہیں، اور کرنل اور iptables cgroup match کو سپورٹ کرتے ہیں یا نہیں۔ nftables پر مبنی ڈسٹری بیوشنز میں بھی یہ ٹول براہ راست iptables سے مطابقت رکھنے والی کمانڈز استعمال کرتا ہے، اس لیے درست iptables compatibility لیئر ضروری ہے۔

failed to find the IPv4 default route​

main روٹنگ ٹیبل میں موجودہ انٹرنیٹ لائن کا IPv4 ڈیفالٹ راستہ نہیں ملا۔ درج ذیل کمانڈ کے نتیجے میں default راستہ موجود ہے یا نہیں، چیک کریں۔

ip -4 route show default table main

اگر ڈیفالٹ راستہ نہ ہو یا وہ پہلے ہی کسی اور VPN انٹرفیس کی طرف اشارہ کر رہا ہو تو mudfish-exclude اصل انٹرنیٹ راستہ ترتیب نہیں دے سکتا۔

خارج کرنے کے باوجود پبلک IP نہیں بدلتی​

درج ذیل کو ترتیب سے چیک کریں۔

  1. تصدیق کریں کہ Full VPN موڈ واقعی کنیکٹ ہے اور عام طریقے سے چلانے پر ریلے سرور کی IP دکھائی دیتی ہے۔
  2. ہدف پروگرام کے موجودہ پروسیسز اور بیک گراؤنڈ پروسیسز سب بند کر کے دوبارہ چلائیں۔
  3. IPv6 نتیجے سے الجھن سے بچنے کے لیے curl -4 یا IPv4 چیک کرنے کا طریقہ استعمال کریں۔
  4. دیکھیں کہ ہدف پروگرام کہیں اپنی کمانڈ کسی الگ سروس یا پہلے سے چلتے ہوئے لانچر کو تو نہیں سونپ دیتا۔ اخراج کی پالیسی صرف اس پروسیس نسل پر لاگو ہوتی ہے جو mudfish-exclude نے نئی بنائی ہو۔
  5. ip -4 route show default table main کا ڈیفالٹ راستہ حقیقی انٹرنیٹ انٹرفیس کی طرف اشارہ کر رہا ہے یا نہیں، تصدیق کریں۔

پروگرام بند کرنے کے بعد بھی ٹرمینل کمانڈ ختم نہیں ہوتی​

ممکن ہے چائلڈ یا بیک گراؤنڈ پروسیس اب بھی اخراج والے cgroup میں چل رہا ہو۔ متعلقہ ٹرے آئیکن، لانچر اور اپ ڈیٹ پروسیس سمیت سب کو بند کریں۔ ڈیفالٹ طریقہ تمام چائلڈ پروسیسز کے ختم ہونے کا انتظار کرتا ہے اور پھر پالیسی صاف کرتا ہے۔

غیر معمولی اختتام کے بعد نیٹ ورک عجیب ہو جانا​

اس ٹول سے چلائے گئے تمام پروگرام بند کرنے کے بعد باقی ماندہ پالیسی صاف کریں۔

sudo mudfish-exclude --cleanup

اس کے بعد بھی مسئلہ رہے تو Mudfish بند کریں، سسٹم کے ڈیفالٹ راستے اور iptables رولز کی جانچ کریں اور دوبارہ کنیکٹ کریں۔

کام کرنے کا اصول​

mudfish-exclude چلائے جانے والے پروگرام کو الگ cgroup v2 میں ڈالتا ہے اور اس cgroup سے نکلنے والے IPv4 پیکٹس پر iptables mark لگاتا ہے۔ اس mark والے پیکٹس الگ policy routing ٹیبل کے ذریعے Linux کے main روٹنگ ٹیبل سے ملنے والے ڈیفالٹ راستے پر بھیجے جاتے ہیں اور ضروری NAT MASQUERADE لاگو کیا جاتا ہے۔

یہ عمل mudrun, mudflow, mudfish, mudwfp_proxy کی سیٹنگز یا shared memory کی حالت میں کوئی تبدیلی نہیں کرتا۔ اخراج کی پالیسی صرف آپریٹنگ سسٹم کے cgroup، iptables اور IPv4 policy routing لیئرز میں کام کرتی ہے۔