คำเตือน: ไม่มีความผิด แต่นี่เป็นความคิดที่เลว ฉันไม่แนะนำให้ใครทำในชีวิตจริง
แต่ถ้าคุณให้แล็บ IT เบื่อหน่ายเรื่องตลก ๆ จะเกิดขึ้น!
สำหรับการทดลองนี้ฉันใช้เซิร์ฟเวอร์ Microsoft DNS ที่ทำงานบน Server 2012 R2 เนื่องจากความยุ่งเหยิงของการโฮสต์โซน DNS ใน Active Directory ฉันจึงสร้างโซนหลักใหม่ที่ชื่อว่า test.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
}
}
}
ฉันดำเนินการสร้างโดยไม่มีข้อผิดพลาด 65025 บันทึกโฮสต์สำหรับชื่อที่testing.testing.com.
มีทุกที่อยู่ IPv4 จาก 1.1.1.1 ถึง 1.1.255.255
จากนั้นฉันต้องการตรวจสอบให้แน่ใจว่าฉันสามารถทำลายสถิติ A จำนวน 65536 (2 ^ 16 บิต) ทั้งหมดโดยไม่มีข้อผิดพลาดและฉันทำได้ดังนั้นฉันจึงคิดว่าฉันน่าจะได้ไปถึง 16581375 (1.1.1.1 ถึง 1.255 .255.255) แต่ฉันไม่ต้องการนั่งที่นี่และดูสคริปต์นี้ทำงานทั้งคืน
ดังนั้นฉันคิดว่ามันปลอดภัยที่จะบอกว่าไม่มีข้อ จำกัด ในทางปฏิบัติกับจำนวนระเบียน A ที่คุณสามารถเพิ่มลงในโซนสำหรับชื่อเดียวกันกับ IP ที่แตกต่างกันบนเซิร์ฟเวอร์ของคุณ
แต่มันจะใช้งานได้จริงหรือไม่
นี่คือสิ่งที่ฉันได้รับจากลูกค้าของฉันตามที่ Wireshark ดู:
(เปิดภาพในแท็บเบราว์เซอร์ใหม่ขนาดเต็ม)
อย่างที่คุณเห็นเมื่อฉันใช้ nslookup หรือ ping จากไคลเอนต์ของฉันมันจะออกแบบสอบถามสองรายการโดยอัตโนมัติ - หนึ่ง UDP และหนึ่ง TCP อย่างที่คุณทราบแล้วส่วนใหญ่ที่ฉันสามารถยัดเข้าไปในดาตาแกรม UDP คือ 512 ไบต์ดังนั้นเมื่อเกินขีด จำกัด นั้น (เช่นที่อยู่ IP 20-30) ต้องใช้ TCP แทน แต่ถึงแม้จะมี TCP ฉันก็จะได้รับ A ระเบียนย่อย ๆ สำหรับการ test.testing.com เท่านั้น มีการส่งคืน 1,000 รายการต่อการสืบค้น TCP รายการของเรกคอร์ด A จะหมุนเวียนโดย 1 อย่างถูกต้องกับแต่ละเคียวรีที่ต่อเนื่องเช่นเดียวกับที่คุณคาดว่า DNS รอบโรบินจะทำงาน มันจะใช้เวลาหลายล้านแบบสอบถามเพื่อปัด robin ผ่านสิ่งเหล่านี้ทั้งหมด
ฉันไม่เห็นว่าสิ่งนี้จะช่วยให้คุณสร้างเครือข่ายโซเชียลมีเดียที่ยืดหยุ่นและยืดหยุ่นได้ขนาดใหญ่ แต่มีคำตอบให้คุณ
แก้ไข:ในความคิดเห็นการติดตามของคุณคุณถามว่าทำไมฉันคิดว่านี่เป็นความคิดที่ไม่ดี
สมมติว่าฉันเป็นผู้ใช้อินเทอร์เน็ตโดยเฉลี่ยและฉันต้องการเชื่อมต่อกับบริการของคุณ ฉันพิมพ์ www.bozho.biz ลงในเว็บเบราว์เซอร์ของฉัน ไคลเอ็นต์ DNS ในคอมพิวเตอร์ของฉันได้รับการบันทึก 1,000 ครั้ง โชคไม่ดีที่ 30 รายการแรกในรายการไม่ตอบสนองเพราะรายการของระเบียน A ไม่ได้รับการปรับปรุงหรืออาจมีการหยุดทำงานขนาดใหญ่ที่ส่งผลกระทบต่ออินเทอร์เน็ต สมมติว่าเว็บเบราว์เซอร์ของฉันมีการหมดเวลา 5 วินาทีต่อ IP ก่อนที่จะดำเนินการต่อและลองอีกครั้ง ตอนนี้ฉันกำลังนั่งอยู่ที่นี่จ้องมองนาฬิกาทรายหมุนรอบ 2 นาทีครึ่งรอให้เว็บไซต์ของคุณโหลด ไม่มีใครมีเวลาสำหรับเรื่องนั้น และฉันแค่สมมติว่าเว็บเบราว์เซอร์ของฉันหรือแอปพลิเคชันใดก็ตามที่ฉันใช้ในการเข้าถึงบริการของคุณจะพยายามมากกว่าที่อยู่ IP 4 หรือ 5 รายการแรก มันอาจจะไม่
หากคุณใช้การตรวจสอบโดยอัตโนมัติและอนุญาตให้มีการอัปเดตที่ไม่ผ่านการตรวจสอบหรือไม่ระบุชื่อไปยังโซน DNS โดยหวังว่าจะรักษารายการ A ให้ใหม่อยู่เสมอ ... แค่ลองจินตนาการว่าจะไม่ปลอดภัย! แม้ว่าคุณจะออกแบบระบบบางอย่างที่ลูกค้าต้องการใบรับรอง TLS ของไคลเอ็นต์ที่พวกเขาได้รับจากคุณล่วงหน้าเพื่ออัปเดตโซนหนึ่งไคลเอ็นต์ที่ถูกบุกรุกที่ใดก็ได้บนโลกนี้จะเริ่มต้นบ็อตเน็ตและทำลายบริการของคุณ DNS แบบดั้งเดิมนั้นไม่ปลอดภัยอย่างที่ควรจะเป็น
การใช้งานแบนด์วิดธ์ที่ยาวนานและสิ้นเปลือง หากการสืบค้น DNS ทุกครั้งต้องใช้แบนด์วิดท์ 32 กิโลไบต์ขึ้นไปนั่นจะไม่เป็นการดีขนาดเลย
DNS round-robin ไม่สามารถทดแทนการโหลดบาลานซ์ที่เหมาะสมได้ มันไม่มีวิธีการกู้คืนจากหนึ่งโหนดที่จะลงหรือไม่สามารถใช้งานได้ในช่วงกลางของสิ่ง คุณจะสั่งให้ผู้ใช้ของคุณทำ ipconfig / flushdns หรือไม่ถ้าโหนดที่พวกเขาเชื่อมต่อลงไป? ปัญหาประเภทนี้ได้รับการแก้ไขโดยสิ่งต่าง ๆ เช่น GSLB และ Anycast
เป็นต้น