またはのいずれhttp.request
かnet.connect
で、接続を開始するためのネットワークインターフェイスを指定できるオプションはありますか?
編集:OSレベルでのAFAIKアドレスレベル、またはルーティングテーブルへの負荷分散を指定できます。しかし、私のソフトウェアでインターフェイスを選択する方法はそれだけではありません。コードでそれを実行できるかどうかを知りたいのです。
またはのいずれhttp.request
かnet.connect
で、接続を開始するためのネットワークインターフェイスを指定できるオプションはありますか?
編集:OSレベルでのAFAIKアドレスレベル、またはルーティングテーブルへの負荷分散を指定できます。しかし、私のソフトウェアでインターフェイスを選択する方法はそれだけではありません。コードでそれを実行できるかどうかを知りたいのです。
ノードにはこれが組み込まれています:
http://nodejs.org/api/net.html#net_net_connect_options_connectionlistener
http://nodejs.org/api/http.html#http_http_request_options_callback
を参照してくださいlocalAddress
。使用するインターフェースのIPに設定してください。
編集: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も確認する必要があります。
使用できますnode cURL wrapper
curl = require('node-curl')
curl('www.google.com', { INTERFACE: 'eth1', RAW: 1 }, function(err) {
console.info(this);
});