11

またはのいずれhttp.requestnet.connectで、接続を開始するためのネットワークインターフェイスを指定できるオプションはありますか?

編集:OSレベルでのAFAIKアドレスレベル、またはルーティングテーブルへの負荷分散を指定できます。しかし、私のソフトウェアでインターフェイスを選択する方法はそれだけではありません。コードでそれを実行できるかどうかを知りたいのです。

4

3 に答える 3

13

ノードにはこれが組み込まれています:

http://nodejs.org/api/net.html#net_net_connect_options_connectionlistener

http://nodejs.org/api/http.html#http_http_request_options_callback

を参照してくださいlocalAddress。使用するインターフェースのIPに設定してください。

于 2014-01-08T13:17:57.627 に答える
6

編集:makが指摘したように、ユーザープロセスからネットワークインターフェイスを指定することは確かに可能です。私は正直に立っています。しかし、私はまだノードでそれを可能にするモジュールを見つけていません。

デフォルトでは、ネットワークインターフェイスはOSルーティングテーブルによって決定されます。

このテーブルはnetstat -r、Unixシステム(OSXを含む)で一覧表示できます。ターミナルを開いてコマンドを入力するだけです。次のようなリストが表示されます。

laurent ~ $ netstat -r
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.1.1        UGSc          153        0     en0
127                localhost          UCS             0        0     lo0
localhost          localhost          UH              2       42     lo0
...

このNetifフィールドには、ルートに使用されるネットワークインターフェイスが表示されます。次のコマンドを使用して、ホスト名に到達するために使用されるインターフェイスを取得することもできますroute

laurent ~ $ route get google.fr
   route to: par03s02-in-f23.1e100.net
destination: default
       mask: default
    gateway: 192.168.1.1
  interface: en0
      flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500         0 

これはサーバー障害の問題ですが、コマンドを使用してルートを変更できますroute。たとえば、これはトラフィックをXYZ[0-254]からeth0のXYZ254にルーティングします。

route add -net X.Y.Z.0/24 gw X.Y.Z.254 dev eth0

ルートで再起動を持続させたい場合は、ルートをに追加できます/etc/network/interfaces。複数の異なるルート間で負荷分散を行う場合は、MPLSも確認する必要があります。

于 2012-11-28T11:20:35.490 に答える
5

使用できますnode cURL wrapper

curl = require('node-curl')
curl('www.google.com', { INTERFACE: 'eth1', RAW: 1 }, function(err) {
    console.info(this);
});
于 2012-11-28T12:12:29.023 に答える