免責事項:違反はありませんが、これは本当に悪い考えです。実生活でこれを行うことはお勧めしません。
しかし、退屈したIT担当者にラボを提供すると、面白いことが起こります。
この実験では、Server 2012 R2で実行されているMicrosoft DNSサーバーを使用しました。Active DirectoryでDNSゾーンをホストすることは複雑であるため、AD統合されていない testing.comという名前の新しいプライマリゾーンを作成しました。
このスクリプトの使用:
$Count = 1
for ($x = 1; $x -lt 256; $x++)
{
for ($y = 1; $y -lt 256; $y++)
{
for ($z = 1; $z -lt 256; $z++)
{
Write-Host "1.$x.$y.$z`t( $Count )"
$Count++
dnscmd . /RecordAdd testing.com testing A 1.$x.$y.$z
}
}
}
testing.testing.com.
1.1.1.1から1.1.255.255までのすべてのIPv4アドレスを使用して、名前の65025ホストレコードをエラーなしで作成しました。
それから、エラーなしで合計65536(2 ^ 16ビット)のAレコードを突破できることを確認したかったので、おそらく16581375(1.1.1.1から1.255まで)に到達できたと思います。 .255.255))しかし、私はここに座ってこのスクリプトが一晩中実行されるのを見たくありませんでした。
したがって、サーバー上の異なるIPを持つ同じ名前のゾーンに追加できるAレコードの数に実質的な制限はないと言っても安全だと思います。
しかし、それは実際になります動作し、クライアントの視点から?
Wiresharkから見たクライアントから得たものは次のとおりです。
(フルサイズの画像を新しいブラウザタブで開きます。)
ご覧のとおり、nslookupまたはpingをクライアントから使用すると、UDPとTCPの2つのクエリが自動的に発行されます。既にご存知のように、UDPデータグラムに詰め込むことができるのは512バイトなので、その制限を超えると(20〜30個のIPアドレスなど)、代わりにTCPを使用する必要があります。しかし、TCPを使用しても、testing.testing.comのAレコードの非常に小さなサブセットしか取得できません。TCPクエリごとに1000レコードが返されました。Aレコードのリストは、ラウンドロビンDNSが機能すると予想される方法とまったく同じように、連続するクエリごとに1ずつ適切にローテーションします。これらすべてをラウンドロビンでラウンドするには何百万ものクエリが必要です。
これがどのようにあなたがあなたの非常にスケーラブルで回復力のあるソーシャルメディアネットワークを作るのに役立つかわかりませんが、それでもあなたの答えがあります。
編集:フォローアップコメントで、なぜこれが一般的に悪い考えだと思うのかを尋ねます。
私は平均的なインターネットユーザーであり、あなたのサービスに接続したいとします。Webブラウザにwww.bozho.bizと入力します。コンピューター上のDNSクライアントは1000レコードを取得します。残念ながら、リストの最初の30レコードは応答しません。これは、Aレコードのリストが最新に保たれていないか、インターネットの大部分に大規模な停止が影響している可能性があるためです。私のWebブラウザーは、IPごとに5秒のタイムアウトがあり、次のIPに移行する前にタイムアウトするとします。だから今、私はここに座って、あなたのサイトがロードされるのを待って、2分半回転する砂時計を見つめています。誰も時間がありません。そして、私のウェブブラウザまたはあなたのサービスにアクセスするために使用するどんなアプリケーションでも、最初の4つまたは5つ以上のIPアドレスを試みることさえしようとしているだけです。それはおそらくないでしょう。
Aレコードのリストを最新に保つことを期待して、自動清掃を使用し、検証されていない、または匿名のDNSゾーンへの更新を許可する場合...それがどれほど安全でないか想像してみてください!クライアントがゾーンを更新するために事前に取得したクライアントTLS証明書を必要とするシステムを設計した場合でも、地球上のどこかで侵害されたクライアントがボットネットを開始してサービスを破壊します。従来のDNSは、クラウドソーシングを使用せずに、不安定な状態のままです。
膨大な帯域幅の使用と無駄。すべてのDNSクエリが32キロバイト以上の帯域幅を必要とする場合、それはまったくうまくいきません。
DNSラウンドロビンは、適切な負荷分散に代わるものではありません。1つのノードがダウンしたり、物事の途中で使用できなくなったりすることから回復する方法はありません。接続しているノードがダウンした場合に、ユーザーにipconfig / flushdnsを実行するように指示しますか?これらの種類の問題は、GSLBやAnycastなどによってすでに解決されています。
等。