การย้ายข้อมูลไปยัง Anycast และ RFC 8484 DoH

ในการเปิดตัว DoH ในโดเมน dns.google และที่อยู่ IP ของ Anycast ที่รู้จักกันดีสำหรับ DNS สาธารณะของ Google บริการ DoH แบบเบต้าในโดเมน dns.google.com ที่ใช้ที่อยู่ IP อื่นๆ ได้เลิกใช้งานแล้วและจะยุติการให้บริการ

นอกจากนี้ เวอร์ชันทดลองของ RFC 8484 API ก็เลิกใช้งานไปแล้วเช่นกัน แต่ไม่รองรับ dns.google/experimental และจะมีการย้ายข้อมูล dns.google/experimental ไปยัง dns.google/dns-query

ไทม์ไลน์

วันที่ ขั้นตอนการยุติการให้บริการ
2019-07-23 2019-08-01 dns.google.com/experimental เปลี่ยนเส้นทางไปยัง dns.google/dns-queryDONE
2019-08-05 2019-08-21 dns.google.com แปลค่าเป็น Google Public DNS anycast ที่อยู่ IPDONE
2019-09-24 ที่อยู่ IP เก่าสำหรับ dns.google.com เปลี่ยนเส้นทางไปยัง dns.googleDONE
2020-06-23 dns.google.com จะเปลี่ยนเส้นทางไปยัง dns.google ทุกที่

การเปลี่ยนแปลงไทม์ไลน์นี้จะได้รับการอัปเดตที่นี่ และโพสต์ไปยัง public-dns-announce สมัครรับข่าวสารอัปเดตจากรายชื่ออีเมลที่มีปริมาณน้อย

วันพฤหัสบดีที่ 1 สิงหาคม 2019

คำขอสำหรับ https://dns.google.com/experimental จะได้รับการเปลี่ยนเส้นทาง HTTP 301 ไปยัง https://dns.google/dns-query

แอปพลิเคชัน DoH ที่ใช้ JSON API ที่ /resolve จะไม่ได้รับผลกระทบ

วันพุธที่ 21 สิงหาคม 2019

dns.google.com แก้ไขเป็นที่อยู่ IP ของ Anycast สำหรับ DNS สาธารณะของ Google

การดำเนินการนี้โปร่งใสสำหรับแอปพลิเคชัน DoH ส่วนใหญ่โดยไม่ต้องมีการเปลี่ยนแปลง

วันอังคารที่ 24 กันยายน 2019

การค้นหา DoH ที่ไปยังที่อยู่ IP ของ dns.google.com เดิมจะได้รับการเปลี่ยนเส้นทาง HTTP 301 ไปยัง https://dns.google/

การดำเนินการนี้อาจส่งผลต่อแอปพลิเคชัน DoH ที่ใช้ RFC 8484 หรือ JSON API

แอปพลิเคชันที่ส่งคำขอ DoH ไปยังที่อยู่ IP แบบฮาร์ดโค้ด กำหนดค่า หรือแคชถาวรต้องรองรับอย่างใดอย่างหนึ่งหรือทั้ง 2 อย่างต่อไปนี้

วันอังคารที่ 23 มิถุนายน 2020

การค้นหา DoH ไปยัง dns.google.com ในที่อยู่ IP ของ Anycast จะได้รับการเปลี่ยนเส้นทาง HTTP 301 ไปยัง dns.google

การดำเนินการนี้อาจส่งผลต่อแอปพลิเคชัน DoH ที่ใช้ RFC 8484 หรือ JSON API

หากต้องการทำงานกับ Google DoH แอปพลิเคชันต้องรองรับสิ่งต่อไปนี้อย่างน้อย 1 รายการ

การเปลี่ยนแปลงสําหรับไคลเอ็นต์ DoH

ติดตามการเปลี่ยนเส้นทาง HTTP

เซิร์ฟเวอร์ DoH เป็นเพียงเซิร์ฟเวอร์ HTTP ที่จัดการการค้นหา DNS เท่านั้น ด้วยเหตุนี้ จึงอาจแสดงการเปลี่ยนเส้นทาง HTTP (รหัส 301, 302, 307 หรือ 308) และไคลเอ็นต์ DoH ควรติดตามการเปลี่ยนเส้นทางเหล่านั้นเช่นเดียวกับไคลเอ็นต์ HTTP อื่นๆ

นักพัฒนาซอฟต์แวร์สามารถตรวจสอบการรองรับการเปลี่ยนเส้นทาง HTTP โดยใช้ https://8.8.8.8/experimental หรือ https://8.8.8.8/resolve เป็นฐานสำหรับ URL DoH โดยจะแสดงการเปลี่ยนเส้นทาง HTTP 301 ไปยัง https://dns.google/dns-query และ https://dns.google/resolve (เก็บพารามิเตอร์ GET ทั้งหมด)

ใช้โดเมน dns.google สำหรับ Google DoH

แอปพลิเคชัน DoH ควรใช้ dns.google แทน dns.google.com ทั้งนี้ไม่ว่าจะใช้ RFC 8484 หรือ JSON API แอปพลิเคชัน DoH ที่มีรายการรีโซลเวอร์ DoH แบบฮาร์ดโค้ดหรือที่กำหนดค่าไว้แล้วจะต้องแทนที่ dns.google.com ด้วย dns.google ใน URL หรือเทมเพลต URI ใดก็ตาม

ใช้ที่อยู่ IP Anycast ของ Google Public DNS

แอปพลิเคชัน DoH ที่ส่งคำขอ DoH ไปยังรายการที่อยู่ IP แบบฮาร์ดโค้ดหรือที่กำหนดค่าไว้ (แม้ว่าจะใช้เพียง Bootstrapping) จำเป็นต้องแทนที่ที่อยู่เดิมของ dns.google.com ด้วยที่อยู่ IP ของ Anycast สำหรับ DNS สาธารณะของ Google

เทมเพลต URI สำหรับการกำหนดค่า

แอปพลิเคชัน DoH ต้องมีความสามารถในการกำหนดค่าสำหรับปลายทาง วิธีการที่แนะนำและเป็นมาตรฐานในการดำเนินการนี้คือการใช้เทมเพลต URI นักพัฒนาแอปพลิเคชัน DoH ที่มีการกำหนดค่าได้อย่างสมบูรณ์ควรแจ้งให้ผู้ใช้ทราบเกี่ยวกับ URL ใหม่ (เทมเพลต URI: https://dns.google/dns-query{?dns})

ใช้ https://dns.google/dns-query สำหรับ RFC 8484 DoH

แอปพลิเคชัน DoH ที่มีรายการรีโซลเวอร์ DoH แบบฮาร์ดโค้ดหรือที่กำหนดค่าไว้แล้วจะต้องแทนที่ URL https://dns.google.com/experimental สำหรับ DoH API สำหรับฉบับร่างอินเทอร์เน็ตด้วย https://dns.google/dns-query และยืนยันการปฏิบัติตามข้อกำหนด RFC 8484 โดยสมบูรณ์

/experimental API (มีให้บริการที่ dns.google.com เท่านั้น) คำค้นหาที่ยอมรับโดยใช้การเข้ารหัส Base64 แบบไม่ใช่ Websafe และประเภทเนื้อหา application/dns-udpwireformat ที่ /dns-query API ปฏิเสธ (ใช้ได้ที่ dns.google เท่านั้น) ความแตกต่างเหล่านี้จะอธิบายไว้ในสองส่วนต่อไปนี้

ใช้การเข้ารหัส Base64Url สำหรับพารามิเตอร์ GET dns

ใช้การเข้ารหัส Websafe Base64Url สำหรับพารามิเตอร์ dns ในคำขอ GET โดยแทนที่ Base64 (+ /) ด้วย (- _) และนำอักขระระยะห่างจากขอบ (=) ออก

ยอมรับและส่ง application/dns-message

ใช้ application/dns-message ในส่วนหัว "ยอมรับ" (และสำหรับ RFC 8484 POST ในส่วนหัว Content-Type) และยอมรับให้เป็น "ประเภทเนื้อหาของการตอบกลับ"

การใช้ Content-Type แบบเก่าสำหรับ POST จะไม่สำเร็จ หากมี 415 ประเภทสื่อที่ไม่รองรับ

แอปพลิเคชันที่ใช้ Content-Type แบบเก่าในส่วนหัว "ยอมรับ" จะได้รับการตอบกลับด้วยแอปพลิเคชัน Content-Type/dns-message แอปพลิเคชัน DoH ที่ยอมรับรายการเหล่านี้ และอย่าเพิกเฉยเนื่องจากประเภทเนื้อหาที่ไม่คาดคิดจะยังคงใช้งานได้