Penafian: Jangan tersinggung, tapi ini ide yang sangat buruk. Saya tidak menyarankan siapa pun melakukan ini di kehidupan nyata.
Tetapi jika Anda memberi seorang pria IT lab bosan, hal-hal lucu akan terjadi!
Untuk percobaan ini, saya menggunakan server Microsoft DNS yang berjalan di Server 2012 R2. Karena komplikasi hosting zona DNS di Active Directory, saya membuat zona primer baru bernama testing.com yang tidak terintegrasi dengan AD.
Menggunakan skrip ini:
$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
}
}
}
Saya melanjutkan untuk membuat, tanpa kesalahan, 65025 catatan host untuk nama testing.testing.com.
, dengan setiap alamat IPv4 dari 1.1.1.1 ke 1.1.255.255.
Kemudian, saya ingin memastikan bahwa saya bisa menembus 65536 (2 ^ 16 bit) jumlah total catatan A tanpa kesalahan, dan saya bisa, jadi saya berasumsi saya mungkin bisa sampai ke 16581375 (1.1.1.1 hingga 1.255 .255.255,) tetapi saya tidak ingin duduk di sini dan menonton skrip ini berjalan sepanjang malam.
Jadi saya pikir aman untuk mengatakan bahwa tidak ada batasan praktis untuk jumlah catatan A yang dapat Anda tambahkan ke zona untuk nama yang sama dengan IP yang berbeda di server Anda.
Tetapi apakah itu benar-benar bekerja dari sudut pandang klien?
Inilah yang saya dapatkan dari klien saya seperti yang dilihat oleh Wireshark:
(Buka gambar di tab browser baru untuk ukuran penuh.)
Seperti yang Anda lihat, ketika saya menggunakan nslookup atau ping dari klien saya, ia secara otomatis mengeluarkan dua kueri - satu UDP dan satu TCP. Seperti yang sudah Anda ketahui, yang paling saya bisa menjejalkan ke dalam datagram UDP adalah 512 byte, jadi begitu batas itu terlampaui (seperti 20-30 alamat IP), seseorang harus menggunakan TCP sebagai gantinya. Tetapi bahkan dengan TCP, saya hanya mendapatkan subset A yang sangat kecil untuk testing.testing.com. 1000 catatan dikembalikan per permintaan TCP. Daftar A dirotasi oleh 1 dengan benar dengan setiap kueri yang berurutan, persis seperti yang Anda harapkan DNS round-robin berfungsi. Dibutuhkan jutaan pertanyaan untuk menyelesaikan semua ini.
Saya tidak melihat bagaimana ini akan membantu Anda membuat jaringan media sosial Anda yang berskala besar dan dapat diukur, tetapi tetap ada jawaban Anda.
Sunting: Dalam komentar tindak lanjut Anda, Anda bertanya mengapa menurut saya ini umumnya ide yang buruk.
Katakanlah saya adalah pengguna internet biasa, dan saya ingin terhubung ke layanan Anda. Saya mengetik www.bozho.biz di browser web saya. Klien DNS di komputer saya mendapatkan kembali 1000 catatan. Nasib buruk, 30 catatan pertama dalam daftar tidak responsif karena daftar catatan A tidak diperbarui, atau mungkin ada pemadaman berskala besar yang memengaruhi sebagian besar internet. Katakanlah browser web saya memiliki batas waktu 5 detik per IP sebelum bergerak dan mencoba yang berikutnya. Jadi sekarang saya duduk di sini menatap jam pasir berputar selama 2 setengah menit menunggu situs Anda memuat. Tidak ada yang punya waktu untuk itu. Dan saya hanya berasumsi bahwa browser web saya atau aplikasi apa pun yang saya gunakan untuk mengakses layanan Anda bahkan akan mencoba lebih dari 4 atau 5 alamat IP pertama. Mungkin tidak akan.
Jika Anda menggunakan pembersihan otomatis dan memungkinkan pembaruan yang tidak divalidasi atau anonim ke zona DNS dengan harapan menjaga daftar A catatan segar ... bayangkan saja betapa tidak amannya itu! Bahkan jika Anda merekayasa beberapa sistem di mana klien membutuhkan sertifikat TLS klien yang mereka dapatkan dari Anda sebelumnya untuk memperbarui zona, satu klien yang dikompromikan di mana pun di planet ini akan memulai botnet dan menghancurkan layanan Anda. DNS tradisional sangat tidak aman, tanpa kerumunan-sumber.
Penggunaan dan pemborosan bandwidth yang sangat besar. Jika setiap permintaan DNS membutuhkan 32 kilobyte atau lebih bandwidth, itu tidak akan skala sama sekali.
DNS round-robin bukan pengganti keseimbangan muatan yang tepat. Ini tidak menyediakan cara untuk memulihkan dari satu simpul turun atau menjadi tidak tersedia di tengah-tengah hal. Apakah Anda akan menginstruksikan pengguna Anda untuk melakukan ipconfig / flushdns jika node mereka terhubung turun? Masalah-masalah seperti ini telah diselesaikan oleh hal-hal seperti GSLB dan Anycast.
Dll