Google Public DNS Cache

ทาง Google ได้ประกาศบอกว่าตัว Google Public DNS นั้น เป็น Recursive DNS resolver โดยมี IP addresses ดังนี้

The Google Public DNS IP addresses (IPv4)

  • 8.8.8.8
  • 8.8.4.4

The Google Public DNS IPv6 addresses

  • 2001:4860:4860::8888
  • 2001:4860:4860::8844

จากนั้นลองหาข้อมูลการทำงานของ resolver มาดูว่ามีการทำงานแบบอะไรบ้าง ดังนี้

Recursive Resolution (แบบเวียนซ้ำ)

  1. เมื่อ Name Server  ไม่สามารถหาคำตอบ (คือหาการแมปปิงไอพีได้)
  2. Name Server จะส่งคำร้องขอไปยัง Name Server ตัวอื่นๆ เพื่อให้ช่วยทำการแมปปิงไอพี
  3. จนกว่า จะได้ตอบส่งกลับมายัง resolver (ซึ่งกรณีไคลเอ็นต์เป็นการเรียกใช้งานจาก Windows, resolver ก็คือตัว DNS Cache Client service นั้นเอง)

Iterative Resolution (แบบทำซ้ำ)

  1. เมื่อไคลเอ็นต์ส่งคำร้องขอไปยัง Name Server และ  Name Server ไม่สามารถทำแมปปิงไอพีได้
  2. Name Server จะส่งแอดเดรสของ Name Server อื่นๆ ที่ลำดับถัดมาให้แทน
  3. จากนั้นไคล์เอ็นต์ ต้องส่งคำร้องใหม่ไปยัง Name Server ใหม่นั้นอีกต่อไป

ดังนั้นขออธิบายตามความเข้าใจของตัวเองที่ Google Public DNS เป็นแบบ Recursive DNS resolver ดังนี้

  • คำว่า Recursive ในที่นี้ คือ การ Recursive resolution
    โดยตัวของ Google DNS เอง ไม่มีการส่งไอพีของ Name Server ใหม่ ไปให้ไคลเอ็นต์ เพื่อถามต่อ
  • นั้นคือ ฝั่งไคลเอ็นต์ (resolver) ทำการส่ง query เพื่อหาไอพี ไปยัง  Google DNS เพียงแค่ครั้งเดียวเท่านั้น
  • กลไกการถาม – ตอบจนกว่าจะได้ไอพีที่ต้องการจริงๆ นั้นเป็นหน้าที่ของ Google DNS ที่ติดต่อกับระบบโดเมนภายนอก ซึ่งทำงานแบบ Iterative resolution คือไล่ถาม Name Server  ไปเรื่อย ๆ จากบนสุด Root Servers -> TLDs (Top-Level Domain) -> จนถึง Name Server ของ domain
  • ตัวอย่างอธิบายเพิ่มเติม คือ
    • Google DNS ต้องการได้ไอพีของ www.mr2t.com / หากไม่มีข้อมูลดังกล่าวอยู่ใน cache ก็จะไปถาม Root Servers
    • แล้ว Root Servers ตอบว่ามันเป็น .com หนิ ! ควรไปถาม TLDs .com
    • จากนั้น Google DNS ถามต่อ TLDs .com ว่า Name Server ของ mr2t.com ไอพีอะไร ? จะได้ถามไอพี www.mr2t.com ต่อ
    • จากนั้น Google DNS ถาม Name Server ของ mr2t.com ว่า www.mr2t.com เป็นไอพีอะไร ?
    • เมื่อได้คำตอบแล้ว Google DNS เก็บข้อมูลดังกล่าวไว้ใน Cache ตัวเอง และ ตอบไปยังฝั่งไคลเอ็นต์ (resolver) ต่อไป
  • ถือว่าเป็นการทำงานแบบ Standard Name Resolution ที่มีทั้งลักษณะการทำงานแบบ Iterative resolution และ Recursive resolution ประกอบกัน

Thailand ISP DNS Caching TTL (Time-to-Live)

เป็นที่ทราบกันส่วนใหญ่อยู่แล้วว่า หากปรับเปลี่ยน IP Address ย่อมส่งผลต่อเรื่องการ update A records ของ DNS ด้วย
กรณีที่ต้องการให้เว็บไซต์ของเราสามารถใช้งานได้ต่อเนื่องไม่สะดุด เวลาที่เรียกใช้งานมาไม่เจอ This page can’t be displayed อะไรพวกนี้
จำเป็นต้องมีระยะเวลาสำหรับให้ DNS Caching ของ ISP ต่าง ๆ update records เป็นไอพีใหม่ด้วย

เมื่อสิ้นเดือน 09/2557 ที่ผ่านมาได้มีโอกาสตรวจดูค่า TTL ของ ISP เมืองไทย รวมถึงค่ายมือถือ 3G/4G ด้วยนะครับ
พบว่าค่า TTL มากสุดเป็น 1 วัน (86400 secs) ซึ่งเป็นค่า TTL ที่เขาตั้งเอง อาจเหตุผลคือ ลดโหลด หรือ traffic ที่ใช้งานก็แล้วแต่ที่เลย
แต่ดูเหมือนจะตั้งสูงไปหน่อยกว่าที่ควรจะเป็น บางที่ก็ใช้ค่า TTL ที่รับมาจาก Authorize Server ของ A record นั้น ๆ เลย
ซึ่งโอเคเลย แต่ก็ต้องมีเงื่อนไขด้วยนะ หากค่า TTL ที่ตั้งมานั้นน้อยกว่าควรจะเป็นจริง ๆ

ดังนั้นจำเป็นต้องมีเว็บไซต์ทั้ง 2 ไอพี (คือไอพีเดิมและไอพีใหม่) เพราะว่าค่า TTL บน DNS Caching ของ ISP มีค่าต่างกัน ดังนั้นเวลาที่จะไป request ไอพีใหม่ก็จะช้านานต่างกัน
สำหรับ Google DNS Cache ที่เป็นที่นิยมใช้งานค่อนข้างมากในปัจจุบัน เขามีเครื่องมือที่ช่วยเหลือในลักษณะแบบนี้ เจ้าของ domain สามารถเข้าไปเคลียร์ cache ราย rerord ที่ต้องการได้เลย

Flush Google DNS Cache

เราจะเคลียร์ข้อมูลใน Google Cache ได้อย่างไร ?
(อ่านขั้นตอนและดูรูปด้านล่างประกอบก่อนได้เลย)

  1.  เข้าไปที่ https://developers.google.com/speed/public-dns/cache
  2. กรอก captcha code
  3. ป้อน Domain Name:  อันนี้คือชื่อที่เราต้องการจะ flush เช่น mr2t.com หรือ www.mr2t.com หรือ mx1.mr2t.com
  4. เลือก Resource record (RR) ที่ต้องการจะ Flush ให้สอดคล้องกับชื่อในข้อ 3
  5. กด Flush Cache ได้เลย

How to Flush Google DNS Cache

กรณีที่ต้องการจะ flush ทั้ง domain แล้วคุณมีหลายชื่อมาก เช่นทั้ง *.mr2t.com เลย
ก็สามารถ submit ticket ได้ที่ https://code.google.com/a/google.com/p/public-dns/issues/entry

How to Flush Google DNS Cache