Aller au contenu principal

Guide de mudfish-exclude

info

Ce programme nécessite Mudfish Cloud VPN 6.5.4 ou une version ultérieure.

mudfish-exclude est un outil en ligne de commande pour Linux qui lance certains programmes en les excluant du chemin Mudfish. Il est notamment utile en mode Full VPN pour envoyer directement sur votre connexion Internet habituelle le trafic d’un navigateur, d’une messagerie, d’un lecteur vidéo ou d’un outil de téléchargement.

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

Dans le schéma ci-dessus, un programme ordinaire suit le chemin Mudfish jusqu’au nœud relais ; une application lancée avec mudfish-exclude suit la route par défaut d’origine vers Internet.

Cet outil n’ajoute aucun paramètre au tableau de bord Mudfish. Lancez simplement le programme à exclure avec mudfish-exclude au lieu de sa commande habituelle.

Compatibilité : seuls Linux et IPv4 sont actuellement pris en charge. L’outil n’est pas disponible sous Windows, macOS ou Android, et n’applique aucune politique de contournement spécifique au trafic IPv6.

Prérequis​

Toutes les conditions suivantes sont nécessaires.

  • Mudfish pour Linux doit être installé.
  • cgroup v2 doit être monté sur /sys/fs/cgroup.
  • Les commandes ip et iptables, ainsi que la correspondance cgroup d’iptables, doivent être disponibles.
  • Vous devez disposer des droits sudo pour configurer le routage par politique et les règles de pare-feu.
  • La table de routage main de Linux doit contenir une route IPv4 par défaut fonctionnelle.

L’exécutable est généralement installé à l’emplacement suivant, où le texte entre chevrons désigne la version de Mudfish :

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

Pour trouver son emplacement actuel :

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

Si l’exécutable ne figure pas dans PATH, remplacez mudfish-exclude dans les exemples suivants par son chemin complet. Pour la version 6.5.4, le chemin par défaut est /opt/mudfish/6.5.4/bin/mudfish-exclude.

Utilisation de base​

  1. Lancez Mudfish et connectez normalement les articles souhaités ou le mode Full VPN.
  2. Si le programme à exclure est déjà ouvert, fermez-le complètement, y compris ses processus en arrière-plan et son icône de notification.
  3. Relancez-le depuis le terminal avec la syntaxe suivante, en indiquant le programme et ses options :
sudo mudfish-exclude <프로그램> [프로그램 옵션...]

Pour exclure Discord :

sudo mudfish-exclude discord

Pour exclure Firefox et ouvrir une fenêtre privée :

sudo mudfish-exclude firefox --private-window

Si le chemin de l’exécutable contient des espaces, entourez-le de guillemets.

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

sudo sert à configurer la politique réseau. Le programme lancé par sudo mudfish-exclude ... utilise lui-même, dans la mesure du possible, l’UID, le GID, le dossier personnel et l’environnement de session graphique de l’utilisateur ayant appelé sudo.

À savoir​

  • L’exclusion s’applique au nouveau processus créé par mudfish-exclude et à ses processus enfants.
  • Elle ne peut pas être ajoutée après coup à un programme déjà lancé. Fermez complètement les applications à instance unique afin qu’elles ne réutilisent pas un processus existant.
  • Avec le mode d’exécution habituel, la politique est automatiquement nettoyée une fois le programme et tous ses enfants terminés.
  • Plusieurs commandes mudfish-exclude peuvent fonctionner simultanément. La politique commune est nettoyée après l’arrêt du dernier programme exclu.
  • Le trafic IPv4 d’un programme exclu n’utilise ni les nœuds Mudfish, ni leur accélération, ni l’adresse IP publique de ce chemin.

Vérifier le fonctionnement​

La vérification est plus simple si votre adresse IPv4 publique avant Full VPN diffère de celle du nœud Full VPN.

Avec Full VPN connecté, vérifiez d’abord l’adresse dans un terminal ordinaire :

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

Exécutez ensuite la même commande avec mudfish-exclude :

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

Le premier résultat doit être l’adresse du nœud Mudfish, le second celle de votre connexion Internet d’origine. L’option -4 limite le test à IPv4, conformément à la compatibilité de l’outil.

Pour vérifier avec un navigateur, fermez-le complètement, relancez-le comme suit et ouvrez https://myip.mudfish.net.

sudo mudfish-exclude firefox

Arrêt et nettoyage de la politique​

Aucune commande de nettoyage n’est nécessaire après un arrêt normal. Une politique peut toutefois subsister si mudfish-exclude est arrêté de force, si le terminal se ferme anormalement ou si le système s’interrompt.

Fermez d’abord tous les programmes lancés avec cet outil, puis exécutez :

sudo mudfish-exclude --cleanup

L’utilisation de --cleanup pendant qu’un programme exclu fonctionne peut interrompre immédiatement son contournement de Mudfish.

Options de commande​

La syntaxe suivante indique les options de l’outil, puis le programme et ses options :

사용법: mudfish-exclude [옵션] 프로그램 [프로그램 옵션...]
OptionDescription
-h, --helpAffiche l’aide.
--setupConfigure uniquement la politique réseau d’exclusion, puis quitte. Aucun programme ne peut être indiqué.
--cleanupSupprime la politique réseau d’exclusion, puis quitte. Aucun programme ne peut être indiqué.
--no-setupEntre dans le cgroup indiqué et lance le programme sans reconfigurer la politique existante.
--cgroup NAMENom du cgroup v2 à utiliser. Par défaut, mudfish-exclude.
--mark VALUEMarque de pare-feu à appliquer aux paquets. Par défaut, 0x6d660001.
--priority VALUEPriorité de la règle de politique IPv4. Par défaut, 8252.
--table VALUENuméro de la table de routage contenant la route par défaut d’origine. Par défaut, 8252.

Pour terminer explicitement l’analyse des options, placez le programme après --.

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

Réutiliser une politique pour plusieurs programmes​

L’exécution habituelle, une commande par programme, est recommandée. Si vous devez configurer manuellement une politique une seule fois et la réutiliser dans plusieurs commandes :

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

Après avoir fermé tous les programmes, nettoyez impérativement la politique.

sudo mudfish-exclude --cleanup

Le mode manuel n’effectue pas de nettoyage automatique. Certaines applications de bureau peuvent aussi passer dans un autre cgroup systemd pendant leur exécution. Le mode habituel, qui suit ces déplacements et nettoie automatiquement la politique, leur convient mieux.

Si vous modifiez --cgroup, --mark, --priority ou --table, utilisez les mêmes valeurs pour --setup, --no-setup et --cleanup. Les valeurs personnalisées ne doivent pas entrer en conflit avec les marques de pare-feu ou les règles de routage par politique existantes.

Dépannage​

mudfish-exclude: command not found​

L’exécutable n’est pas dans PATH. Trouvez son emplacement et lancez-le avec son chemin complet.

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

Adaptez le numéro de version de la deuxième commande à la version installée.

network policy setup requires root​

Vous ne disposez pas des droits nécessaires à la configuration de la politique réseau. Relancez la commande avec sudo.

sudo mudfish-exclude discord

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

Le système n’utilise pas cgroup v2, ou celui-ci n’est pas monté à l’emplacement attendu. Vérifiez avec :

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

Le message coréen signifie que cgroup v2 est disponible. Si rien ne s’affiche, consultez la procédure d’activation de cgroup v2 de votre distribution.

iptables rule add failed ou erreur de correspondance cgroup​

Vérifiez qu’iptables est installé et que le noyau et iptables prennent en charge la correspondance cgroup. Même sur une distribution basée sur nftables, cet outil appelle directement les commandes de compatibilité iptables : une couche de compatibilité fonctionnelle est donc nécessaire.

failed to find the IPv4 default route​

La route IPv4 par défaut de la connexion Internet d’origine est introuvable dans la table main. Vérifiez que la commande suivante affiche une route default.

ip -4 route show default table main

Si elle est absente ou pointe déjà vers une autre interface VPN, mudfish-exclude ne peut pas configurer le chemin Internet d’origine.

L’adresse IP publique ne change pas malgré l’exclusion​

Vérifiez successivement :

  1. Que Full VPN est réellement connecté et qu’une exécution ordinaire affiche l’IP du nœud.
  2. Que tous les processus existants et en arrière-plan du programme cible ont été fermés avant son nouveau lancement.
  3. Que vous utilisez curl -4 ou un autre test IPv4 afin de ne pas confondre le résultat avec IPv6.
  4. Que le programme ne transmet pas ses commandes à un service distinct ou à un lanceur déjà ouvert. L’exclusion s’applique uniquement à la descendance des processus nouvellement créés par mudfish-exclude.
  5. Que la route par défaut affichée par ip -4 route show default table main pointe vers la véritable interface Internet.

La commande du terminal ne se termine pas après la fermeture du programme​

Un processus enfant ou en arrière-plan fonctionne peut-être encore dans le cgroup d’exclusion. Fermez aussi les icônes de notification, lanceurs et processus de mise à jour associés. Le mode habituel attend la fin de tous les processus enfants avant de nettoyer la politique.

Le réseau fonctionne mal après un arrêt anormal​

Fermez tous les programmes lancés avec l’outil, puis nettoyez la politique restante.

sudo mudfish-exclude --cleanup

Si le problème persiste, quittez Mudfish, vérifiez la route par défaut du système et les règles iptables, puis reconnectez-vous.

Fonctionnement interne​

mudfish-exclude place le programme dans un cgroup v2 distinct et applique une marque iptables aux paquets IPv4 produits par ce groupe. Les paquets marqués sont envoyés, via une table de routage par politique distincte, vers la route par défaut trouvée dans la table main de Linux. Le NAT MASQUERADE nécessaire est appliqué.

Cette opération ne modifie ni la configuration ni la mémoire partagée de mudrun, mudflow, mudfish ou mudwfp_proxy. L’exclusion fonctionne uniquement dans les couches cgroup, iptables et routage par politique IPv4 du système d’exploitation.