Haftungsausschluss: Keine Beleidigung, aber das ist eine wirklich schlechte Idee. Ich rate niemandem, dies im wirklichen Leben zu tun.
Aber wenn Sie einem gelangweilten IT-Mitarbeiter ein Labor geben, passieren lustige Dinge!
Für dieses Experiment habe ich einen Microsoft DNS-Server verwendet, der auf Server 2012 R2 ausgeführt wird. Aufgrund der Schwierigkeiten beim Hosten einer DNS-Zone in Active Directory habe ich eine neue primäre Zone mit dem Namen testing.com erstellt, die nicht in AD integriert ist.
Verwenden dieses Skripts:
$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
}
}
}
Ich fuhr fort, ohne Fehler 65025 Hosteinträge für den Namen testing.testing.com.
mit buchstäblich jeder IPv4-Adresse von 1.1.1.1 bis 1.1.255.255 zu erstellen.
Dann wollte ich sicherstellen, dass ich 65536 (2 ^ 16 Bit) A-Datensätze fehlerfrei durchbrechen konnte, und ich konnte, also nehme ich an, dass ich wahrscheinlich bis 16581375 (1.1.1.1 bis 1.255) hätte durchstarten können .255.255,) aber ich wollte nicht hier sitzen und dieses Skript die ganze Nacht laufen sehen.
Ich kann also mit Sicherheit sagen, dass die Anzahl der A-Einträge, die Sie einer Zone mit demselben Namen und unterschiedlichen IP-Adressen auf Ihrem Server hinzufügen können, praktisch unbegrenzt ist.
Aber wird es tatsächlich aus Sicht des Kunden funktionieren ?
Folgendes erhalte ich von meinem Kunden aus Sicht von Wireshark:
(Öffnen Sie das Bild in einem neuen Browser-Tab, um es in voller Größe anzuzeigen.)
Wie Sie sehen, werden bei Verwendung von nslookup oder Ping von meinem Client automatisch zwei Abfragen ausgegeben - eine UDP- und eine TCP-Abfrage. Wie Sie bereits wissen, kann ich maximal 512 Byte in ein UDP-Datagramm schreiben. Wenn diese Grenze überschritten ist (z. B. 20-30 IP-Adressen), muss stattdessen TCP verwendet werden. Aber selbst mit TCP erhalte ich nur eine sehr kleine Teilmenge von A-Datensätzen für testing.testing.com. Pro TCP-Abfrage wurden 1000 Datensätze zurückgegeben. Die Liste der A-Datensätze wird bei jeder nachfolgenden Abfrage ordnungsgemäß um 1 gedreht, genau so, wie Sie es von Round-Robin-DNS erwarten würden. Es würde Millionen von Abfragen erfordern, um alle diese Fragen zu beantworten.
Ich verstehe nicht, wie dies Ihnen dabei helfen wird, Ihr Social Media-Netzwerk massiv skalierbar und belastbar zu machen, aber es gibt trotzdem Ihre Antwort.
Bearbeiten: In Ihrem Folgekommentar fragen Sie, warum ich denke, dass dies im Allgemeinen eine schlechte Idee ist.
Angenommen, ich bin ein durchschnittlicher Internetnutzer und möchte eine Verbindung zu Ihrem Dienst herstellen. Ich tippe www.bozho.biz in meinen Webbrowser. Der DNS-Client auf meinem Computer erhält 1000 Einträge zurück. Nun, Pech, die ersten 30 Datensätze in der Liste reagieren nicht, weil die Liste der A-Datensätze nicht auf dem neuesten Stand gehalten wird, oder weil es einen großen Ausfall gibt, der einen Teil des Internets betrifft. Angenommen, mein Webbrowser hat eine Zeitüberschreitung von 5 Sekunden pro IP, bevor er weitergeht und den nächsten versucht. Jetzt sitze ich hier und starre zweieinhalb Minuten lang auf eine sich drehende Sanduhr und warte darauf, dass Ihre Site geladen wird. Dafür hat niemand Zeit. Ich gehe nur davon aus, dass mein Webbrowser oder eine andere Anwendung, mit der ich auf Ihren Dienst zugreife, mehr als die ersten 4 oder 5 IP-Adressen versuchen wird. Das wird es wahrscheinlich nicht.
Wenn Sie die automatische Bereinigung verwendet haben und nicht validierte oder anonyme Aktualisierungen der DNS-Zone zulassen, um die Liste der A-Datensätze auf dem neuesten Stand zu halten, stellen Sie sich vor, wie unsicher das wäre! Selbst wenn Sie ein System entwickelt haben, in dem die Clients ein Client-TLS-Zertifikat benötigen, das sie zuvor von Ihnen erhalten haben, um die Zone zu aktualisieren, wird ein kompromittierter Client auf der ganzen Welt ein Botnetz starten und Ihren Dienst zerstören. Traditionelles DNS ist so unsicher wie es ist, ohne Crowd-Sourcing.
Enorme Bandbreitennutzung und Verschwendung. Wenn für jede DNS-Abfrage mindestens 32 Kilobyte Bandbreite erforderlich sind, ist die Skalierung überhaupt nicht gut.
DNS Round-Robin ist kein Ersatz für einen ordnungsgemäßen Lastenausgleich. Es bietet keine Möglichkeit, sich von einem Knoten zu erholen, der gerade ausfällt oder nicht mehr verfügbar ist. Wirst du deine Benutzer anweisen, eine ipconfig / flushdns auszuführen, wenn der Knoten, mit dem sie verbunden waren, ausfällt? Solche Probleme wurden bereits von Dingen wie GSLB und Anycast gelöst.
Etc.