मुख्य सामग्री पर जाएँ

mudfish-exclude उपयोगकर्ता मार्गदर्शिका

जानकारी

यह प्रोग्राम केवल Mudfish Cloud VPN 6.5.4 या बाद के संस्करण में उपलब्ध है।

mudfish-exclude Linux के Mudfish में किसी विशेष प्रोग्राम को Mudfish के रास्ते से बाहर रखकर चलाने वाला कमांड-लाइन उपकरण है। विशेष रूप से Full VPN इस्तेमाल करते समय ब्राउज़र, मैसेंजर, वीडियो प्लेयर या डाउनलोड उपकरण का ट्रैफ़िक अपनी मूल इंटरनेट लाइन से सीधे भेजने के लिए उपयोगी है।

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

ऊपर दिए गए मूल आरेख में सामान्य प्रोग्राम का ट्रैफ़िक 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/<미꾸라지 버전>/bin/mudfish-exclude

ऊपर के मूल पथ में <미꾸라지 버전> का अर्थ Mudfish का संस्करण है।

वर्तमान इंस्टॉलेशन पथ नीचे दिए गए कमांड से खोज सकते हैं।

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 उपलब्ध है" वाला कोरियाई संदेश दिखाता है। कुछ भी न दिखे, तो अपने वितरण में cgroup v2 सक्षम करने का तरीका जाँचें।

iptables rule add failed या cgroup match त्रुटि​

जाँचें कि iptables इंस्टॉल है और कर्नेल तथा iptables cgroup match का समर्थन करते हैं। nftables आधारित वितरण में भी यह उपकरण सीधे iptables संगत कमांड इस्तेमाल करता है, इसलिए सही ढंग से काम करने वाली iptables संगतता परत आवश्यक है।

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. जाँचें कि प्रोग्राम किसी अलग सेवा या पहले से चल रहे Launcher को कमांड तो नहीं देता। बाहर रखने की नीति केवल mudfish-exclude द्वारा बनाए गए नए प्रोसेस और उनके वंशजों पर लागू होती है।
  5. ip -4 route show default table main का डिफ़ॉल्ट रास्ता वास्तविक इंटरनेट इंटरफ़ेस की ओर जाता है।

प्रोग्राम बंद करने के बाद भी टर्मिनल कमांड खत्म नहीं होता​

चाइल्ड या बैकग्राउंड प्रोसेस बाहर रखने वाले cgroup में अभी भी चल सकता है। संबंधित ट्रे आइकन, Launcher और अपडेट प्रोसेस भी बंद करें। डिफ़ॉल्ट तरीका सभी चाइल्ड प्रोसेस के खत्म होने का इंतज़ार करके नीति साफ़ करता है।

असामान्य रूप से बंद होने के बाद नेटवर्क में समस्या है​

इस उपकरण से चलाए गए सभी प्रोग्राम बंद करें और बची हुई नीति साफ़ करें।

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 की सेटिंग्स या साझा मेमोरी की स्थिति नहीं बदलती। बाहर रखने वाली नीति केवल ऑपरेटिंग सिस्टम के cgroup, iptables और IPv4 policy routing स्तरों पर काम करती है।