Перейти до основного вмісту

Посібник користувача 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.

Основне використання​

  1. Запустіть Mudfish і належним чином підключіть потрібний елемент або Full VPN.
  2. Якщо програму, яку потрібно виключити, уже запущено, повністю закрийте її, включно з треєм і фоновими процесами.
  3. Запустіть її знову в терміналі за таким форматом:
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-адреса не змінюється після виключення​

Послідовно перевірте таке:

  1. Full VPN справді підключено, а за звичайного запуску відображається IP проміжного сервера.
  2. Усі попередні й фонові процеси цільової програми завершено перед повторним запуском.
  3. Використовується curl -4 або інша перевірка IPv4, щоб не переплутати результат з IPv6.
  4. Програма не передає команди окремій службі або вже запущеному запускачу. Політика стосується лише дерева нових процесів, створених mudfish-exclude.
  5. Маршрут за замовчуванням у 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 операційної системи.