Перейти к основному содержимому

Руководство пользователя mudfish-exclude

к сведению

Эта программа доступна только в Mudfish Cloud VPN 6.5.4 и новее.

mudfish-exclude — утилита командной строки для Linux, позволяющая запускать отдельные программы вне маршрутов Mudfish. Она особенно полезна в режиме Full VPN, когда трафик браузера, мессенджера, видеоплеера или загрузчика нужно направить напрямую через обычное интернет-соединение.

일반 프로그램       -> 미꾸라지 경로 -> 중계 서버
mudfish-exclude 앱 -> 기존 기본 경로 -> 인터넷

Утилита не добавляет настройки на панель управления Mudfish. Запускайте нужную программу через mudfish-exclude вместо обычной команды.

Область поддержки: Сейчас поддерживаются только Linux и IPv4. Утилита недоступна в Windows, macOS и Android и не применяет отдельную политику обхода к IPv6-трафику.

Требования к среде​

Необходимо выполнить все следующие условия.

  • Установлен Mudfish для Linux.
  • cgroup v2 смонтирован в /sys/fs/cgroup.
  • Доступны команды ip и iptables, а также сопоставление cgroup в iptables.
  • Есть права sudo для настройки маршрутизации по политикам и правил межсетевого экрана.
  • В таблице маршрутизации main Linux есть рабочий маршрут IPv4 по умолчанию.

Установленный исполняемый файл обычно находится здесь.

/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.

Основное использование​

  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 ..., по возможности выполняется с 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 [옵션] 프로그램 [프로그램 옵션...]
ПараметрОписание
-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 и автоматически удаляет политику.

Если вы изменили значения --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 в вашем дистрибутиве.

Ошибка iptables rule add failed или сопоставления cgroup​

Убедитесь, что iptables установлен, а ядро и iptables поддерживают сопоставление cgroup. Даже в дистрибутивах на базе 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 и назначает исходящим из него IPv4-пакетам метку iptables. Пакеты с этой меткой через отдельную таблицу маршрутизации по политикам направляются по маршруту по умолчанию, найденному в таблице main Linux. При необходимости применяется NAT MASQUERADE.

Этот процесс не изменяет настройки или состояние общей памяти mudrun, mudflow, mudfish и mudwfp_proxy. Политика исключения работает только на уровнях cgroup, iptables и маршрутизации IPv4 по политикам в операционной системе.