DNS-over-TLS

เกริ่นนำ

คำค้นหาและการตอบกลับ DNS แบบดั้งเดิมจะส่งผ่าน UDP หรือ TCP โดยไม่มีการเข้ารหัส ซึ่งเสี่ยงต่อการดักฟังและปลอมแปลง (รวมถึงการกรองอินเทอร์เน็ตผ่าน DNS) การตอบกลับจากรีโซลเวอร์แบบเรียกซ้ำถึงไคลเอ็นต์มีความเสี่ยงมากที่สุดต่อการเปลี่ยนแปลงที่ไม่พึงประสงค์หรือเป็นอันตราย ขณะที่การสื่อสารระหว่างรีโซลเวอร์แบบวนซ้ำและเนมเซิร์ฟเวอร์ที่เชื่อถือได้มักจะรวมการปกป้องเพิ่มเติมไว้ด้วย

DNS สาธารณะของ Google มีการแปลง DNS ผ่านการเชื่อมต่อ TCP ที่เข้ารหัส TLS ตามที่ RFC 7858 ระบุเพื่อแก้ไขปัญหาเหล่านี้ DNS-over-TLS ช่วยเพิ่มความเป็นส่วนตัวและความปลอดภัยระหว่างไคลเอ็นต์และรีโซลเวอร์ การดำเนินการนี้จะเสริม DNSSEC และปกป้องผลลัพธ์ที่ตรวจสอบแล้วของ DNSSEC จากการแก้ไขหรือการปลอมแปลงระหว่างทางไปยังไคลเอ็นต์

วิธีการทำงาน

ระบบไคลเอ็นต์ใช้ DNS-over-TLS กับ 2 โปรไฟล์ ซึ่งได้แก่ ความเป็นส่วนตัวแบบเข้มงวดหรือแบบตามโอกาส เมื่อใช้โปรไฟล์ความเป็นส่วนตัวที่เข้มงวด ผู้ใช้จะกำหนดค่าชื่อเซิร์ฟเวอร์ DNS (ชื่อโดเมนการตรวจสอบสิทธิ์ใน RFC 8310) สำหรับบริการ DNS-over-TLS และไคลเอ็นต์จะต้องสร้างการเชื่อมต่อ TLS ที่ปลอดภัยในพอร์ต 853 ไปยังเซิร์ฟเวอร์ DNS ได้ ความล้มเหลวในการสร้างการเชื่อมต่อที่ปลอดภัยเป็นข้อผิดพลาดที่เกิดขึ้นจริงและจะทำให้ไม่มีบริการ DNS สำหรับไคลเอ็นต์

เมื่อใช้โปรไฟล์ความเป็นส่วนตัวตามโอกาส ที่อยู่ IP ของเซิร์ฟเวอร์ DNS อาจได้รับการกำหนดค่าโดยตรงโดยผู้ใช้หรือได้รับจากเครือข่ายภายใน (โดยใช้ DHCP หรือวิธีอื่นๆ) รีโซลเวอร์ไคลเอ็นต์จะพยายามเชื่อมต่อที่ปลอดภัยบนพอร์ต 853 ไปยังเซิร์ฟเวอร์ DNS ที่ระบุ เมื่อมีการเชื่อมต่อที่ปลอดภัย การตั้งค่านี้จะให้ความเป็นส่วนตัวสำหรับการค้นหาของผู้ใช้จากผู้สังเกตการณ์แบบแพสซีฟในเส้นทาง เนื่องจากไคลเอ็นต์ไม่ได้ยืนยันความถูกต้องของเซิร์ฟเวอร์ ไคลเอ็นต์จึงไม่ได้รับการปกป้องจากผู้โจมตีที่มีการใช้งาน หากไคลเอ็นต์ไม่สามารถสร้างการเชื่อมต่อที่ปลอดภัยบนพอร์ต 853 ไคลเอ็นต์จะสื่อสารกับเซิร์ฟเวอร์ DNS ในพอร์ต DNS มาตรฐาน 53 ผ่าน UDP หรือ TCP โดยไม่มีการรักษาความปลอดภัยหรือความเป็นส่วนตัวใดๆ การใช้ Opportunistic Privacy มีจุดประสงค์เพื่อสนับสนุนการใช้ความเป็นส่วนตัวที่เพิ่มขึ้นอย่างค่อยเป็นค่อยไปเพื่อให้มีการนำโปรไฟล์ความเป็นส่วนตัวที่เข้มงวดไปใช้อย่างแพร่หลาย

เมื่อใช้โปรไฟล์ความเป็นส่วนตัวที่เข้มงวด รีโซลเวอร์สตับจะสร้างการเชื่อมต่อ DNS-over-TLS ตามขั้นตอนต่อไปนี้

  1. มีการกำหนดค่ารีโซลเวอร์ DNS-over-TLS ด้วยชื่อรีโซลเวอร์ DNS-over-TLS dns.google
  2. รีโซลเวอร์สตับจะรับที่อยู่ IP ของ dns.google โดยใช้รีโซลเวอร์ DNS ในเครื่อง
  3. รีโซลเวอร์สตับจะเชื่อมต่อ TCP ไปยังพอร์ต 853 ที่ที่อยู่ IP ดังกล่าว
  4. รีโซลเวอร์สตับจะเริ่มแฮนด์เชค TLS กับรีโซลเวอร์ DNS สาธารณะของ Google
  5. เซิร์ฟเวอร์ DNS สาธารณะของ Google จะส่งคืนใบรับรอง TLS พร้อมเชนใบรับรอง TLS แบบเต็มรูปแบบ ไปจนถึงใบรับรองรูทที่เชื่อถือได้
  6. รีโซลเวอร์สตับจะยืนยันตัวตนของเซิร์ฟเวอร์ตามใบรับรองที่แสดง
    • หากตรวจสอบข้อมูลประจำตัวไม่ได้ การแปลงชื่อ DNS จะไม่สำเร็จและตัวแก้ไขสตับจะแสดงข้อผิดพลาด
  7. หลังจากสร้างการเชื่อมต่อ TLS แล้ว รีโซลเวอร์สตับจะมีเส้นทางการสื่อสารที่ปลอดภัยระหว่างเซิร์ฟเวอร์ DNS สาธารณะของ Google
  8. ขณะนี้รีโซลเวอร์สตับสามารถส่งคำค้นหา DNS และรับการตอบกลับผ่านการเชื่อมต่อได้แล้ว

เมื่อใช้โปรไฟล์ความเป็นส่วนตัวตามโอกาส ไคลเอ็นต์จะพยายามสร้างการเชื่อมต่อ TLS ที่ปลอดภัยกับเซิร์ฟเวอร์เป็นครั้งแรก ซึ่งทำในลักษณะเดียวกับข้างต้น โดยมีข้อแตกต่างที่สำคัญอย่างหนึ่งคือ ไคลเอ็นต์ไม่ได้ทำการตรวจสอบใบรับรอง ซึ่งหมายความว่าข้อมูลประจำตัวของเซิร์ฟเวอร์จะไม่สามารถเชื่อถือได้ หากสร้างการเชื่อมต่อ TLS ในพอร์ต 853 ไปยังเซิร์ฟเวอร์ไม่ได้ รีโซลเวอร์สตับจะกลับไปคุยกับเซิร์ฟเวอร์ DNS ในพอร์ต 53

ความเป็นส่วนตัว

นโยบายความเป็นส่วนตัวของเรามีผลบังคับใช้กับบริการ DNS-over-TLS

ในวันที่ 27/06/2019 เราได้เปิดใช้ซับเน็ตไคลเอ็นต์ EDNS (ECS) อีกครั้งสำหรับบริการ DNS-over-TLS ECS ถูกปิดใช้เมื่อเปิดตัวบริการ

การสนับสนุนระดับมาตรฐาน

DNS สาธารณะของ Google จะใช้ DNS-over-TLS ตาม RFC 7858 นอกจากนี้ เรารองรับคำแนะนำต่อไปนี้เพื่อให้บริการ DNS ที่มีคุณภาพสูงและเวลาในการตอบสนองต่ำ

เริ่มใช้งาน

ดูinstructionsเพื่อกําหนดค่าในอุปกรณ์ที่ใช้ Android 9 (Pie) ขึ้นไป

นอกจากนี้ ยังรองรับ DNS-over-TLS สำหรับบริการ Google Public DNS64 แบบ IPv6 เท่านั้นด้วย โปรดทราบว่าเราไม่แนะนำให้กำหนดค่า DNS64 สำหรับอุปกรณ์เคลื่อนที่ที่จะเชื่อมต่อกับหลายเครือข่าย เนื่องจาก DNS64 จะใช้ได้เฉพาะเมื่อ IPv6 พร้อมใช้งานเท่านั้น