រំលងទៅមាតិកាសំខាន់

សៀវភៅណែនាំអ្នកប្រើប្រាស់ mudfish-exclude

ព័ត៌មាន

កម្មវិធីនេះអាចប្រើប្រាស់បានតែនៅលើ Mudfish Cloud VPN កំណែ 6.5.4 ឬខ្ពស់ជាងនេះប៉ុណ្ណោះ។

mudfish-exclude គឺជាឧបករណ៍បន្ទាត់ពាក្យបញ្ជា (command-line tool) សម្រាប់ Mudfish នៅលើ Linux ដែលអនុញ្ញាតឱ្យដំណើរការកម្មវិធីជាក់លាក់ដោយលើកលែងចេញពីផ្លូវបញ្ជូនរបស់ Mudfish។ ជាពិសេស នៅពេលប្រើប្រាស់របៀប Full VPN ហើយអ្នកចង់បញ្ជូនចរាចរណ៍របស់កម្មវិធីរុករក (browser) កម្មវិធីផ្ញើសារ កម្មវិធីចាក់វីដេអូ ឬឧបករណ៍ទាញយកទិន្នន័យ តាមរយៈខ្សែអ៊ីនធឺណិតដើមដោយផ្ទាល់។

កម្មវិធីទូទៅ           -> ផ្លូវបញ្ជូន Mudfish -> ម៉ាស៊ីនមេបញ្ជូនបន្ត
កម្មវិធី mudfish-exclude -> ផ្លូវលំនាំដើមដើម -> អ៊ីនធឺណិត

ឧបករណ៍នេះមិនបន្ថែមការកំណត់ទៅក្នុងផ្ទាំងគ្រប់គ្រង Mudfish ទេ។ អ្នកគ្រាន់តែចាប់ផ្តើមកម្មវិធីដែលត្រូវលើកលែងដោយប្រើ mudfish-exclude ជំនួសឱ្យពាក្យបញ្ជាដំណើរការធម្មតា។

វិសាលភាពនៃការគាំទ្រ: បច្ចុប្បន្នគាំទ្រតែ Linux និង IPv4 ប៉ុណ្ណោះ។ មិនអាចប្រើនៅលើ Windows, macOS ឬ Android បានទេ ហើយគោលការណ៍វាងដាច់ដោយឡែកមិនត្រូវបានអនុវត្តចំពោះចរាចរណ៍ IPv6 ឡើយ។

បរិស្ថានដែលត្រូវការ​

លក្ខខណ្ឌទាំងអស់ខាងក្រោមគឺចាំបាច់៖

  • ត្រូវតែបានដំឡើង Mudfish សម្រាប់ Linux។
  • cgroup v2 ត្រូវតែបានម៉ោន (mount) នៅ /sys/fs/cgroup។
  • ត្រូវតែអាចប្រើប្រាស់ពាក្យបញ្ជា ip និង iptables ព្រមទាំងមុខងារ cgroup match របស់ iptables។
  • ត្រូវតែមានសិទ្ធិ sudo ដើម្បីកំណត់រចនាសម្ព័ន្ធ policy routing និងវិធានជញ្ជាំងភ្លើង (firewall)។
  • ត្រូវតែមានផ្លូវលំនាំដើម IPv4 ធម្មតានៅក្នុងតារាងបញ្ជូន main របស់ Linux។

ឯកសារដែលអាចដំណើរការបានដែលបានដំឡើង ជាទូទៅស្ថិតនៅទីតាំងដូចខាងក្រោម៖

/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. ប្រសិនបើកម្មវិធីដែលត្រូវលើកលែងកំពុងដំណើរការរួចហើយ សូមបិទវាឱ្យទាំងស្រុង រួមទាំងថាសប្រព័ន្ធ (system tray) និងដំណើរការផ្ទៃខាងក្រោយ (background processes)។
  3. ដំណើរការកម្មវិធីឡើងវិញនៅក្នុង Terminal តាមទម្រង់ដូចខាងក្រោម៖
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 ... នឹងដំណើរការជាមួយ UID, GID, ថតផ្ទះ (home directory) និងបរិស្ថានសម័យលើតុ (desktop session) របស់អ្នកប្រើប្រាស់ដើមដែលបានហៅ sudo ប្រសិនបើអាច។

ចំណុចដែលត្រូវដឹង​

  • គោលការណ៍លើកលែងត្រូវបានអនុវត្តចំពោះដំណើរការដែលបានចាប់ផ្តើមថ្មីជាមួយ mudfish-exclude និងដំណើរការរង (child processes) របស់វា។
  • មិនអាចភ្ជាប់គោលការណ៍ទៅនឹងកម្មវិធីដែលកំពុងដំណើរការស្រាប់នៅពេលក្រោយបានទេ។ កម្មវិធីដែលមាន instance តែមួយត្រូវតែបិទឱ្យបានពេញលេញជាមុនសិន ដើម្បីកុំឱ្យវាប្រើប្រាស់ឡើងវិញនូវដំណើរការចាស់។
  • នៅក្នុងទម្រង់ដំណើរការតែម្តងធម្មតា គោលការណ៍នឹងត្រូវបានសម្អាតដោយស្វ័យប្រវត្តិនៅពេលដែលកម្មវិធី និងដំណើរការរងទាំងអស់ត្រូវបានបិទបញ្ចប់។
  • អ្នកអាចដំណើរការពាក្យបញ្ជា mudfish-exclude ជាច្រើនក្នុងពេលដំណាលគ្នាបាន។ គោលការណ៍រួមនឹងត្រូវបានសម្អាតបន្ទាប់ពីកម្មវិធីដែលបានលើកលែងចុងក្រោយត្រូវបានបិទបញ្ចប់។
  • ចរាចរណ៍ IPv4 នៃកម្មវិធីដែលបានលើកលែងនឹងមិនប្រើប្រាស់ម៉ាស៊ីនមេបញ្ជូនបន្ត Mudfish មុខងារបង្កើនល្បឿន ឬ IP សាធារណៈនៃផ្លូវនោះឡើយ។

ការផ្ទៀងផ្ទាត់ប្រតិបត្តិការធម្មតា​

វិធីងាយស្រួលបំផុតក្នុងការផ្ទៀងផ្ទាត់គឺនៅពេលដែលអាសយដ្ឋាន IPv4 សាធារណៈមុនពេលភ្ជាប់ Full VPN និងអាសយដ្ឋាន IPv4 សាធារណៈនៃម៉ាស៊ីនមេបញ្ជូនបន្ត Full VPN មានភាពខុសគ្នា។

ដំបូង ពិនិត្យមើលអាសយដ្ឋាននៅក្នុង Terminal ធម្មតាដែលបានភ្ជាប់ Full VPN៖

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

ដំណើរការពាក្យបញ្ជាដូចគ្នាជាមួយ mudfish-exclude៖

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

លទ្ធផលទីមួយគួរតែបង្ហាញអាសយដ្ឋាននៃម៉ាស៊ីនមេបញ្ជូនបន្ត Mudfish ហើយលទ្ធផលទីពីរគួរតែបង្ហាញអាសយដ្ឋាននៃខ្សែអ៊ីនធឺណិតដើម។ -4 គឺជាជម្រើសសម្រាប់ពិនិត្យមើលតែ IPv4 ឱ្យស្របតាមវិសាលភាពនៃការគាំទ្ររបស់ឧបករណ៍នេះ។

នៅពេលផ្ទៀងផ្ទាត់ជាមួយកម្មវិធីរុករក (browser) សូមបិទ browser ឱ្យទាំងស្រុង រួចដំណើរការដូចខាងក្រោម ហើយចូលទៅកាន់ https://myip.mudfish.net៖

sudo mudfish-exclude firefox

ការបិទ និងការសម្អាតគោលការណ៍​

នៅពេលបិទជាធម្មតា មិនចាំបាច់មានពាក្យបញ្ជាសម្អាតដាច់ដោយឡែកទេ។ ទោះជាយ៉ាងណាក៏ដោយ ប្រសិនបើដំណើរការ mudfish-exclude ត្រូវបានបង្ខំឱ្យបិទ Terminal ត្រូវបានបិទមិនធម្មតា ឬប្រព័ន្ធត្រូវបានរំខាន គោលការណ៍អាចនឹងនៅសេសសល់។

ដំបូង សូមបិទកម្មវិធីទាំងអស់ដែលបានដំណើរការដោយឧបករណ៍នេះ រួចដំណើរការពាក្យបញ្ជាខាងក្រោម៖

sudo mudfish-exclude --cleanup

ប្រសិនបើអ្នកប្រើ --cleanup ខណៈពេលដែលមានកម្មវិធីលើកលែងកំពុងដំណើរការ ការវាងផ្លូវនៃកម្មវិធីនោះអាចនឹងត្រូវបញ្ឈប់ភ្លាមៗ។

ជម្រើសពាក្យបញ្ជា​

ការប្រើប្រាស់: mudfish-exclude [ជម្រើស] កម្មវិធី [ជម្រើសកម្មវិធី...]
ជម្រើសការពិពណ៌នា
-h, --helpបង្ហាញជំនួយ។
--setupកំណត់តែគោលការណ៍បណ្តាញសម្រាប់ការលើកលែង រួចចាកចេញ។ មិនអាចបញ្ជាក់កម្មវិធីជាមួយគ្នាបានទេ។
--cleanupដកចេញគោលការណ៍បណ្តាញសម្រាប់ការលើកលែង រួចចាកចេញ។ មិនអាចបញ្ជាក់កម្មវិធីជាមួយគ្នាបានទេ។
--no-setupចូលទៅកាន់ cgroup ដែលបានបញ្ជាក់ ហើយដំណើរការកម្មវិធីដោយមិនកំណត់គោលការណ៍ឡើងវិញ។
--cgroup NAMEបញ្ជាក់ឈ្មោះ cgroup v2 ដែលត្រូវប្រើ។ តម្លៃលំនាំដើមគឺ mudfish-exclude។
--mark VALUEបញ្ជាក់ firewall mark ដែលត្រូវប្រើសម្រាប់កញ្ចប់ទិន្នន័យ។ តម្លៃលំនាំដើមគឺ 0x6d660001។
--priority VALUEបញ្ជាក់អាទិភាពនៃ IPv4 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

វិធីសាស្ត្រដោយដៃមិនធ្វើការសម្អាតដោយស្វ័យប្រវត្តិទេ។ លើសពីនេះ កម្មវិធីលើតុមួយចំនួនអាចផ្លាស់ទីទៅកាន់ cgroup ផ្សេងទៀតរបស់ systemd ក្នុងអំឡុងពេលដំណើរការ ដូច្នេះសម្រាប់កម្មវិធីទាំងនេះ វិធីដំណើរការតែម្តងតាមលំនាំដើមដែលតាមដានការផ្លាស់ទី cgroup និងសម្អាតដោយស្វ័យប្រវត្តិនឹងសមស្របជាង។

ប្រសិនបើអ្នកបានផ្លាស់ប្តូរតម្លៃ --cgroup, --mark, --priority, --table អ្នកត្រូវតែប្រើតម្លៃដូចគ្នានៅក្នុង --setup, --no-setup និង --cleanup។ តម្លៃដែលបានបញ្ជាក់ដោយអ្នកប្រើប្រាស់មិនត្រូវប៉ះទង្គិចជាមួយ firewall 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 សម្រាប់ការចែកចាយ (distribution) របស់អ្នក។

iptables rule add failed ឬកំហុស cgroup match​

សូមពិនិត្យមើលថាតើ iptables ត្រូវបានដំឡើងដែរឬទេ ហើយថាតើខឺណែល និង iptables គាំទ្រ cgroup match ដែរឬទេ។ ទោះបីជានៅលើការចែកចាយដែលផ្អែកលើ nftables ក៏ដោយ ឧបករណ៍នេះប្រើប្រាស់ពាក្យបញ្ជាដែលត្រូវគ្នាជាមួយ iptables ដោយផ្ទាល់ ដូច្នេះស្រទាប់ភាពឆបគ្នាជាមួយ 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. ប្រើ curl -4 ឬវិធីពិនិត្យ IPv4 ដើម្បីកុំឱ្យច្រឡំជាមួយលទ្ធផល IPv6។
  4. ពិនិត្យមើលថាតើកម្មវិធីគោលដៅជាទម្រង់ដែលបញ្ជូនបន្តពាក្យបញ្ជាទៅកាន់សេវាកម្មដាច់ដោយឡែក ឬ launcher ដែលកំពុងដំណើរការស្រាប់ដែរឬទេ។ គោលការណ៍លើកលែងត្រូវបានអនុវត្តចំពោះតែដំណើរការដែលបង្កើតថ្មីដោយ mudfish-exclude ប៉ុណ្ណោះ។
  5. ពិនិត្យមើលថាតើផ្លូវលំនាំដើមនៃ ip -4 route show default table main ចង្អុលទៅកាន់ចំណុចប្រទាក់អ៊ីនធឺណិតពិតប្រាកដដែរឬទេ។

បានបិទកម្មវិធីហើយ ប៉ុន្តែពាក្យបញ្ជា Terminal មិនទាន់បញ្ចប់​

ដំណើរការរង ឬដំណើរការផ្ទៃខាងក្រោយអាចនឹងនៅតែដំណើរការនៅក្នុង cgroup លើកលែង។ សូមបិទរូបតំណាងថាសប្រព័ន្ធ launcher និងដំណើរការអាប់ដេតពាក់ព័ន្ធទាំងអស់។ របៀបដំណើរការលំនាំដើមនឹងរង់ចាំរហូតដល់ដំណើរការរងទាំងអស់ត្រូវបានបញ្ចប់ទើបសម្អាតគោលការណ៍។

បណ្តាញមានភាពមិនធម្មតាបន្ទាប់ពីការបិទមិនប្រក្រតី​

បិទកម្មវិធីទាំងអស់ដែលបានដំណើរការដោយឧបករណ៍នេះ រួចសម្អាតគោលការណ៍ដែលនៅសេសសល់៖

sudo mudfish-exclude --cleanup

ប្រសិនបើបញ្ហានៅតែបន្តកើតមាន សូមបិទ Mudfish ពិនិត្យមើលផ្លូវលំនាំដើមរបស់ប្រព័ន្ធ និងវិធាន iptables រួចភ្ជាប់ឡើងវិញ។

គោលការណ៍នៃប្រតិបត្តិការ​

mudfish-exclude ដាក់កម្មវិធីដែលត្រូវដំណើរការទៅក្នុង cgroup v2 ដាច់ដោយឡែកមួយ ហើយកំណត់ iptables mark លើកញ្ចប់ទិន្នន័យ IPv4 ដែលកើតចេញពី cgroup នោះ។ កញ្ចប់ទិន្នន័យដែលមាន mark នោះត្រូវបានបញ្ជូនទៅកាន់ផ្លូវលំនាំដើមដែលបានរកឃើញនៅក្នុងតារាងបញ្ជូន main របស់ Linux តាមរយៈតារាង policy routing ដាច់ដោយឡែកមួយ ហើយ NAT MASQUERADE ដែលចាំបាច់ត្រូវបានអនុវត្ត។

ដំណើរការនេះមិនកែប្រែការកំណត់ ឬស្ថានភាពអង្គចងចាំរួម (shared memory) របស់ mudrun, mudflow, mudfish, ឬ mudwfp_proxy ឡើយ។ គោលការណ៍លើកលែងដំណើរការតែនៅក្នុងស្រទាប់ cgroup, iptables និង IPv4 policy routing នៃប្រព័ន្ធប្រតិបត្តិការប៉ុណ្ណោះ។