2016-07-20 3 views
0

私は多くのWhoisクエリを作成するスクリプトを持っています。私が1つのインターフェースしか使用しないと、私は禁止されます。しかし、私はeth1とeth1:0〜eth1:13を持っているので、これらのクエリを回転させるには15のIPアドレスが必要です。Linux:宛先ポートに基づいてインターフェイスにルーティングする方法は?

whoisコマンドを呼び出して、どのインターフェイスをクエリに使用するかを指定するにはどうすればよいですか?

私はthis postを見ましたが、私のインターフェイスにはすでにゲートウェイを指定するための経路があるため、ルーティングテーブルを追加できません。

ルートadd -net xxx32/29 gw xxX33 dev eth1

私の計画は、どういうわけか宛先ポート43のルートのみを変更し、次にクエリを作成し、そのルートを削除し、別のクエリを作成し、

route add -port 43 dev eth1 
whois example.com 
route del -port 43 dev eth1 

route add -port 43 dev eth1:0 
whois example.org 
route del -port 43 dev eth1:0 

route add -port 43 dev eth1:1 
whois example.net 
route del -port 43 dev eth1:1 
... 
WARNING: -port does not work indeed. 

したがって、サーバーの残りのトラフィックを台無しにすることなく、これを達成する最も簡単な方法は何ですか?

ありがとうございます!

+0

リンク先の質問には、 'route add'ではなく' iptables'を使って行う方法が説明されています。あなたはそれを試しましたか? – Barmar

+0

「私が1つのインターフェースしか使用しないと禁止されます。あなたは、サービス事業者がそれ以上のケースをカバーするほどスマートではないと仮定しています。あなたがしようとしていることは、あなたのドメイン全体が禁止されることに終わる可能性があります。 – kaylum

+0

@Barmar:それは明らかに両方の組み合わせですが、説明した理由でルートを追加できません。 kaylum:トピックのうち、トロールしないでください、あるいは議論してください。ありがとう。 – FlorianB

答えて

0

私は自分の質問に答えます。

これは、明らかにwhois以外のすべてのものに有効な解決策ではありませんが、多くのプロトコルのトリックを行うことができます。

curlには[インターフェイス]オプションがあるため、クエリを作成するにはCURLを使用します。

もちろん、this oneのようなwhoisサーバーのリストが必要です。

perl:

use WWW::Curl::Easy; 
my $curl = WWW::Curl::Easy->new; 
$curl->setopt(CURLOPT_URL, "whois.crsnic.net:43"); 
$curl->setopt(CURLOPT_INTERFACE, "1.2.3.4"); 
$curl->setopt(CURLOPT_CUSTOMREQUEST, "example.com\r\n"); 
my $curldata = ""; 
$curl->setopt(CURLOPT_WRITEDATA, \$curldata); 
$curl->perform; 
print("$curldata\n"); 

次に、$ curldataを解析して、thin whoisサーバーとそれと同じものを見つけることができます。

関連する問題