Преминете към основното съдържание

Ръководство за 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.

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

  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.

Първо проверете адреса в обикновен терминал при свързан 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 не се променя след изключване​

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

  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 mark. Маркираните пакети се изпращат през отделна таблица за маршрутизация по политики към маршрута по подразбиране, намерен в таблицата main на Linux. Прилага се необходимият NAT MASQUERADE.

Този процес не променя настройките или състоянието на споделената памет на mudrun, mudflow, mudfish или mudwfp_proxy. Политиката работи само в слоевете cgroup, iptables и IPv4 policy routing на операционната система.