web-dev-qa-db-ja.com

ドメインの**すべて**のIPアドレスを取得するにはどうすればよいですか?

http://beej.us/guide/bgnet/html/multi/syscalls.html#getaddrinfo で提供されるgetaddrinfo()サンプルをビルドしました

Facebook.comなどのサンプルドメインで実行すると、次の3つのIPアドレスが表示されます。

  IPv4: 69.63.189.11
  IPv4: 69.63.189.16
  IPv4: 69.63.181.12

ただし、次の回答からわかるように、facebook.comにはかなり多くのアドレス(少なくとも20)があることがわかります。

http://wiki.answers.com/Q/Discuss:What_is_the_IP_address_for_Facebook

その答えは時間のスナップショットであり、将来変更される可能性があります。そのコードの実行時にドメインが使用するIPアドレスallをリストするコードを実装できるようにしたいと思います。

それを達成する方法はありますか?もしそうなら、どのように?

3
Android Eve

コンピュータのアップストリームで透過プロキシを使用できます。

1台のコンピューターの場合は、hostsファイルと特別なDNSサーバーを使用して、facebook.comとwww.facebook.comの偽のエントリを作成し、DNSレコードを汚染しました。 「あなたは逮捕されました」というページのあるページを指しています。

これは、ユーザーが匿名プロキシの使用方法を理解するまでは問題ありません。

いくつかのステップの後、これは本当に人間の問題になります。ビジネスの場合、それはビジネスポリシーになり、人事に該当します。自宅にいる場合は、子供のコンピュータの時間を監視します。

3
Keith Stokes

Facebook.comのDNSサーバーはこれら3つだけを提供している可能性が高いため、そうではありません。単に他のことを教えていないだけです。

これは多くの理由で行われます。一部のサーバーは地理的にユーザーの近くに配置されるため、DNSサーバーがそれらのIPを優先します。潜在的なDoS攻撃を抑制する手段として、DNSサーバーは、facebook.comが使用する「すべての」IPについて誰も知ることができないようにします。

しかし、主にそれはロードバランシングに関するものです。 1時間後にもう一度お試しください。おそらく3つのdifferent IPが表示されます。これは、すべてのサーバー間で負荷を分散したいため、DNSは、トラフィックが少ないホストを、トラフィックが多いホストよりも優先します。

10
Dean Harding

DNS設定によっては、すべてのIPを取得できない場合があります。一部のサービスは、すべての場所のすべてのホストエントリを公開しません。つまり、ドメインのすべてのDNSエントリを取得した場合でも、特定の場所に関連するエントリしか取得できない場合があります。

そして、私はラウンドロビンの状況を追加しようとしていましたが、ディーンが述べたように、再試行すると、おそらく他の3つのIPを取得します。また、facebook.comで高速検索を行いましたが、追加のDNSセキュリティ機能がいくつかあるため、追加情報を取得するのがさらに困難になっています。

2
Simon Karlsson