মূল বিষয়বস্তুতে যান

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 রিলে সার্ভার, ত্বরণ সুবিধা বা ওই রুটের public IP ব্যবহার করে না।

সঠিকভাবে কাজ করছে কি না পরীক্ষা​

Full VPN-এর আগে ব্যবহৃত public IPv4 ও Full VPN রিলে সার্ভারের public 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 ইনস্টল আছে কি না এবং kernel ও 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 মূল ইন্টারনেট রুট তৈরি করতে পারে না।

বাদ দেওয়ার পরও public 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 প্যাকেটে iptables mark বসায়। ওই mark-এর প্যাকেট আলাদা policy routing টেবিল দিয়ে Linux-এর main রাউটিং টেবিলে পাওয়া ডিফল্ট রুটে যায় এবং প্রয়োজনীয় NAT MASQUERADE প্রয়োগ হয়।

এই প্রক্রিয়া mudrun, mudflow, mudfish, mudwfp_proxy-এর সেটিংস বা shared memory-এর অবস্থা পরিবর্তন করে না। বাদ দেওয়ার নীতি শুধু অপারেটিং সিস্টেমের cgroup, iptables ও IPv4 policy routing স্তরে কাজ করে।