メインコンテンツまでスキップ

mudfish-excludeユーザーガイド

備考

このプログラムは Mudfish Cloud VPN 6.5.4 以降でのみ利用可能です。

mudfish-excludeは、Linux用Mudfishの特定のプログラムのみをMudfishパスから除外して実行するコマンドラインツールです。特に、Full VPNモードを使用しながら、ブラウザ、メッセンジャー、ビデオプレーヤー、ダウンロードツールなどのトラフィックは、既存のインターネット回線に直接送信したい場合に使用できます。

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

このツールはMudfishダッシュボードに設定を追加しません。除外するプログラムを通常の実行コマンドの代わりに mudfish-excludeで始まるだけです。

サポート範囲: 現在、LinuxとIPv4のみをサポートしています。 Windows、macOS、Androidでは使用できず、IPv6トラフィックには別のバイパスポリシーは適用されません。

必要な環境​

次の条件がすべて必要です。

  • Linux用Mudfishがインストールされている必要があります。
  • cgroup v2 /sys/fs/cgroupにマウントされている必要があります。
  • ipと iptables コマンドとiptablesのcgroup match機能が利用可能である必要があります。
  • ポリシールーティングとファイアウォールルールを設定できるようにする sudo 権限が必要です。
  • Linuxのメインルーティングテーブルには通常のIPv4デフォルトパスが必要です。

インストールされた実行可能ファイルは通常、次の場所にあります。

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

現在のインストール・パスは、次のコマンドで見つけることができます。

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

実行可能ファイル PATHに登録されていない場合は、以下の例の mudfish-excludeを上記で確認したフルパスに置き換えます。たとえば、バージョン6.5.4のデフォルトのインストールパスは、 /opt/mudfish/6.5.4/bin/mudfish-excludeです。

基本使用法​

  1. Mudfishを実行し、目的のアイテムまたはFull VPNモードを正常に接続します。
  2. 除外するプログラムがすでに実行されている場合は、トレイまたはバックグラウンドプロセスまで完全に終了します。
  3. 端末で次の形式でプログラムを再実行します。
sudo mudfish-exclude <프로그램> [프로그램 옵션...]

たとえば、Discord を Mudfish から除外するには、次のように実行します。

sudo mudfish-exclude discord

Firefoxを除いてプライバシーウィンドウを開くには、次のように実行します。

sudo mudfish-exclude firefox --private-window

実行可能ファイルのパスにスペースがある場合は、引用符で囲みます。

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

sudoはネットワークポリシーを設定するために使用されます。 sudo mudfish-exclude ...で実行したプログラム自体は、可能な場合 sudoを呼び出した元のユーザーのUID、GID、ホームディレクトリ、およびデスクトップセッション環境で実行されます。

知っておくべき点​

  • 除外ポリシーは mudfish-excludeで新しく開始されたプロセスとその子プロセスに適用されます。
  • すでに実行されているプログラムにポリシーを後で付けることはできません。シングルインスタンスプログラムが既存のプロセスを再利用しないようにするには、まず完全にシャットダウンする必要があります。
  • 通常の1回実行方法では、プログラムと子プロセスの両方が終了すると、ポリシーは自動的にクリーンアップされます。
  • 複数 mudfish-exclude コマンドを同時に実行できます。共通ポリシーは、最後の除外プログラムが終了した後にクリーンアップされます。
  • 除外されたプログラムのIPv4トラフィックは、Mudfish中継サーバー、アクセラレーション機能、およびそのパスの正規IPを使用しません。

正常動作確認​

Full VPN 接続前の認定 IPv4 アドレスと Full VPN 中継サーバーの認定 IPv4 アドレスが異なる場合に最も簡単に確認できます。

まず、Full VPNが接続されている一般端末でアドレスを確認します。

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

のようなコマンド mudfish-excludeで実行します。

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

最初の結果はMudfish中継サーバー側アドレス、2番目の結果は既存のインターネット回線のアドレスとして表示する必要があります。 -4は、このツールのサポート範囲に合わせてIPv4でのみチェックするためのオプションです。

ブラウザで確認するときは、ブラウザを完全に終了してから次のように実行してください。 https://myip.mudfish.netに接続してください。

sudo mudfish-exclude firefox

終了とポリシーのクリーンアップ​

正常終了時に別途クリーンアップコマンドは必要ありません。ただ mudfish-exclude プロセスを強制終了した場合、端末が異常終了した場合、またはシステムがハングしている場合は、ポリシーが残ることがあります。

最初にこのツールで実行されたプログラムをすべて終了し、次のコマンドを実行します。

sudo mudfish-exclude --cleanup

実行中の除外プログラムがある場合 --cleanupを使用すると、プログラムのバイパスがすぐに中断される可能性があります。

コマンド・オプション​

사용법: mudfish-exclude [옵션] 프로그램 [프로그램 옵션...]
オプション説明
-h, --helpヘルプを出力します。
--setup除外用のネットワークポリシーのみを設定して終了します。プログラムを一緒に指定することはできません。
--cleanup除外用のネットワークポリシーを削除して終了します。プログラムを一緒に指定することはできません。
--no-setup既存のポリシーをリセットせずに指定したcgroupに入り、プログラムを実行します。
--cgroup NAME使用する cgroup v2 名を指定します。デフォルトは mudfish-excludeです。
--mark VALUEパケットに使用するファイアウォールマークを指定します。デフォルトは 0x6d660001です。
--priority VALUEIPv4ポリシー・ルールの優先順位を指定します。デフォルトは 8252です。
--table VALUE既存の基本パスを保持するルーティングテーブル番号を指定します。デフォルトは 8252です。

オプションの解釈を明確にするには -- の後にプログラムを書き込むことができます。

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

複数のプログラムでポリシーを再利用する​

一般ユーザーは、プログラムごとに1回実行する方法をお勧めします。ポリシーを手動で一度設定した後に複数のコマンドで再利用する必要がある場合は、次の順序で実行できます。

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

すべてのプログラムを終了してからポリシーをクリーンアップします。

sudo mudfish-exclude --cleanup

手動方式は自動クリーンアップを行いません。また、一部のデスクトッププログラムは、実行中にsystemdの他のcgroupに移動する可能性があるため、これらのプログラムでは、cgroupの移動を追跡して自動クリーンアップする基本的な1回の実行方法がより適しています。

--cgroup, --mark, --priority, --table の値を変更した場合 --setup, --no-setup, --cleanupですべて同じ値を使用する必要があります。カスタム値は、システムの既存のファイアウォールマークまたはポリシールーティングルールと競合しないでください。

トラブルシューティング​

mudfish-exclude: command not found​

実行可能ファイル PATHに含まれていません。次のコマンドでインストール場所を見つけて、フルパスで実行します。

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

2番目のコマンドのバージョン番号は、インストールされているバージョンに合わせて置き換える必要があります。

network policy setup requires root​

ネットワーク・ポリシーの設定権限がありません。コマンドの前に sudoを貼り付けて再実行してください。

sudo mudfish-exclude discord

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

現行システムは cgroup v2 を使用していないか、その場所にマウントしていません。次のコマンドで確認できます。

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

何も出力されない場合は、ディストリビューションの cgroup v2 を有効にする方法を確認する必要があります。

iptables rule add failed またはcgroup matchエラー​

iptablesがインストールされていること、カーネルとiptablesがcgroup matchをサポートしていることを確認してください。 nftablesベースのディストリビューションでも、このツールは iptables 互換コマンドを直接使用するため、通常のiptables互換層が必要です。

failed to find the IPv4 default route​

main ルーティングテーブルで既存のインターネット回線の IPv4 デフォルトルートが見つからない状態です。次のコマンドの結果 default パスがあることを確認してください。

ip -4 route show default table main

デフォルトパスがない場合、またはすでに別の VPN インターフェイスを指している場合 mudfish-excludeは元のインターネットパスを設定できません。

除外してもパブリック IP が変わらない​

以下を順番に確認してください。

  1. Full VPNモードが実際に接続されており、通常の実行時に中継サーバーのIPが表示されることを確認してください。
  2. ターゲットプログラムの既存のプロセスとバックグラウンドプロセスの両方を終了して再実行します。
  3. IPv6結果と混同しないように curl -4 またはIPv4検証方法を使用してください。
  4. ターゲットプログラムが別のサービスまたはすでに実行されているランチャーにコマンドを渡す構造であることを確認してください。除外方針は mudfish-excludeは、新しく作成されたプロセス系統にのみ適用されます。
  5. ip -4 route show default table mainのデフォルトパスが実際のインターネットインターフェースを指していることを確認してください。

プログラムを閉じたが端末コマンドが終了しない​

子プロセスまたはバックグラウンド・プロセスがまだ除外 cgroup で実行されている可能性があります。関連するトレイアイコン、ランチャー、アップデートプロセスまですべて終了します。デフォルトの実行方法は、子プロセスがすべて終了するのを待ってからポリシーをクリーンアップします。

異常終了後にネットワークが異常​

このツールで実行したプログラムをすべて終了した後、残りのポリシーをクリーンアップします。

sudo mudfish-exclude --cleanup

その後も問題が解決しない場合は、Mudfishを終了してシステムのデフォルトパスとiptablesルールを確認してから再接続してください。

動作原理​

mudfish-excludeは実行するプログラムを別の cgroup v2 に入れ、その cgroup で発生した IPv4 パケットに iptables mark を設定します。そのマークを持つパケットは、別々のポリシールーティングテーブルを介してLinuxメインルーティングテーブルで見つかったデフォルトパスに転送され、必要なNAT MASQUERADEが適用されます。

このプロセスは mudrun, mudflow, mudfish, mudwfp_proxyの設定や共有メモリの状態を変更しません。除外ポリシーは、オペレーティングシステムのcgroup、iptables、IPv4ポリシールーティング層でのみ機能します。