ソフトウェアを異なるネットワークインターフェイスにバインドする


37

2つのネットワークに接続された2つの異なるネットワークインターフェイスがあります。1つはeth0で、もう1つはwlan0です。特定のインターフェイスのみを使用するようにソフトウェアに指示するにはどうすればよいですか?

基本的に、大学のLANネットワークでありイントラネットサイトにアクセスする必要があるため、Firefoxでeth0を使用します。もう1つは、インターネットに接続可能なwifiネットワークであり、Chromeにバインドします。

私は働いており、イントラネットを使用する必要があります。eth0は私の選択ですが、eth0はインターネットにアクセスできないイントラネットです(明らかに)。インターネットにアクセスしたいので、私はwlan0(学生用大学wifi)に接続しています。

問題は、両方を接続している場合、ブラウザがeth0を使用してwww.stackoverflow.comを探すことがあることです。そのため、特定のインターフェイスのみを使用するようにブラウザーを割り当てたいと思いました。


ルーティングはあなたの問題に対してより良い解決策ではありませんか?つまり、ubuntu.stackexchange.comへの接続では、どのプログラムからも同じインターフェースを使用する必要があります。
ハビエルリベラ

回答:


23

クライアントソフトウェアを特定のネットワークインターフェイスにバインドすることはできませんが、一部のIPアドレスには1つのネットワークインターフェイスのみを使用し、他のすべてには他のネットワークインターフェイスのみを使用するようカーネルに指示できます。これは「ルーティング」と呼ばれ、コマンド/sbin/routeとを使用して設定できます /sbin/ip

質問を正しく読んだ場合、interface eth0を使用してイントラネットIPアドレスに接続し、interface を使用してインターネットに接続する必要があります wlan0

コマンドを実行するとip route list、次のような出力が表示されます(数値は異なります。また、行を追加することもできます)。

$ ip route list
10.60.44.0/25 dev eth0  proto kernel  scope link  src 10.60.44.39  metric 1 
192.168.80.0/21 dev wlan0  proto kernel  scope link  src 192.168.84.122  metric 2 
[...]
default via 10.60.44.1 dev eth0  proto static 

最初の2行は、インターフェイスに接続されたネットワークをご紹介eth0してwlan0:これらのネットワーク上のコンピュータに向けたネットワークトラフィックは、直接対応するインタフェースを介してそれらに送信されます。

最後の行は、「デフォルトルート」が何であるかを示しています。コンピューターが接続されていないネットワーク(stackoverflow.comサーバーなど)上のコンピューターと通信する場合eth0、ホスト経由でトラフィックをルーティングします10.60.44.1( 「デフォルトゲートウェイ」と呼ばれます)。

したがって、インターネットトラフィックを徹底的にルーティングwlan0するには、ip route list出力の最後の行が次のようになるようにする必要があります。

default via A.B.C.D dev wlan0 proto static

ここA.B.C.Dで、ワイヤレスLAN上のゲートウェイのIPアドレスです。出力に「dev wlan0」が含まれていない場合は、次のコマンドで変更できます。

sudo ip route change to default dev wlan0 via A.B.C.D

次の2つの方法で正しい値A.B.C.Dを見つけることができwlan0ます。

  1. ディレクトリ/var/lib/dhcp3/を調べてくださいdhclient-...-wlan0.lease。いくつかのファイルが見つかり ます。最新のものを開き、文字列を含む行を検索しoption routerますA.B.C.D。行の残りの部分はIPアドレスを示しています。

  2. ローカルネットワーク管理者に問い合わせてください。(とにかく、おそらく最善のことです。)

この構成では、次のことができるはずです。

  • インターネットを閲覧する wlan0
  • 単一のネットワーク上にある場合はeth0、イントラネットを参照します。

イントラネットが複数のネットワークにまたがっている場合、それらのルートを追加する必要があります。これは間違いなく、ローカルネットワーク管理者と対話する必要があるものです。:-)


好奇心から:IPアドレスではなくDNS(サブドメインを含む)をバインドしたい場合はどうすればよいですか?
ディエール

1
@dierre要するに、できません。ルーティングはIPアドレスに基づいています。長い話はそれもその解像度ネットワーキングプロトコルスタックまで、さらにたまたまDNS名、...について知ることができませんので、ルーティングは、ネットワークレイヤ3のものであることを伝えることで始まる
リッカルドMurri

ええ、ええ、私はルーティングを意味しませんでした。私は一般的に意味します。できますか?DNSをネットワークインターフェイスにバインドしますか?
ディエール

@dierre正確に何をしたいですか?DNSサーバーが特定のネットワークインターフェイスでのみ応答するようにしますか?または、DNSクライアント(つまり、DNS解決)で選択したインターフェイスのみを使用しますか?
リッカルドムリ

1

2

「ip netns」はネットワーク名前空間を作成します。その後、仮想インターフェイス(ip link add ... veth)を作成し、それらをネームスペースに関連付けることができます。

名前空間は、たとえば異なるルートを使用するように構成できます(したがって、異なるインターフェイスを使用します)

その後、そのネームスペースでコマンドを実行できます。作成されたネームスペースを使用します。「ip netns exec NAME cmd ...」

ソース:http : //manpages.ubuntu.com/manpages/saucy/en/man8/ip-netns.8.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.