Ръководство за mudfish-exclude
Тази програма е достъпна само в Mudfish Cloud VPN 6.5.4 или по-нова версия.
mudfish-exclude е инструмент за командния ред в Mudfish за Linux, който стартира определени програми извън маршрута на Mudfish. Особено полезен е при Full VPN, когато искате браузър, месинджър, видеоплейър или програма за изтегляне да използва директно обичайната интернет връзка.
일반 프로그램 -> 미꾸라지 경로 -> 중계 서버
mudfish-exclude 앱 -> 기존 기본 경로 -> 인터넷
В оригиналната схема обикновените програми минават през Mudfish и възела, а изключеното приложение — през първоначалния маршрут по подразбиране към интернет. Корейските заместители в примерите по-долу означават съответно версия на Mudfish, програма и опции на програмата; оригиналните команди са запазени.
Инструментът не добавя настройки в таблото на Mudfish. Просто стартирайте желаната програма чрез mudfish-exclude вместо с обичайната команда.
Поддръжка: в момента се поддържат само Linux и IPv4. Инструментът не работи под Windows, macOS или Android и не прилага отделна политика за заобикаляне към IPv6 трафика.
Необходима среда
Всички следни условия трябва да са изпълнени:
- Инсталиран Mudfish за Linux.
- cgroup v2, монтиран в
/sys/fs/cgroup. - Налични команди
ipиiptablesи поддръжка на cgroup match в iptables. - Права
sudoза задаване на правила на защитната стена и маршрутизация по политики. - Работещ IPv4 маршрут по подразбиране в таблицата main на Linux.
Изпълнимият файл обикновено е на следното място:
/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.
Основно използване
- Стартирайте Mudfish и свържете нормално желания елемент или Full VPN.
- Ако изключваната програма вече работи, затворете я напълно, включително иконата в системната област и фоновите процеси.
- Стартирайте я отново от терминала в следния формат.
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 трафикът на изключената програма не използва възлите на Mudfish, ускоряването или публичния IP адрес на този маршрут.
Проверка на функционирането
Най-лесно е да проверите, когато публичният IPv4 адрес преди Full VPN се различава от този на възела Full VPN.
Първо проверете адреса в обикновен терминал при свързан 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 | Маркировка на защитната стена за пакетите. По подразбиране 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 или правила за маршрутизация по политики.
Отстраняване на проблеми
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 не се променя след изключване
Проверете последователно:
- Full VPN действително е свързан и при обикновено стартиране се показва IP адресът на възела.
- Затворете всички съществуващи и фонови процеси на програмата и я стартирайте отново.
- Използвайте
curl -4или друг IPv4 тест, за да не объркате резултата с IPv6. - Проверете дали програмата предава команди на отделна услуга или вече работещ стартиращ процес. Политиката важи само за новото дърво от процеси, създадено от
mudfish-exclude. - Проверете дали маршрутът по подразбиране от
ip -4 route show default table mainсочи към действителния интернет интерфейс.
Програмата е затворена, но командата в терминала не приключва
Дъщерен или фонов процес може още да работи в изключения cgroup. Затворете и свързаните икони в системната област, стартиращи програми и процеси за обновяване. Стандартният режим изчаква всички дъщерни процеси да приключат, преди да почисти политиката.
Мрежата се държи необичайно след неочаквано прекратяване
Затворете всички програми, стартирани с инструмента, и почистете останалата политика.
sudo mudfish-exclude --cleanup
Ако проблемът продължава, затворете Mudfish, проверете системния маршрут по подразбиране и правилата iptables и се свържете отново.
Принцип на работа
mudfish-exclude поставя стартираната програма в отделен cgroup v2 и маркира IPv4 пакетите от него чрез iptables mark. Маркираните пакети се изпращат през отделна таблица за маршрутизация по политики към маршрута по подразбиране, намерен в таблицата main на Linux. Прилага се необходимият NAT MASQUERADE.
Този процес не променя настройките или състоянието на споделената памет на mudrun, mudflow, mudfish или mudwfp_proxy. Политиката работи само в слоевете cgroup, iptables и IPv4 policy routing на операционната система.