ถ้าฉันจะเปลี่ยน DNS เป็นระเบียน A สำหรับโดเมนของฉัน (เปลี่ยนจาก IP หนึ่งเป็นอีกรายการหนึ่ง) ฉันจะรอนานแค่ไหนจนกว่าผู้คนจะถูกย้ายไปยังข้อมูลใหม่ มันคือ <= TTL หรือเปล่า? ฉันรู้ว่ามันใช้เวลาสักครู่ แต่ในปี 2009 ฉันควรคาดหวังนานเท่าไร
ถ้าฉันจะเปลี่ยน DNS เป็นระเบียน A สำหรับโดเมนของฉัน (เปลี่ยนจาก IP หนึ่งเป็นอีกรายการหนึ่ง) ฉันจะรอนานแค่ไหนจนกว่าผู้คนจะถูกย้ายไปยังข้อมูลใหม่ มันคือ <= TTL หรือเปล่า? ฉันรู้ว่ามันใช้เวลาสักครู่ แต่ในปี 2009 ฉันควรคาดหวังนานเท่าไร
คำตอบ:
ทุกคนในทางทฤษฎีควรเห็นระเบียน A ที่ได้รับการอัปเดตบางแห่งระหว่างทันทีและค่า TTL ที่เกี่ยวข้อง ผู้รับจดทะเบียนส่วนใหญ่ตั้งค่า TTL เป็น 24 ชั่วโมง IIRC ดังนั้นเป็นเวลา 24 ชั่วโมงบางคนจะเห็นที่อยู่เก่าและบางคนจะเห็นที่อยู่ใหม่และอีก 24 ชั่วโมงหลังจากการเปลี่ยนแปลงทุกคนควรมีที่อยู่ใหม่แทนโดยใช้ค่าที่ต่ำกว่าเช่น 4 ชั่วโมง.
หากคุณมีการเข้าถึงเพื่อเปลี่ยนค่า TTL (เช่นคุณเรียกใช้คุณเป็นเจ้าของเซิร์ฟเวอร์ DNS อย่างที่ฉันทำ) จากนั้นคุณสามารถลดค่า TTLs ให้เล็กลงได้อย่างน้อยวันละครั้งก่อนที่คุณจะทำการเปลี่ยนแปลง
ฉันพูดว่า "ตามหลักวิชา" ข้างต้นเนื่องจากจะมีข้อบกพร่องข้อบกพร่องและการกำหนดค่าแคชที่ไม่ดีอยู่เสมอนั่นหมายความว่าผู้ใช้บางคนจะไม่เห็นการเปลี่ยนแปลงอีกต่อไป นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งถ้าคุณใช้ TTL ขนาดเล็กมากเนื่องจากยังมี ISP บางรายที่มี DNS แคชที่ไม่สนใจ TTL ต่ำกว่าค่าที่กำหนด
สิ่งที่ต้องระวังอีกประการคือความล่าช้าระหว่างแผงควบคุม DNS ของผู้รับจดทะเบียนของคุณกับเซิร์ฟเวอร์ DNS ตัวอย่างเช่นฉันสังเกตเห็นว่าการเปลี่ยนแปลงที่เกิดขึ้นกับโดเมนที่จัดการโดย 123-reg.co.uk อาจใช้เวลาถึงหนึ่งชั่วโมงก่อนที่จะปรากฏบนเซิร์ฟเวอร์ DNS ของพวกเขาซึ่งเป็นชั่วโมงพิเศษที่ด้านบนของค่า TTL ที่คุณจะต้องทำ .
ขึ้นอยู่กับระยะเวลาที่ไคลเอ็นต์ทำการแคชข้อมูล DNS ซึ่งควรเป็นไปตามค่า TTL อย่างไรก็ตามเนื่องจากไคลเอนต์กำหนดระยะเวลาในการแคชข้อมูลคุณจึงไม่สามารถแน่ใจได้อย่างแท้จริง (หลังจากไคลเอนต์ทั้งหมดสามารถทำการแก้ปัญหาด้วยตนเองและไม่สนใจ TTL อย่างสมบูรณ์)
เมื่อฉันรู้ว่าฉันกำลังจะเปลี่ยนที่อยู่ IP หลายวันก่อนหน้าฉันมักจะลดค่า TTL ของฉันเป็นสิ่งที่น้อยกว่าปกติที่ฉันจะใช้ ด้วยวิธีนี้การเปลี่ยนแปลงจะแพร่กระจายเร็วขึ้นเมื่อฉันทำ จากนั้นฉันก็เตะ TTL กลับขึ้นมาอีกครั้ง
โดยทั่วไปแล้วจะเป็น <= the TTL แต่ไคลเอนต์บางตัวและ DNS proxies จะแคชการตั้งค่าเก่าไว้นานกว่า TTL
เห็นด้วยกับไมค์ โดยทั่วไปเราบอกลูกค้าของเรา 24-48 ชั่วโมงในการเผยแพร่ทั่วโลกแก่ผู้ให้บริการอินเทอร์เน็ตทุกราย ISP รายใหญ่ส่วนใหญ่ให้เกียรติ TTL และอัปเดตอย่างรวดเร็ว สถานที่ห่างไกลบางแห่งใช้เวลานานกว่า โชคดี!
เพื่อการใช้งานจริงเซิร์ฟเวอร์ DNS ทั้งหมดจะเห็นการเปลี่ยนแปลงเป็นเรคคอร์ด A หนึ่งระหว่างค่าทันทีและค่า TTL ในเรคคอร์ด A บทความวิกิพีเดียมี writeup ที่ดีในเรื่องนี้
แอปพลิเคชันส่วนบุคคลอาจไม่เห็นการเปลี่ยนแปลงภายใน TTL เนื่องจากแคช DNS ในเครื่องภายในเราเตอร์ไฟร์วอลล์ระบบปฏิบัติการและแอปพลิเคชัน ตามที่กล่าวไว้ในบทความ Wikipedia: "แคชเหล่านี้มักใช้เวลาแคชสั้นมาก - ตามลำดับหนึ่งนาที Internet Explorer มีข้อยกเว้นที่น่าทึ่ง: แคช DNS รุ่นล่าสุดใช้เวลาครึ่งชั่วโมง"
รีบูต (หรือวงจรพลังงานสำหรับเราเตอร์) โดยทั่วไปจะล้างแคช DNS ในเครื่องทั้งหมด แต่เห็นได้ชัดว่าคุณไม่สามารถคาดหวังว่าผู้ใช้ทุกคนจะสามารถรีบูตอุปกรณ์ทุกเครื่องหลังจากที่คุณเปลี่ยนระเบียน A
หากคุณไม่สามารถเปลี่ยนระเบียน A ของคุณได้โดยตรงแอปพลิเคชันใดก็ตามที่ทำการเปลี่ยนแปลง (เช่นซอฟต์แวร์แผงควบคุม) อาจแนะนำความล่าช้าของตัวเอง
เราใช้ค่าเริ่มต้นของ TTL 4 ชั่วโมง หากเราวางแผนที่จะเปลี่ยนเรคคอร์ด A เราจะลด TTL ของเรคคอร์ดเป็น 5 นาที (ต้องทำมากกว่า 4 ชั่วโมงก่อนที่การเปลี่ยนแปลงจะเข้าที่) หลังจากทำการเปลี่ยนแปลงเราได้ใส่ TTL กลับไปที่ 4 ชั่วโมง แอปพลิเคชันส่วนใหญ่เห็นการเปลี่ยนแปลงในทันที แต่มีผู้ใช้จำนวนเล็กน้อยที่จะโทรติดต่อด้วยปัญหาและจำเป็นต้องรีบูต
บทความ Wikipedia ยังมีการสนทนาที่ดีเกี่ยวกับ "การเผยแผ่": "หลายคนอ้างถึงเวลาในการเผยแพร่ลึกลับ 48 ชั่วโมงหรือ 72 ชั่วโมงอย่างไม่ถูกต้องเมื่อคุณทำการเปลี่ยนแปลง DNS ... " เซิร์ฟเวอร์รูท (ไม่ใช่ผู้รับจดทะเบียน) จะควบคุม TTL ในระเบียน NS ของโดเมนของคุณ คุณสามารถดูค่า TTL เหล่านี้ได้ด้วยตัวเองด้วยคำสั่ง nslookup ตอนนี้ TTL สำหรับระเบียน NS ของฉันในเซิร์ฟเวอร์ราก "F" ถูกตั้งค่าเป็น 2 วัน
ฉันบอกผู้ใช้เสมอเป็นเวลา 48 ชั่วโมงสำหรับการเผยแพร่อย่างเต็มรูปแบบเพื่อชดเชยปัญหาทั้งหมดที่กล่าวถึงข้างต้น กฎทั่วไปที่ควรจดจำคือมันคือ <= the TTL ยกเว้นกรณีที่คุณต้องการให้ ...
นอกเหนือจาก TTL (สิ่งที่คุณควบคุมดูคำแนะนำที่ยอดเยี่ยมของ Brian Clapper) และเวลาในการแคชที่นานขึ้นในบางแอปพลิเคชันนอกจากนี้ยังมีเวลาการซิงโครไนซ์ระหว่างเซิร์ฟเวอร์ชื่อที่เชื่อถือได้ อาจใกล้ศูนย์หากเซิร์ฟเวอร์ชื่อทุกเครื่องได้รับข้อความแจ้งเตือนและอาจใช้เวลาหลายชั่วโมง (ขึ้นอยู่กับการตั้งค่าของบันทึก SOA) หากพลาดข้อความแจ้งเตือน (สิ่งที่เกิดขึ้นบางครั้ง)
ดังนั้นเพื่อเน้นคำแนะนำของ Brian Clapper: วางแผนล่วงหน้า
หากคุณกำลังพูดถึง Windows และคุณกำลังพูดถึงภายในมันขึ้นอยู่กับ TTL ดั้งเดิม เมื่อเรารู้ล่วงหน้าว่าเราจะทำการเปลี่ยนแปลงเราจะตั้งค่า TTL บนค่า A ที่ต่ำเป็น ... เป็น 5 นาที จากนั้นเมื่อทำการเปลี่ยนแปลงเราได้เพิ่ม TTL กลับไปเป็นจำนวนปกติมากขึ้น
หากคุณกำลังพูดถึงบนอินเทอร์เน็ตการเดิมพันทั้งหมดจะปิด มีตัวควบคุมโดเมนแคชบางตัวที่เราเห็นว่าไม่สนใจ TTL อย่างสมบูรณ์ดังที่ได้กล่าวไปแล้ว ในกรณีดังกล่าวเราได้ผ่านกฎทั่วไป 48 ชั่วโมง อย่างไรก็ตามหากโดเมนของคุณโฮสต์ไว้ก่อนหน้านี้โดยผู้ให้บริการรายอื่นและพวกเขายังไม่ได้กำจัด SOA ในโดเมนของคุณดังนั้นลูกค้ารายใดก็ตามที่ใช้เซิร์ฟเวอร์ DNS ของพวกเขาจะยังคงผิด เราพบปัญหาดังกล่าวกับ BellSouth (ตอนนี้ AT&T)
ฉันเห็นคนส่วนใหญ่โดยเฉลี่ย 3-4 ชั่วโมง อย่างไรก็ตามฉันยังคงใช้ 7 วันเป็นกฎง่ายๆสำหรับการเปลี่ยนแปลงที่สมบูรณ์ โดยทั่วไปจะครอบคลุมผู้ใช้ทั้งหมดที่ไม่เล่น DNS ที่ดี
ประสบการณ์ของฉันคือการเปลี่ยนแปลง DNS อาจใช้เวลามากกว่าแปดชั่วโมงขึ้นไป แต่ทั้งหมดนี้ขึ้นอยู่กับระยะเวลาที่ลูกค้าจะแคชการตั้งค่า DNS ของพวกเขา
ลูกค้าส่วนใหญ่จะทำงานกับ TTL ที่คุณตั้งค่าไว้ อย่างไรก็ตามมีเซิร์ฟเวอร์ DNS บางตัวที่ได้รับการกำหนดค่าให้ละเว้น TTL ฉันเพิ่งเปลี่ยนที่อยู่ IP ของเว็บไซต์ของเรา เราต้องปล่อยให้เซิร์ฟเวอร์ทำงานบนที่อยู่ IP เก่าเป็นเวลาหลายสัปดาห์เพื่อตอบสนองต่อคำขอ เราต้องค้นหาลูกค้าที่เหลืออย่างละเอียดและขอให้พวกเขาทำความสะอาดแคช DNS และ / หรือรีบูตเพื่อกำจัด IP เก่า
มันอาจจะมากกว่า TTL ของเรคคอร์ด (แทนที่): ไคลเอนต์จำนวนมากเพิกเฉยต่อ TTL เมื่อมันต่ำเกินไปหรือผูกพันกับค่าอื่น ๆ (เช่นหนึ่งชั่วโมง) มีแคชอื่น ๆ Firefox (ตัวอย่าง) จะแคช DNS เป็นเวลาหนึ่งนาที (ไม่สนใจ TTL) แต่แพทช์ / การกำหนดค่าบางอย่างจะเพิ่มเป็นหนึ่งชั่วโมง
คำตอบที่เศร้า (แต่จริง) ขึ้นอยู่กับว่าใครขอคำตอบ (DNS) ของคุณ