web-dev-qa-db-ja.com

Linuxで特定のドメインのすべての既知のIPを見つけるにはどうすればよいですか?

私は、テストにAmazonサーバーを使用するプロジェクトの開発者です。 FoxyProxyの使用からiptablesを使用したルーティングに切り替えています。これは、より便利だからです。

私が遭遇した問題は、DNS解決を実行しているときに、特定のドメインを解決するための複数の呼び出しで複数のアドレスが返されることに気付くということです。

例えば:

$ Host sample.domain.com
sample.domain.com has address 50.200.80.100
$ Host sample.domain.com
sample.domain.com has address 50.200.80.101

これはグーグルとはまったく対照的です:

$ Host www.google.com
www.google.com has address 74.125.225.81
www.google.com has address 74.125.225.80
www.google.com has address 74.125.225.84
www.google.com has address 74.125.225.82
www.google.com has address 74.125.225.83
www.google.com has IPv6 address 2607:f8b0:4009:803::1012

現在、私はホストを何度も解決してIPのリストを作成し、それを使用してiptableルートを設定しています。これを行うためのより良い方法はありますか?

注:サーバーについて何も変更するためのアクセス権がないため、提案されたソリューションはクライアント側である必要があります。

2
Tiris

トラフィックの多いWebサイトのほとんどには、トラフィックを処理する複数のフロントエンドサーバーがあります。ほとんどの場合、これらのIPアドレスはそれぞれロードバランサーであり、その背後にはさらに多くのサーバーがあります。

ドメインの"A"レコードの取得に関心がある場合は、Dignslookup、またはHostコマンドを使用できます。 Linuxを使用している場合は、Digコマンドが推奨される取得方法です。

$ Dig A google.com +short @8.8.8.8
74.125.236.167
74.125.236.160
74.125.236.169
74.125.236.168
74.125.236.161
74.125.236.162
74.125.236.164
74.125.236.163
74.125.236.165
74.125.236.174
74.125.236.166

上記のコマンドは、ドメインgoogle.comのすべての"A"レコード(アドレス)を収集します。クエリを実行するたびに、同じIPアドレスのセットが取得されますが、順序は異なります。

使用するiptablesルールの種類はわかりませんが、ほとんどの場合、"A"レコードは、私のDig出力に基づいて74.125.236.0/24のような同じネットワークに属します。

1
Kannan Mohan

悲しいことに、これを行う簡単な方法はありません。

Google.comゾーンのゾーン転送を実行できた場合は、すべてのAレコードとAAAレコードを解析できます。ただし、Googleはパブリックゾーン転送を許可しておらず、許可したとしても、DNSデータは頻繁に変更される可能性があります。

Googleは現在のネットワーク範囲をDNS TXTレコードで公開しています。 https://support.google.com/a/answer/60764?hl=en

$ nslookup -q=TXT _netblocks.google.com 8.8.8.8
$ nslookup -q=TXT _netblocks2.google.com 8.8.8.8

ARINのWhoISを使用して、IPアドレスまたは会社を検索することもできます。 http://whois.arin.net/rest/net/NET-74-125-0-0-1/pft

ネットワークブロックはISPに登録され、サブセットは特定の組織に提供される場合があることに注意してください。

0
pyther