Gå til hovedinnhold

Brukerveiledning for mudfish-exclude

info

Programmet er bare tilgjengelig i Mudfish Cloud VPN 6.5.4 eller nyere.

mudfish-exclude er et kommandolinjeverktøy for Mudfish på Linux som starter bestemte programmer utenfor Mudfish-ruten. Det er særlig nyttig med Full VPN når trafikk fra nettlesere, meldingsprogrammer, videospillere eller nedlastingsverktøy skal gå direkte gjennom den vanlige internettforbindelsen.

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

Diagrammet viser at vanlige programmer følger Mudfish-ruten til en node, mens programmer startet med mudfish-exclude følger den opprinnelige standardruten til internett.

Verktøyet legger ikke til innstillinger i Mudfish-kontrollpanelet. Start programmet som skal unntas, med mudfish-exclude i stedet for den vanlige startkommandoen.

Støtte: Foreløpig støttes bare Linux og IPv4. Verktøyet kan ikke brukes på Windows, macOS eller Android og bruker ingen egen omgåelsespolicy for IPv6-trafikk.

Nødvendig miljø​

Alle følgende krav må være oppfylt:

  • Mudfish for Linux må være installert.
  • cgroup v2 må være montert på /sys/fs/cgroup.
  • Kommandoene ip og iptables, samt iptables-funksjonen cgroup match, må være tilgjengelige.
  • Du må ha sudo-rettigheter for å konfigurere policyruting og brannmurregler.
  • Linux' main-rutingtabell må ha en fungerende IPv4-standardrute.

Programfilen finnes vanligvis her. Den koreanske plassholderen betyr Mudfish-versjon:

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

Finn den aktuelle installasjonsbanen med:

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

Hvis programfilen ikke er registrert i PATH, erstatt mudfish-exclude i eksemplene nedenfor med den fullstendige banen. Standardbanen for 6.5.4 er for eksempel /opt/mudfish/6.5.4/bin/mudfish-exclude.

Grunnleggende bruk​

  1. Start Mudfish, og koble til ønsket element eller Full VPN på vanlig måte.
  2. Hvis programmet som skal unntas, allerede kjører, avslutt det helt, inkludert systemstatusfeltet og bakgrunnsprosesser.
  3. Start programmet på nytt fra terminalen med følgende format. Plassholderne betyr program og programalternativer.
sudo mudfish-exclude <프로그램> [프로그램 옵션...]

For å unnta Discord:

sudo mudfish-exclude discord

For å unnta Firefox og åpne et privat vindu:

sudo mudfish-exclude firefox --private-window

Sett anførselstegn rundt programbanen hvis den inneholder mellomrom:

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

sudo brukes til å konfigurere nettverkspolicyen. Selve programmet som startes med sudo mudfish-exclude ..., kjøres om mulig med UID, GID, hjemmemappe og skrivebordssesjonsmiljø for brukeren som opprinnelig kalte sudo.

Viktig å vite​

  • Unntakspolicyen gjelder den nye prosessen som startes med mudfish-exclude, og dens underprosesser.
  • Policyen kan ikke legges til et program som allerede kjører. Avslutt programmet helt først, slik at et program som bare bruker én instans, ikke gjenbruker en eksisterende prosess.
  • Ved vanlig enkeltkjøring ryddes policyen opp automatisk når programmet og alle underprosesser er avsluttet.
  • Flere mudfish-exclude-kommandoer kan kjøre samtidig. Den felles policyen ryddes opp etter at det siste unntatte programmet avsluttes.
  • IPv4-trafikk fra unntatte programmer bruker ikke Mudfish-noder, akselerasjon eller den offentlige IP-adressen til Mudfish-ruten.

Kontrollere at det fungerer​

Dette er enklest å kontrollere når den offentlige IPv4-adressen før Full VPN er forskjellig fra nodens offentlige IPv4-adresse.

Kontroller først adressen i en vanlig terminal mens Full VPN er tilkoblet:

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

Kjør deretter samme kommando med mudfish-exclude:

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

Det første resultatet skal vise adressen på nodesiden, mens det andre skal vise den vanlige internettforbindelsens adresse. -4 begrenser testen til IPv4, som verktøyet støtter.

For å teste i en nettleser, avslutt nettleseren helt, start den slik, og åpne https://myip.mudfish.net:

sudo mudfish-exclude firefox

Avslutning og opprydding​

Ved normal avslutning trengs ingen egen oppryddingskommando. Policyen kan imidlertid bli liggende igjen hvis mudfish-exclude tvangsavsluttes, terminalen lukkes unormalt eller systemet stopper.

Avslutt først alle programmer som er startet med verktøyet, og kjør:

sudo mudfish-exclude --cleanup

Hvis du bruker --cleanup mens unntatte programmer fortsatt kjører, kan omgåelsen deres stoppe umiddelbart.

Kommandoalternativer​

Bruksformatet nedenfor viser alternativer, program og programalternativer:

사용법: mudfish-exclude [옵션] 프로그램 [프로그램 옵션...]
AlternativBeskrivelse
-h, --helpVis hjelp.
--setupKonfigurer bare nettverkspolicyen for unntak, og avslutt. Kan ikke kombineres med et program.
--cleanupFjern nettverkspolicyen for unntak, og avslutt. Kan ikke kombineres med et program.
--no-setupGå inn i angitt cgroup og kjør programmet uten å konfigurere policyen på nytt.
--cgroup NAMEAngi cgroup v2-navnet. Standardverdien er mudfish-exclude.
--mark VALUEAngi brannmurmerket for pakkene. Standardverdien er 0x6d660001.
--priority VALUEAngi prioriteten for IPv4-policyregelen. Standardverdien er 8252.
--table VALUEAngi nummeret på rutingtabellen som skal inneholde den opprinnelige standardruten. Standardverdien er 8252.

Sett programmet etter -- for å avslutte tolkningen av alternativer uttrykkelig:

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

Gjenbruke policyen for flere programmer​

Vanlige brukere anbefales å starte hvert program separat på standardmåten. Hvis du trenger å konfigurere policyen manuelt én gang og gjenbruke den i flere kommandoer, kan du gjøre følgende:

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

Etter at alle programmene er avsluttet, må policyen ryddes opp:

sudo mudfish-exclude --cleanup

Den manuelle metoden rydder ikke opp automatisk. Enkelte skrivebordsprogrammer kan også flytte til en annen systemd-cgroup under kjøring. For slike programmer passer standardmetoden bedre, siden den følger cgroup-flytting og rydder opp automatisk.

Hvis du endrer --cgroup, --mark, --priority eller --table, må de samme verdiene brukes med --setup, --no-setup og --cleanup. Egendefinerte verdier må ikke komme i konflikt med eksisterende brannmurmerker eller policyrutingsregler.

Feilsøking​

mudfish-exclude: command not found​

Programfilen finnes ikke i PATH. Finn installasjonsbanen, og kjør den med fullstendig bane:

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

Tilpass versjonsnummeret i den andre kommandoen til den installerte versjonen.

network policy setup requires root​

Du mangler rettigheter til å konfigurere nettverkspolicyen. Sett sudo foran kommandoen, og prøv igjen:

sudo mudfish-exclude discord

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

Systemet bruker ikke cgroup v2, eller det er ikke montert på forventet sted. Kontroller med følgende kommando; den koreanske teksten betyr at cgroup v2 er tilgjengelig:

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

Hvis ingenting skrives ut, undersøk hvordan cgroup v2 aktiveres i distribusjonen din.

iptables rule add failed eller cgroup match-feil​

Kontroller at iptables er installert, og at både kjernen og iptables støtter cgroup match. Verktøyet bruker iptables-kompatible kommandoer direkte også på nftables-baserte distribusjoner, så et fungerende kompatibilitetslag kreves.

failed to find the IPv4 default route​

Verktøyet fant ikke den opprinnelige internettforbindelsens IPv4-standardrute i main-rutingtabellen. Kontroller at følgende kommando viser en default-rute:

ip -4 route show default table main

Hvis standardruten mangler eller allerede peker til et annet VPN-grensesnitt, kan mudfish-exclude ikke sette opp den opprinnelige internettruten.

Den offentlige IP-adressen endres ikke selv om programmet er unntatt​

Kontroller følgende i rekkefølge:

  1. At Full VPN faktisk er tilkoblet, og at vanlig kjøring viser nodens IP-adresse.
  2. Avslutt alle eksisterende prosesser og bakgrunnsprosesser for målprogrammet, og start det på nytt.
  3. Bruk curl -4 eller en annen IPv4-test for å unngå å forveksle resultatet med IPv6.
  4. Kontroller om programmet sender kommandoen videre til en egen tjeneste eller en launcher som allerede kjører. Unntakspolicyen gjelder bare prosessrekken som mudfish-exclude oppretter.
  5. Kontroller at standardruten i ip -4 route show default table main peker til det faktiske internettgrensesnittet.

Terminalkommandoen avsluttes ikke selv om programmet er lukket​

Underprosesser eller bakgrunnsprosesser kan fortsatt kjøre i unntakets cgroup. Avslutt også tilknyttede systemstatusfeltikoner, launchere og oppdateringsprosesser. Standardmetoden venter på at alle underprosesser avsluttes før policyen ryddes opp.

Nettverket oppfører seg unormalt etter en uventet avslutning​

Avslutt alle programmer startet med verktøyet, og rydd opp gjenværende policy:

sudo mudfish-exclude --cleanup

Hvis problemet vedvarer, avslutt Mudfish, kontroller systemets standardrute og iptables-regler, og koble til igjen.

Hvordan det fungerer​

mudfish-exclude plasserer programmet i en egen cgroup v2 og merker IPv4-pakker fra denne gruppen med iptables. Pakker med dette merket sendes gjennom en egen policyrutingstabell til standardruten som ble funnet i Linux' main-rutingtabell. Nødvendig NAT MASQUERADE brukes også.

Prosessen endrer ikke innstillingene eller det delte minnet for mudrun, mudflow, mudfish eller mudwfp_proxy. Unntakspolicyen virker bare i operativsystemets cgroup-, iptables- og IPv4-policyrutingslag.