Användarguide för mudfish-exclude
Programmet är endast tillgängligt i Mudfish Cloud VPN 6.5.4 eller senare.
mudfish-exclude är ett kommandoradsverktyg för Linux som startar enskilda program utanför Mudfishs nätverksväg. Det är särskilt användbart med Full VPN när du vill skicka trafiken från exempelvis en webbläsare, meddelandeapp, videospelare eller nedladdningsverktyg direkt via den vanliga internetanslutningen.
일반 프로그램 -> 미꾸라지 경로 -> 중계 서버
mudfish-exclude 앱 -> 기존 기본 경로 -> 인터넷
Diagrammet visar att vanliga program går via Mudfish till noden, medan program som startas med mudfish-exclude följer den tidigare standardrutten till internet.
Verktyget lägger inte till några inställningar i Mudfishs översikt. Starta helt enkelt programmet med mudfish-exclude i stället för det vanliga startkommandot.
Stöd: för närvarande endast Linux och IPv4. Verktyget kan inte användas på Windows, macOS eller Android och tillämpar ingen särskild förbikopplingspolicy på IPv6-trafik.
Krav
Alla följande villkor måste vara uppfyllda:
- Mudfish för Linux måste vara installerat.
- cgroup v2 måste vara monterat på
/sys/fs/cgroup. - Kommandona
ipochiptablessamt cgroup-matchning i iptables måste vara tillgängliga. - Du behöver
sudo-behörighet för att konfigurera policyroutning och brandväggsregler. - Linux huvudroutningstabell, main, måste ha en fungerande IPv4-standardrutt.
Den installerade körbara filen finns normalt här:
/opt/mudfish/<미꾸라지 버전>/bin/mudfish-exclude
Platshållaren anger Mudfish-versionen. Hitta den aktuella installationssökvägen med:
ls /opt/mudfish/*/bin/mudfish-exclude
Om filen inte finns i PATH ersätter du mudfish-exclude i exemplen nedan med den fullständiga sökvägen. Standardsökvägen för version 6.5.4 är exempelvis /opt/mudfish/6.5.4/bin/mudfish-exclude.
Grundläggande användning
- Starta Mudfish och anslut som vanligt med önskat objekt eller Full VPN.
- Om programmet som ska undantas redan körs avslutar du det helt, även processer i systemfältet och bakgrunden.
- Starta om programmet från en terminal med följande format:
sudo mudfish-exclude <프로그램> [프로그램 옵션...]
Platshållarna anger programmet och dess alternativ. För att undanta Discord kör du exempelvis:
sudo mudfish-exclude discord
För att undanta Firefox och öppna ett privat fönster:
sudo mudfish-exclude firefox --private-window
Om sökvägen innehåller blanksteg sätter du den inom citattecken:
sudo mudfish-exclude "/path/to/My Program" --option
sudo används för att konfigurera nätverkspolicyn. Själva programmet som startas med sudo mudfish-exclude ... körs när det är möjligt med den ursprungliga användarens UID, GID, hemkatalog och skrivbordssessionsmiljö.
Bra att veta
- Undantaget gäller processen som startas med
mudfish-excludeoch dess barnprocesser. - Policyn kan inte läggas till i efterhand på ett program som redan körs. Avsluta därför program som bara tillåter en instans helt, så att en befintlig process inte återanvänds.
- Vid vanlig engångskörning tas policyn automatiskt bort när programmet och alla barnprocesser har avslutats.
- Flera
mudfish-exclude-kommandon kan köras samtidigt. Den gemensamma policyn tas bort efter att det sista undantagna programmet avslutas. - Det undantagna programmets IPv4-trafik använder varken Mudfish-noder, accelerationsfunktioner eller den publika IP-adressen på Mudfish-rutten.
Kontrollera att det fungerar
Det är enklast att kontrollera när din publika IPv4-adress före Full VPN skiljer sig från Full VPN-nodens publika IPv4-adress.
Kontrollera först adressen i en vanlig terminal med Full VPN anslutet:
curl -4 https://myip.mudfish.net
Kör sedan samma kommando med mudfish-exclude:
sudo mudfish-exclude curl -4 https://myip.mudfish.net
Det första resultatet ska visa Mudfish-nodens adress och det andra den vanliga internetanslutningens adress. -4 begränsar kontrollen till IPv4, som verktyget stöder.
För att kontrollera i en webbläsare avslutar du webbläsaren helt, startar den enligt nedan och öppnar https://myip.mudfish.net:
sudo mudfish-exclude firefox
Avsluta och ta bort policyn
Vid normal avslutning behövs inget separat städkommando. Policyn kan dock bli kvar om mudfish-exclude tvångsavslutas, terminalen stängs onormalt eller systemet avbryts.
Avsluta först alla program som startats med verktyget och kör sedan:
sudo mudfish-exclude --cleanup
Om du använder
--cleanupmedan undantagna program körs kan deras förbikoppling upphöra omedelbart.
Kommandoalternativ
사용법: mudfish-exclude [옵션] 프로그램 [프로그램 옵션...]
Syntaxen ovan är: mudfish-exclude, verktygets alternativ, programmet och därefter programmets alternativ.
| Alternativ | Beskrivning |
|---|---|
-h, --help | Visa hjälp. |
--setup | Konfigurera endast nätverkspolicyn för undantag och avsluta. Får inte kombineras med ett program. |
--cleanup | Ta bort nätverkspolicyn för undantag och avsluta. Får inte kombineras med ett program. |
--no-setup | Gå in i angiven cgroup och starta programmet utan att konfigurera om den befintliga policyn. |
--cgroup NAME | Ange cgroup v2-namnet. Standard är mudfish-exclude. |
--mark VALUE | Ange brandväggsmarkeringen för paketen. Standard är 0x6d660001. |
--priority VALUE | Ange prioriteten för IPv4-policyregeln. Standard är 8252. |
--table VALUE | Ange numret på routningstabellen som ska innehålla den tidigare standardrutten. Standard är 8252. |
Sätt programmet efter -- för att uttryckligen avsluta tolkningen av verktygets alternativ:
sudo mudfish-exclude -- firefox --private-window
Återanvänd policyn för flera program
Vanliga användare rekommenderas att använda engångskörningen för varje program. Om du behöver konfigurera policyn manuellt en gång och återanvända den för flera kommandon kan du göra så här:
sudo mudfish-exclude --setup
sudo mudfish-exclude --no-setup discord
sudo mudfish-exclude --no-setup firefox
Ta alltid bort policyn efter att alla program har avslutats:
sudo mudfish-exclude --cleanup
Det manuella sättet städar inte automatiskt. Vissa skrivbordsprogram kan dessutom flytta till en annan systemd-cgroup under körning. För sådana program passar den vanliga engångskörningen bättre, eftersom den följer cgroup-flyttar och städar automatiskt.
Om du ändrar --cgroup, --mark, --priority eller --table måste samma värden användas med --setup, --no-setup och --cleanup. Egna värden får inte kollidera med befintliga brandväggsmarkeringar eller policyroutningsregler.
Felsökning
mudfish-exclude: command not found
Den körbara filen finns inte i PATH. Hitta installationsplatsen och kör sedan med fullständig sökväg:
ls /opt/mudfish/*/bin/mudfish-exclude
sudo /opt/mudfish/6.5.4/bin/mudfish-exclude discord
Ändra versionsnumret i det andra kommandot till din installerade version.
network policy setup requires root
Du saknar behörighet att konfigurera nätverkspolicyn. Kör igen med sudo framför kommandot:
sudo mudfish-exclude discord
cgroup v2 is required at /sys/fs/cgroup
Systemet använder inte cgroup v2, eller har inte monterat det på den platsen. Kontrollera med:
test -f /sys/fs/cgroup/cgroup.controllers && echo "cgroup v2 사용 가능"
Kommandot skriver ut att cgroup v2 är tillgängligt om kontrollen lyckas. Om inget visas behöver du kontrollera hur cgroup v2 aktiveras i din distribution.
iptables rule add failed eller fel med cgroup-matchning
Kontrollera att iptables är installerat och att kärnan och iptables stöder cgroup-matchning. Även på distributioner som använder nftables anropar verktyget de kompatibla iptables-kommandona direkt, så ett fungerande kompatibilitetslager behövs.
failed to find the IPv4 default route
Ingen IPv4-standardrutt för den vanliga internetanslutningen hittades i huvudtabellen main. Kontrollera att resultatet innehåller en default-rutt:
ip -4 route show default table main
Om standardrutten saknas eller redan pekar mot ett annat VPN-gränssnitt kan mudfish-exclude inte konfigurera den ursprungliga internetvägen.
Den publika IP-adressen ändras inte trots undantaget
Kontrollera följande i ordning:
- Full VPN är faktiskt anslutet och en vanlig körning visar nodens IP-adress.
- Alla befintliga processer och bakgrundsprocesser för programmet har avslutats innan det startas om.
- Använd
curl -4eller en annan IPv4-kontroll så att resultatet inte förväxlas med IPv6. - Kontrollera om programmet lämnar kommandot vidare till en separat tjänst eller en redan startad launcher. Undantaget gäller bara processträdet som
mudfish-excludeskapar. - Kontrollera att standardrutten från
ip -4 route show default table mainpekar mot det riktiga internetgränssnittet.
Terminalkommandot avslutas inte när programmet stängs
Barnprocesser eller bakgrundsprocesser kan fortfarande köras i undantagets cgroup. Avsluta även tillhörande program i systemfältet, launchers och uppdateringsprocesser. Standardkörningen väntar tills alla barnprocesser har avslutats innan policyn tas bort.
Nätverket fungerar konstigt efter en onormal avslutning
Avsluta alla program som startats med verktyget och ta bort den kvarvarande policyn:
sudo mudfish-exclude --cleanup
Om problemet kvarstår avslutar du Mudfish, kontrollerar systemets standardrutt och iptables-regler och ansluter igen.
Så fungerar det
mudfish-exclude placerar programmet i en separat cgroup v2 och markerar dess IPv4-paket med iptables. Paketen med den markeringen skickas via en separat policyroutningstabell till standardrutten som hittats i Linux huvudtabell main. Nödvändig NAT MASQUERADE tillämpas också.
Detta ändrar inte inställningarna eller det delade minnestillståndet för mudrun, mudflow, mudfish eller mudwfp_proxy. Undantagspolicyn arbetar enbart i operativsystemets lager för cgroup, iptables och IPv4-policyroutning.