ฉันพยายามที่จะบรรลุสิ่งต่อไปนี้:
- เนมเซิร์ฟเวอร์สาธารณะสำหรับโดเมนของฉันซึ่งชี้
ตัวอย่าง.คอม
ไปยังที่อยู่ IP สาธารณะ
- เนมเซิร์ฟเวอร์ส่วนตัวสำหรับโดเมนเดียวกันที่ทำงานภายใน LAN ซึ่งชี้ไคลเอนต์ไปยังที่อยู่ IP ส่วนตัวบน LAN เดียวกันแทน
- เปิดใช้งาน DNSSEC
แน่นอนว่าการบรรลุจุดแรกและจุดสุดท้ายร่วมกันนั้นค่อนข้างง่าย ดังนั้นการทำให้องค์ประกอบส่วนตัวทำงานได้นั่นคือปัญหา
ในแง่ของการตั้งค่าจริงของฉัน:
- ฉันใช้บริการ DNS ของ Cloudflare ซึ่งฉันมีบันทึก A สำหรับโดเมนของฉันที่ชี้ไปยังที่อยู่ IP สาธารณะและเปิดใช้งาน DNSSEC
- ที่ผู้รับจดทะเบียนของฉัน ฉันได้เพิ่มบันทึก DS ตามสิ่งที่ Cloudflare มอบให้ฉันและกำหนดค่าเนมเซิร์ฟเวอร์ของ Cloudflare ทั้งหมดนี้ใช้งานได้ดีตามที่คุณคาดหวัง
- ภายในฉันกำลังเรียกใช้ Pi-Hole (ตั้งค่าเป็นเซิร์ฟเวอร์ DNS สำหรับไคลเอนต์บน LAN ของฉัน) ซึ่งกำหนดค่าโดยเปิดใช้งาน DNSSEC และชี้ไปที่อินสแตนซ์ CoreDNS ในเครื่องเป็นตัวแก้ไขอัปสตรีม
- ใน CoreDNS ฉันมีโซนที่กำหนดค่าไว้สำหรับ
ตัวอย่าง.คอม
ซึ่งลงนามด้วยคีย์ที่สร้างโดย coredns-keygen
. สิ่งนี้มีบันทึกที่ชี้ไปยังที่อยู่ IP ภายใน
- ฉันมีบันทึก DS ที่สองที่ผู้รับจดทะเบียนของฉันตามรหัสที่ใช้ภายในโดย CoreDNS
เกิดอะไรขึ้น:
- การตั้งค่าทั่วไปใช้สำหรับแก้ไขโดเมนที่ไม่ใช่ของฉัน
- Pi-Hole ตอบกลับด้วย
SERVFAIL
และบันทึก ถูกทอดทิ้ง
เมื่อฉันพยายามแก้ไขโดเมนของฉัน
- แต่ถ้าฉันชี้ไคลเอ็นต์ไปที่ CoreDNS โดยตรง (เช่น กับ
ขุด
) ฉันได้รับการตอบสนองที่คาดหวังด้วยที่อยู่ IP ของ LAN
- นอกจากนี้ ถ้าฉันปิดใช้งาน DNSSEC ใน Pi-Hole ก็ใช้งานได้ดี
ดังนั้นคำถามของฉันคือ:
- สิ่งที่ฉันพยายามบรรลุเป็นไปได้หรือไม่?
- ฉันเริ่มสงสัยว่าการมีระเบียน DS แยกต่างหากที่ผู้รับจดทะเบียนของฉันนั้นผิดหรือไม่ แต่ฉันไม่คิดว่าฉันจะสามารถดึงคีย์ส่วนตัวที่ Cloudflare ใช้อยู่ และไม่สามารถอัปโหลดคีย์ที่กำหนดเองได้ ดังนั้นฉันจึงไม่แน่ใจว่าจะใช้ได้อย่างไร ปุ่มเดียวกันสำหรับสาธารณะและส่วนตัว
- มีเหตุผลใดบ้างที่ดูเหมือนว่าจะได้ผลหากฉันแนะนำลูกค้าของฉันไปที่ CoreDNS โดยตรง แต่ Pi-Hole ปฏิเสธที่จะให้ความร่วมมือ
ขอบคุณ!