Przejdź do głównej zawartości

Podręcznik mudfish-exclude

informacja

Program jest dostępny tylko w Mudfish Cloud VPN 6.5.4 lub nowszym.

mudfish-exclude to narzędzie wiersza poleceń dla Mudfish w Linux, które uruchamia określony program z pominięciem trasy Mudfish. Przydaje się szczególnie w trybie Full VPN, gdy ruch przeglądarki, komunikatora, odtwarzacza wideo lub narzędzia pobierania ma przechodzić bezpośrednio przez dotychczasowe łącze internetowe.

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

Zwykły program używa trasy Mudfish i węzła; aplikacja uruchomiona przez mudfish-exclude używa dotychczasowej trasy domyślnej do Internetu.

Narzędzie nie dodaje ustawień do panelu Mudfish. Uruchom wykluczany program przez mudfish-exclude zamiast jego zwykłego polecenia.

Zakres obsługi: obecnie obsługiwane są tylko Linux i IPv4. Narzędzie nie działa w Windows, macOS ani Android i nie stosuje oddzielnej polityki omijania do ruchu IPv6.

Wymagane środowisko​

Muszą być spełnione wszystkie warunki:

  • Zainstalowany Mudfish dla Linux.
  • cgroup v2 zamontowane w /sys/fs/cgroup.
  • Dostępne polecenia ip, iptables i funkcja dopasowania cgroup w iptables.
  • Uprawnienia sudo do ustawiania routingu opartego na regułach i zasad zapory.
  • Prawidłowa domyślna trasa IPv4 w głównej tablicy routingu Linux (main).

Plik wykonywalny zazwyczaj znajduje się tutaj:

/opt/mudfish/<미꾸라지 버전>/bin/mudfish-exclude

Symbol w nawiasach oznacza wersję Mudfish. Bieżącą ścieżkę instalacji znajdziesz poleceniem:

ls /opt/mudfish/*/bin/mudfish-exclude

Jeśli pliku nie ma w PATH, zastąp mudfish-exclude w przykładach pełną znalezioną ścieżką. Na przykład dla 6.5.4 jest to /opt/mudfish/6.5.4/bin/mudfish-exclude.

Podstawowe użycie​

  1. Uruchom Mudfish i prawidłowo połącz wybraną pozycję lub tryb Full VPN.
  2. Jeśli wykluczany program już działa, całkowicie go zamknij, włącznie z ikoną w zasobniku i procesami w tle.
  3. Uruchom go ponownie w terminalu w następującym formacie:
sudo mudfish-exclude <프로그램> [프로그램 옵션...]

Podaj nazwę programu i jego opcje. Aby na przykład wykluczyć Discord:

sudo mudfish-exclude discord

Aby wykluczyć Firefox i otworzyć okno prywatne:

sudo mudfish-exclude firefox --private-window

Ścieżkę ze spacjami ujmij w cudzysłowy:

sudo mudfish-exclude "/path/to/My Program" --option

sudo służy do ustawienia polityki sieciowej. Sam program uruchomiony przez sudo mudfish-exclude ... działa, o ile to możliwe, z UID, GID, katalogiem domowym i środowiskiem sesji pulpitu użytkownika, który wywołał sudo.

Ważne informacje​

  • Polityka wykluczenia dotyczy nowego procesu uruchomionego przez mudfish-exclude i jego procesów potomnych.
  • Nie można dołączyć polityki później do już działającego programu. Programy z jedną instancją trzeba najpierw całkowicie zamknąć, aby nie użyły istniejącego procesu.
  • W standardowym trybie pojedynczego uruchomienia polityka jest automatycznie usuwana po zakończeniu programu i wszystkich jego procesów potomnych.
  • Można uruchamiać kilka poleceń mudfish-exclude jednocześnie. Wspólna polityka jest usuwana po zakończeniu ostatniego wykluczonego programu.
  • Ruch IPv4 wykluczonego programu nie korzysta z węzłów Mudfish, przyspieszania ani publicznego adresu IP tej trasy.

Sprawdzanie działania​

Najłatwiej sprawdzić działanie, gdy publiczny adres IPv4 przed połączeniem Full VPN różni się od publicznego adresu IPv4 węzła Full VPN.

Najpierw przy aktywnym Full VPN sprawdź adres w zwykłym terminalu:

curl -4 https://myip.mudfish.net

Uruchom to samo polecenie przez mudfish-exclude:

sudo mudfish-exclude curl -4 https://myip.mudfish.net

Pierwszy wynik powinien wskazywać adres węzła Mudfish, a drugi — dotychczasowego łącza internetowego. Opcja -4 wymusza sprawdzanie IPv4, zgodnie z zakresem obsługi narzędzia.

Aby sprawdzić to w przeglądarce, całkowicie ją zamknij, uruchom jak poniżej i otwórz https://myip.mudfish.net.

sudo mudfish-exclude firefox

Zamykanie i usuwanie polityki​

Przy prawidłowym zakończeniu nie potrzeba osobnego polecenia porządkowania. Polityka może jednak pozostać po wymuszonym zakończeniu mudfish-exclude, nieprawidłowym zamknięciu terminala lub awarii systemu.

Najpierw zamknij wszystkie programy uruchomione przez narzędzie, a następnie wykonaj:

sudo mudfish-exclude --cleanup

Użycie --cleanup, gdy wykluczony program nadal działa, może natychmiast zakończyć omijanie Mudfish dla tego programu.

Opcje polecenia​

사용법: mudfish-exclude [옵션] 프로그램 [프로그램 옵션...]

Składnia: mudfish-exclude, opcje narzędzia, program, a następnie opcje programu.

OpcjaOpis
-h, --helpWyświetla pomoc.
--setupUstawia tylko politykę sieciową wykluczenia i kończy działanie. Nie można jednocześnie podać programu.
--cleanupUsuwa politykę sieciową wykluczenia i kończy działanie. Nie można jednocześnie podać programu.
--no-setupDołącza do wskazanej cgroup i uruchamia program bez ponownego ustawiania istniejącej polityki.
--cgroup NAMENazwa cgroup v2. Domyślnie mudfish-exclude.
--mark VALUEZnacznik zapory dla pakietów. Domyślnie 0x6d660001.
--priority VALUEPriorytet reguły polityki IPv4. Domyślnie 8252.
--table VALUENumer tablicy routingu zawierającej dotychczasową trasę domyślną. Domyślnie 8252.

Aby jednoznacznie zakończyć interpretowanie opcji, umieść program po --:

sudo mudfish-exclude -- firefox --private-window

Współdzielenie polityki przez kilka programów​

Zwykłym użytkownikom zalecamy osobne pojedyncze uruchomienie dla każdego programu. Jeśli trzeba ręcznie ustawić politykę raz i używać jej w kilku poleceniach:

sudo mudfish-exclude --setup
sudo mudfish-exclude --no-setup discord
sudo mudfish-exclude --no-setup firefox

Po zamknięciu wszystkich programów koniecznie usuń politykę:

sudo mudfish-exclude --cleanup

Tryb ręczny nie usuwa polityki automatycznie. Niektóre aplikacje pulpitu mogą też podczas działania przenosić się do innej cgroup systemd. Dla nich lepszy jest domyślny tryb pojedynczego uruchomienia, który śledzi zmiany cgroup i automatycznie usuwa politykę.

Jeśli zmienisz --cgroup, --mark, --priority lub --table, używaj tych samych wartości przy --setup, --no-setup i --cleanup. Własne wartości nie mogą kolidować z istniejącymi znacznikami zapory ani regułami routingu systemu.

Rozwiązywanie problemów​

mudfish-exclude: command not found​

Plik wykonywalny nie znajduje się w PATH. Znajdź jego położenie i uruchom pełną ścieżką:

ls /opt/mudfish/*/bin/mudfish-exclude
sudo /opt/mudfish/6.5.4/bin/mudfish-exclude discord

W drugim poleceniu dostosuj wersję do zainstalowanej.

network policy setup requires root​

Brak uprawnień do ustawienia polityki sieciowej. Dodaj sudo na początku i spróbuj ponownie:

sudo mudfish-exclude discord

cgroup v2 is required at /sys/fs/cgroup​

System nie używa cgroup v2 lub nie zamontował go w wymaganym miejscu. Sprawdź:

test -f /sys/fs/cgroup/cgroup.controllers && echo "cgroup v2 사용 가능"

Komunikat oznacza dostępność cgroup v2. Jeśli nic się nie wyświetli, sprawdź sposób włączenia cgroup v2 w swojej dystrybucji.

iptables rule add failed lub błąd dopasowania cgroup​

Sprawdź, czy iptables jest zainstalowane oraz czy jądro i iptables obsługują dopasowanie cgroup. Nawet w dystrybucjach opartych na nftables narzędzie bezpośrednio wywołuje zgodne polecenie iptables, więc wymagana jest prawidłowa warstwa zgodności iptables.

failed to find the IPv4 default route​

W tablicy main nie znaleziono domyślnej trasy IPv4 dotychczasowego łącza. Sprawdź, czy wynik zawiera trasę default:

ip -4 route show default table main

Jeśli trasy nie ma lub wskazuje już inny interfejs VPN, mudfish-exclude nie może skonfigurować pierwotnej drogi do Internetu.

Publiczny adres IP nie zmienia się mimo wykluczenia​

Sprawdź kolejno:

  1. Czy Full VPN rzeczywiście jest połączony, a zwykłe uruchomienie pokazuje IP węzła?
  2. Zamknij wszystkie istniejące i działające w tle procesy programu, a następnie uruchom go ponownie.
  3. Użyj curl -4 lub innej metody sprawdzania IPv4, aby nie pomylić wyniku z IPv6.
  4. Czy program przekazuje polecenia oddzielnej usłudze lub już działającemu programowi uruchamiającemu? Polityka dotyczy tylko drzewa procesów nowo utworzonego przez mudfish-exclude.
  5. Czy trasa domyślna z ip -4 route show default table main wskazuje rzeczywisty interfejs internetowy?

Program został zamknięty, ale polecenie w terminalu nie kończy się​

Proces potomny lub działający w tle może nadal działać w wykluczonej cgroup. Zamknij również związane z programem ikony w zasobniku, programy uruchamiające i aktualizatory. Tryb domyślny czeka na zakończenie wszystkich procesów potomnych, a następnie usuwa politykę.

Problemy z siecią po nieprawidłowym zakończeniu​

Zamknij wszystkie programy uruchomione przez narzędzie i usuń pozostałą politykę:

sudo mudfish-exclude --cleanup

Jeśli problem się utrzymuje, zamknij Mudfish, sprawdź systemową trasę domyślną i reguły iptables, a następnie połącz się ponownie.

Zasada działania​

mudfish-exclude umieszcza uruchamiany program w oddzielnej cgroup v2 i oznacza pakiety IPv4 z tej grupy znacznikiem iptables. Pakiety ze znacznikiem przechodzą przez oddzielną tablicę routingu opartego na regułach do trasy domyślnej znalezionej w tablicy main Linux. Stosowany jest również wymagany NAT MASQUERADE.

Nie zmienia to ustawień ani stanu pamięci współdzielonej mudrun, mudflow, mudfish czy mudwfp_proxy. Polityka wykluczenia działa wyłącznie w warstwach cgroup, iptables i routingu IPv4 systemu operacyjnego.