Посібник користувача mudfish-exclude
Ця програма доступна лише в Mudfish Cloud VPN 6.5.4 або новішій версії.
mudfish-exclude — інструмент командного рядка для Linux, який запускає окремі програми поза маршрутом Mudfish. Він особливо корисний у Full VPN, коли трафік браузера, месенджера, відеопрогравача або завантажувача потрібно передавати безпосередньо через початкове інтернет-з’єднання.
일반 프로그램 -> 미꾸라지 경로 -> 중계 서버
mudfish-exclude 앱 -> 기존 기본 경로 -> 인터넷
У схемі вище звичайна програма використовує маршрут Mudfish і проміжний сервер, а програма, запущена через mudfish-exclude, — початковий маршрут за замовчуванням до інтернету.
Інструмент не додає налаштувань до панелі керування Mudfish. Просто запускайте потрібну програму через mudfish-exclude замість звичайної команди.
Підтримка: наразі підтримуються лише Linux та IPv4. Інструмент недоступний у Windows, macOS і Android та не застосовує окремої політики обходу до IPv6-трафіку.
Вимоги
Потрібно виконати всі наведені умови:
- Установлено Mudfish для Linux.
- cgroup v2 змонтовано в
/sys/fs/cgroup. - Доступні команди
ip,iptablesі функція cgroup match в iptables. - Є права
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.
Основне використання
- Запустіть 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:
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 може негайно припинитися.
Параметри команди
사용법: mudfish-exclude [옵션] 프로그램 [프로그램 옵션...]
Синтаксис вище: mudfish-exclude, параметри інструмента, програма та параметри програми.
| Параметр | Опис |
|---|---|
-h, --help | Показує довідку. |
--setup | Лише налаштовує мережеву політику виключення й завершується. Програму одночасно вказувати не можна. |
--cleanup | Видаляє мережеву політику виключення й завершується. Програму одночасно вказувати не можна. |
--no-setup | Входить до зазначеної cgroup і запускає програму без повторного налаштування політики. |
--cgroup NAME | Назва cgroup v2. За замовчуванням — mudfish-exclude. |
--mark VALUE | Позначка брандмауера для пакетів. За замовчуванням — 0x6d660001. |
--priority VALUE | Пріоритет правила політики IPv4. За замовчуванням — 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, --mark, --priority або --table, використовуйте однакові значення в --setup, --no-setup і --cleanup. Власні значення не повинні конфліктувати з наявними позначками брандмауера або правилами маршрутизації системи.
Усунення проблем
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 і встановлює позначку iptables для її IPv4-пакетів. Пакети з цією позначкою проходять через окрему таблицю політик маршрутизації до маршруту за замовчуванням, знайденого в таблиці Linux main. Також застосовується потрібний NAT MASQUERADE.
Цей процес не змінює налаштування або стан спільної пам’яті mudrun, mudflow, mudfish чи mudwfp_proxy. Політика виключення працює лише на рівні cgroup, iptables і політик маршрутизації IPv4 операційної системи.