web-dev-qa-db-ja.com

アプリケーションに特定のネットワークインターフェイスを使用させる

複数のネットワークインターフェイス(LANおよびワイヤレス)を使用していますが、優先インターフェイスの順序を変更する方法があることに気付きました。有線ネットワークを使用して作業や電子メールなどを(安全に)実行し、無線VLAN=を使用して他の方法(ポートと場合によってはWebsenseによってブロックされる)にアクセスする)をするにはどうすればよいですか?

50
Kami

秘訣はルーティングテーブルを調整することです(これは宛先ポートやソースアプリには依存しませんが、宛先ホストに依存します)。これは、LinuxまたはOS Xを使用していることを前提としています(タグが示すとおり)。

デフォルトゲートウェイが1.2.3.4で、6.7.8.9でトラフィックをルーティングできるVPNがあるとします。メールトラフィックを6.7.8.9経由でルーティングする場合は、次のようにします。

Sudo route add mail.myserver.com 6.7.8.9

ルートのバージョンによっては、アドレスとネクストホップの間に「gw」キーワードが必要になる場合があります。そのネクストホップを介してネット全体のルートを作成する場合は、次のように、宛先のCIDR表記でネットマスクを追加するだけです。

Sudo route add 192.168.0.0/24 6.7.8.9

既存のルーティングテーブルを表示する場合は、

netstat -nrl
or
ip route list

Windowsを使用している場合は、「net route」を使用するとほとんどの方法が得られますが、構文はまったく異なります。

23
Tim Hatch

2つのNICを同時にアクティブにするだけの場合は、ネットワークデバイスのリストの下にある歯車を選択して、システム設定/ネットワークでサービスオーダーを設定できます。必要な順序をドラッグアンドドロップします。

たとえば、MBPでEtherとWiFiを常にアクティブにし、Wi-Fiの上にEtherを設定しています。私は職場でEtherを使用しているので、NICプロキシ設定あり、Wi-Fiなしで設定しました。家に帰るときに、設定を調整する必要はありません。これを行うこともできます。端末を使用して/usr/bin/networksetup -ordernetworkservices

しかし、アクティブとアプリの両方にデフォルト以外を使用させるために、@ Andorのアドバイスを少し簡単に試してみました。アプリでEtherを使用しない場合は、アプリのプロキシ設定をWi-FiアダプターのIPアドレスに設定します。それは外に出るためにそのインターフェースを使用し、そのようにして会社のプロキシと監視サーバーをバイパスします。したがって、Etherのアドレスが1.2.3.4で、サービスオーダーでWi-Fi(5.6.7.8)の前にある場合、アプリプロキシは5.6.7.8になります。

6
SaxDaddy

Macの場合、私が使用する簡単な解決策があります。これは実際には@Andorのソリューションの実装です。プロキシをインストールし、それを使用するようにアプリを構成します。

  1. インストールしました SquidMan

  2. 構成に次の行を追加します。 x.x.x.xの代わりに、プライベートアプリに使用するIPを指定する必要があります。

    tcp_outgoing_address x.x.x.x
    
  3. SquidManを起動し、プロキシとして使用するようにアプリを構成します。

この情報を別のページで見つけるのに1時間を費やしたので、他の人がより速くそれを行うのに役立つことを願っています。

5
matrik

おそらく、低レベルのIO制御関数(ioctl)を使用する必要があります。特に:

ioctl( socket, SIOCGIFADDR, ... ); // Get network interface address

そして

ioctl( socket, SIOCSIFADDR, ... ); // Set network interface address

詳細は このマニュアルページ を参照してください。

1
Martin Cote

問題は、ネットワーク接続への複数のゲートウェイがあり、管理が少し難しいということです...

一部のサーバーまたはネットワーク関連のUNIXおよびLinuxツールには、通常、「インターフェイス」と呼ばれるフラグがあり、tcpdumpのように、使用するインターフェイスを指定できます。次に例を示します。

tcpdump -i eth0

しかし、標準的なデスクトップソフトウェアのルーティングについて質問しているように、少し難しくなります...

とにかくそのためのトリックを教えてあげることができます...その問題に対処するための私の通常の修正は、プロキシを使用し、ゲートウェイを1つだけにすることです。現在インターネットを使用しているほとんどすべてのソフトウェアには、プロキシを構成するためのオプションがあるため、次のいずれかの方法で行うことができます。

1.-ネットワークの「セキュリティ保護されていない」(つまり、ポリシーが適用されていない)部分にプロキシを設定し、ソフトウェアがそのプロキシをポイントするようにします。

2.-別の「安全でない」場所、たとえば自宅、またはインターネット上の専用サーバーにSSHサーバーを設定し、Socksがソックスプロキシサーバーを作成する特別な機能を介して接続を開く:

ssh -D 1234 user@Host

それはあなたのコンピュータにポート「1234」でソックスプロキシサーバーを作成し、「ユーザー」を使って「ホスト」に接続し、「ホスト」が持つ接続を介してインターネットに行きます...そして、ローカルソフトウェアでは、プロキシ設定ツールを開き、localhost:1234を指定するだけです。

企業のインターネットポリシーを回避するための素晴らしいトリック:P

:D

1
Andor

ビジネスアプリケーションを仮想マシン内で実行しています。上記の手順を使用してWiFiを優先接続として設定し、イーサネットポートを「ブリッジ」アダプターとして使用するように仮想マシンを構成しました。

これで、仮想マシン内で実行されているものはすべてイーサネットポートにハードリンクされます。 WiFiが接続されている限り、他のすべてのアプリケーション(仮想マシン以外)の優先接続はWiFiです。

アプリケーションを特定のイーサネットポートに強制的にバインドするために使用できるユーティリティはあると思いますが、MacOSについては調査していません。

前述のルーティング方法は「素人」にとってはやや複雑ですが、特に接続で同じIPアドレスを繰り返し取得する場合は、実行可能なアプローチとしても良いようです。

1
Rich

この質問はOSXに関するものですが、Windows 7 64ビットで動作する次のものはここに残しておきます。この質問は、 アプリケーションを特定のアダプタ に強制的に通過させるときに上位の結果の1つとして浮かび上がったので、以下が他の人に役立つかもしれません。

http://www.howtogeek.com/117890/how-to-force-an-application-to-use-a-specific-network-card/

上記のガイドでは、 ForceBindIp と呼ばれるユーティリティを使用しています。このユーティリティは、Windows NT/2000/XP/2003しかし、Windows 7-64ビットで動作させるのに問題はありませんでした。

また、 Windows 7のForceBindIPの問題(x64)

0
Ashutosh Jindal