Podręcznik mudfish-exclude
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,iptablesi funkcja dopasowania cgroup w iptables. - Uprawnienia
sudodo 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
- Uruchom Mudfish i prawidłowo połącz wybraną pozycję lub tryb Full VPN.
- Jeśli wykluczany program już działa, całkowicie go zamknij, włącznie z ikoną w zasobniku i procesami w tle.
- 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-excludei 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-excludejednocześ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.
| Opcja | Opis |
|---|---|
-h, --help | Wyświetla pomoc. |
--setup | Ustawia tylko politykę sieciową wykluczenia i kończy działanie. Nie można jednocześnie podać programu. |
--cleanup | Usuwa politykę sieciową wykluczenia i kończy działanie. Nie można jednocześnie podać programu. |
--no-setup | Dołącza do wskazanej cgroup i uruchamia program bez ponownego ustawiania istniejącej polityki. |
--cgroup NAME | Nazwa cgroup v2. Domyślnie mudfish-exclude. |
--mark VALUE | Znacznik zapory dla pakietów. Domyślnie 0x6d660001. |
--priority VALUE | Priorytet reguły polityki IPv4. Domyślnie 8252. |
--table VALUE | Numer 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:
- Czy Full VPN rzeczywiście jest połączony, a zwykłe uruchomienie pokazuje IP węzła?
- Zamknij wszystkie istniejące i działające w tle procesy programu, a następnie uruchom go ponownie.
- Użyj
curl -4lub innej metody sprawdzania IPv4, aby nie pomylić wyniku z IPv6. - 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. - Czy trasa domyślna z
ip -4 route show default table mainwskazuje 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.