一部のプロトコルを許可しない一部のパブリックネットワークからのWi-Fiをよく使用します(トレントやIRC-次にIRCについてのみ説明します)など)。これらのプロトコルのいずれかを使用する場合、電話の3G接続を使用する必要があります(usb0
インターフェイスを介して)。
Webナビゲーション用にWi-Fiへの接続を維持したい(したがって、従来のwlan0
インターフェイスを使用)が、一部のソフトウェア(多くの場合、weechatのみ)には別のインターフェイス(ここではusb0
)を使用します。 CLI IRCクライアント)。
したがって、2つの(リンクされた)質問があります:
usb0
の代わりにwlan0
を使用しないようにする方法は?最も簡単な解決策は、2つの別々のルーティングテーブルを持つことです。それらの1つ(あなたの場合はwlan0
)がデフォルトのものになりますが、巧妙なトリックを使用して、特定のアプリケーションにデフォルト以外のテーブルを使用させることができます。
まず、2つのテーブルを作成します(NAME1をわかりやすい名前に置き換え、IP1、DEV1などと同じものに置き換えます)。
echo 201 NAME2 >> /etc/iproute2/rt_tables
各ルーティングテーブルにゲートウェイを追加します(必要な場合)。
ip route add NET1 dev DEV1 src SRC1 table main
ip route add NET2 dev DEV2 src SRC2 table NAME2
次に、デフォルトルート:
ip route add default via IP1 table main
ip route add default via IP2 table NAME2
次に、送信元アドレスに基づいてルートテーブルを選択するためのルール:
ip rule add from IP1 table main
ip rule add from IP2 table NAME2
次に、weechat
にIP2を使用させる必要があります。これを行うには、 新しいバインドモジュール をビルドします。そうすることは簡単です、リファレンスに簡単な指示があります。モジュールをコンパイルして/usr/lib
に配置したら、次のコマンドを発行します。
BIND_ADDR=IP2 LD_PRELOAD=/usr/lib/bind.so weechat
これで完了です。これの利点は、スクリプトを簡単に作成でき、必要な数のアプリケーションで繰り返すことができることです。
たとえば、2つのサブネットワークを定義する場合:
wlan0
usb0
wlan0
に対してのみゲートウェイを定義すると、192.168.2.xに直接アドレス指定された以外のすべてのネットワークトラフィックはwlan0
を通過します。
usb0
インターフェースを介して、ネットワークトラフィックを特定のIPアドレスにルーティングできます。 Linuxのプロセスの特定のインターフェースを介してトラフィックをルーティングする もできます。