Hoppa till huvudinnehåll

Användarguide för mudfish-exclude

info

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 ip och iptables samt 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​

  1. Starta Mudfish och anslut som vanligt med önskat objekt eller Full VPN.
  2. Om programmet som ska undantas redan körs avslutar du det helt, även processer i systemfältet och bakgrunden.
  3. 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-exclude och 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 --cleanup medan 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.

AlternativBeskrivning
-h, --helpVisa hjälp.
--setupKonfigurera endast nätverkspolicyn för undantag och avsluta. Får inte kombineras med ett program.
--cleanupTa bort nätverkspolicyn för undantag och avsluta. Får inte kombineras med ett program.
--no-setupGå in i angiven cgroup och starta programmet utan att konfigurera om den befintliga policyn.
--cgroup NAMEAnge cgroup v2-namnet. Standard är mudfish-exclude.
--mark VALUEAnge brandväggsmarkeringen för paketen. Standard är 0x6d660001.
--priority VALUEAnge prioriteten för IPv4-policyregeln. Standard är 8252.
--table VALUEAnge 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:

  1. Full VPN är faktiskt anslutet och en vanlig körning visar nodens IP-adress.
  2. Alla befintliga processer och bakgrundsprocesser för programmet har avslutats innan det startas om.
  3. Använd curl -4 eller en annan IPv4-kontroll så att resultatet inte förväxlas med IPv6.
  4. 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-exclude skapar.
  5. Kontrollera att standardrutten från ip -4 route show default table main pekar 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.