Passa al contenuto principale

Guida a mudfish-exclude

informazioni

Questo programma è disponibile soltanto in Mudfish Cloud VPN 6.5.4 o successivo.

mudfish-exclude è uno strumento da riga di comando per Linux che esegue determinati programmi escludendoli dal percorso Mudfish. È utile soprattutto in modalità Full VPN, quando vuoi che browser, messaggistica, lettori video o strumenti di download inviino il traffico direttamente sulla connessione Internet originale.

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

Nel diagramma, i programmi normali seguono il percorso Mudfish fino al nodo; le applicazioni avviate con mudfish-exclude seguono il percorso predefinito originale verso Internet.

Lo strumento non aggiunge impostazioni alla dashboard. Avvia semplicemente il programma da escludere con mudfish-exclude anziché con il suo comando abituale.

Supporto: attualmente sono supportati soltanto Linux e IPv4. Non è disponibile su Windows, macOS o Android e non applica politiche di esclusione separate al traffico IPv6.

Requisiti​

Sono necessarie tutte le seguenti condizioni.

  • Mudfish per Linux deve essere installato.
  • cgroup v2 deve essere montato su /sys/fs/cgroup.
  • Devono essere disponibili i comandi ip e iptables e la funzione cgroup match di iptables.
  • Devi disporre dei privilegi sudo per configurare routing basato su politiche e regole del firewall.
  • La tabella di routing main di Linux deve contenere un percorso predefinito IPv4 funzionante.

L’eseguibile si trova generalmente qui:

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

Il segnaposto indica la versione di Mudfish. Per trovare il percorso installato:

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

Se l’eseguibile non è nel PATH, sostituisci mudfish-exclude negli esempi con il percorso completo trovato. Ad esempio, per la versione 6.5.4 il percorso predefinito è /opt/mudfish/6.5.4/bin/mudfish-exclude.

Utilizzo di base​

  1. Avvia Mudfish e connetti correttamente gli item desiderati o la modalità Full VPN.
  2. Se il programma da escludere è già in esecuzione, chiudilo completamente, inclusi i processi in background e nell’area di notifica.
  3. Riavvialo dal terminale con questa sintassi:
sudo mudfish-exclude <프로그램> [프로그램 옵션...]

I segnaposto indicano il programma e le sue opzioni. Ad esempio, per escludere Discord:

sudo mudfish-exclude discord

Per escludere Firefox e aprire una finestra privata:

sudo mudfish-exclude firefox --private-window

Se il percorso dell’eseguibile contiene spazi, racchiudilo tra virgolette.

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

sudo serve a configurare le politiche di rete. Il programma avviato con sudo mudfish-exclude ... viene eseguito, quando possibile, con UID, GID, directory home e ambiente della sessione desktop dell’utente originale che ha invocato sudo.

Da sapere​

  • La politica di esclusione si applica ai nuovi processi avviati da mudfish-exclude e ai loro processi figli.
  • Non può essere applicata successivamente a un programma già in esecuzione. Chiudi completamente i programmi a istanza singola, affinché non riutilizzino un processo esistente.
  • Nella modalità normale di esecuzione singola, la politica viene rimossa automaticamente quando terminano il programma e tutti i suoi figli.
  • Puoi eseguire più comandi mudfish-exclude contemporaneamente. La politica condivisa viene rimossa quando termina l’ultimo programma escluso.
  • Il traffico IPv4 dei programmi esclusi non utilizza i nodi Mudfish, le funzioni di accelerazione o l’IP pubblico di quel percorso.

Verifica del funzionamento​

La verifica è più semplice quando l’IPv4 pubblico originale e quello del nodo Full VPN sono diversi.

Prima, con Full VPN connessa, controlla l’indirizzo da un terminale normale.

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

Esegui lo stesso comando con mudfish-exclude.

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

Il primo risultato deve mostrare l’indirizzo del nodo Mudfish e il secondo quello della connessione Internet originale. -4 limita il test a IPv4, coerentemente con il supporto dello strumento.

Per verificare con un browser, chiudilo completamente, avvialo come segue e visita https://myip.mudfish.net.

sudo mudfish-exclude firefox

Uscita e rimozione delle politiche​

In caso di uscita normale, non serve alcun comando di pulizia. Se però mudfish-exclude viene terminato forzatamente, il terminale si chiude in modo anomalo o il sistema si interrompe, possono rimanere delle politiche.

Chiudi prima tutti i programmi avviati con lo strumento, quindi esegui:

sudo mudfish-exclude --cleanup

Se utilizzi --cleanup mentre sono ancora attivi programmi esclusi, la loro esclusione può interrompersi immediatamente.

Opzioni del comando​

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

La sintassi indica: mudfish-exclude, opzioni dello strumento, programma e opzioni del programma.

OpzioneDescrizione
-h, --helpMostra la guida.
--setupConfigura soltanto la politica di esclusione ed esce. Non può essere accompagnata da un programma.
--cleanupRimuove la politica di esclusione ed esce. Non può essere accompagnata da un programma.
--no-setupEntra nel cgroup specificato ed esegue il programma senza riconfigurare la politica esistente.
--cgroup NAMESpecifica il nome del cgroup v2. Il valore predefinito è mudfish-exclude.
--mark VALUESpecifica il mark del firewall da applicare ai pacchetti. Il valore predefinito è 0x6d660001.
--priority VALUESpecifica la priorità della regola IPv4. Il valore predefinito è 8252.
--table VALUESpecifica il numero della tabella di routing che conterrà il percorso predefinito originale. Il valore predefinito è 8252.

Per terminare esplicitamente l’interpretazione delle opzioni, inserisci il programma dopo --.

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

Riutilizzo della politica per più programmi​

Per l’uso normale, consigliamo l’esecuzione singola per ogni programma. Se devi configurare manualmente una politica una sola volta e riutilizzarla con più comandi, procedi così:

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

Dopo aver chiuso tutti i programmi, rimuovi sempre la politica.

sudo mudfish-exclude --cleanup

La modalità manuale non esegue la pulizia automatica. Inoltre, alcuni programmi desktop possono spostarsi in un altro cgroup di systemd durante l’esecuzione. Per questi programmi è più adatta la modalità predefinita di esecuzione singola, che segue gli spostamenti tra cgroup ed esegue la pulizia automatica.

Se modifichi --cgroup, --mark, --priority o --table, utilizza gli stessi valori con --setup, --no-setup e --cleanup. I valori personalizzati non devono entrare in conflitto con mark del firewall o regole di routing già presenti nel sistema.

Risoluzione dei problemi​

mudfish-exclude: command not found​

L’eseguibile non è nel PATH. Individua la posizione installata con il comando seguente, quindi usa il percorso completo.

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

Sostituisci il numero di versione del secondo comando con quello installato.

network policy setup requires root​

Non hai i privilegi necessari per configurare le politiche di rete. Ripeti il comando anteponendo sudo.

sudo mudfish-exclude discord

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

Il sistema non utilizza cgroup v2 oppure non lo ha montato in quella posizione. Verifica con:

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

Se non viene mostrato nulla, consulta le istruzioni della distribuzione per attivare cgroup v2. Il messaggio coreano indica che cgroup v2 è disponibile.

iptables rule add failed o errore cgroup match​

Verifica che iptables sia installato e che il kernel e iptables supportino cgroup match. Anche sulle distribuzioni basate su nftables, lo strumento usa direttamente i comandi compatibili iptables, quindi è necessario un livello di compatibilità iptables funzionante.

failed to find the IPv4 default route​

Non è stato trovato il percorso predefinito IPv4 della connessione Internet originale nella tabella main. Verifica che l’output seguente contenga un percorso default.

ip -4 route show default table main

Se il percorso predefinito manca o punta già a un’altra interfaccia VPN, mudfish-exclude non può configurare il percorso Internet originale.

L’IP pubblico non cambia nonostante l’esclusione​

Verifica nell’ordine:

  1. Full VPN è realmente connessa e l’esecuzione normale mostra l’IP del nodo.
  2. Tutti i processi esistenti e in background del programma sono stati chiusi prima di riavviarlo.
  3. Il test utilizza curl -4 o un altro metodo IPv4, per evitare confusione con IPv6.
  4. Il programma non inoltra i comandi a un servizio separato o a un launcher già attivo. La politica si applica soltanto alla discendenza dei nuovi processi creati da mudfish-exclude.
  5. Il percorso predefinito di ip -4 route show default table main punta all’interfaccia Internet effettiva.

Il programma è chiuso ma il comando nel terminale non termina​

Un processo figlio o in background potrebbe essere ancora attivo nel cgroup escluso. Chiudi anche icone nell’area di notifica, launcher e processi di aggiornamento associati. La modalità predefinita attende la fine di tutti i processi figli prima di rimuovere la politica.

Problemi di rete dopo una chiusura anomala​

Chiudi tutti i programmi avviati con lo strumento, quindi rimuovi le politiche residue.

sudo mudfish-exclude --cleanup

Se il problema persiste, chiudi Mudfish, verifica il percorso predefinito del sistema e le regole iptables, quindi riconnettiti.

Principio di funzionamento​

mudfish-exclude inserisce il programma da eseguire in un cgroup v2 separato e applica un mark iptables ai pacchetti IPv4 generati da quel cgroup. I pacchetti con quel mark vengono inviati, tramite una tabella di routing dedicata, al percorso predefinito trovato nella tabella main di Linux. Viene inoltre applicato il NAT MASQUERADE necessario.

Questa procedura non modifica la configurazione o lo stato della memoria condivisa di mudrun, mudflow, mudfish o mudwfp_proxy. La politica di esclusione agisce soltanto nei livelli cgroup, iptables e routing IPv4 del sistema operativo.