特定のNICを使用するようにプロセスを構成する

特定のNICを使用するようにプロセスを構成する

2つのネットワークカード(1つのイーサネットと1つのモバイルテザリング)があります。私のイーサネットインターネット接続はポートフィルタリングされており、特定のアプリケーションを使用できません。すべてのアプリはモバイルテザリングで実行されますが、データが制限されているので、選択した特定のアプリでのみそのNICを使用したいと思います。

したがって、質問は次のようになります。特定のプロセスだけが特定のネットワークカードを使用するように強制する方法は?

ベストアンサー1

デフォルトでは、プロセスを「刑務所」にして特定のネットワークカードに強制的にバインドしようとします。多くの人が LD_PRELOAD を使用しますが、LD_PRELOAD はプロセスで使用するルーティングを制御しません。最初のパスを使用します。考えられる解決策の1つはスーパーユーザーです。https://superuser.com/questions/241178/how-to-use- Different-network-interfaces-for- Different-processes/241215#241215

ip netnsはこれを行うことができます。

重要な要約:ネットワークネームスペースを作成してインターフェイスを接続したら、「ip netns exec NAME cmd ...」を実行します。

ディストリビューションがip netnsをサポートしていることを確認してください...(Backtrack 5r3はサポートしていませんが、Kaliはサポートしています。)

詳細は:

#create netns
ip netns add myNamespace
#link iface to netns
ip link set eth0 netns myNamespace
#set ip address in namespace
ip netns exec myNamespace ifconfig eth0 192.168.0.10/24 up
#set loopback (may be needed by process run in this namespace)
ip netns exec myNamespace ifconfig lo 127.0.0.1/8 up
#set route in namespace
ip netns exec myNamespace route add default gw 192.168.0.1
#force firefox to run inside namespace (using eth0 as outgoing interface and the route)
ip netns exec myNamespace firefox

おすすめ記事