เราใช้ GCP และ Cloud DNS เพื่อจัดการโดเมนของเรา และฉันกำลังพยายามแก้ปัญหาสำหรับกรณีการใช้งานเหล่านี้:
- มีบันทึกส่วนตัวสำหรับสิ่งต่างๆ เช่น ฐานข้อมูลที่สามารถแก้ไขได้ภายในเครือข่ายของบริษัทเท่านั้น (VPC ของเรา)
- ลบล้างบันทึกสาธารณะด้วย IP ส่วนตัวสำหรับการกำหนดเส้นทางทางเลือกภายในเครือข่ายของบริษัท
- สามารถออกความท้าทาย DNS01 และแก้ไขบันทึกภายในเครือข่ายของเราและต่อสาธารณะ เราต้องการสิ่งนี้เนื่องจากวิธีการทำงานของ cert-manager (ซึ่งเราใช้เพื่อออกใบรับรองด้วย letsencrypt)
ฉันได้ลองแก้ปัญหานี้ด้วยโซนสาธารณะและส่วนตัว (หรือที่เรียกว่า DNS แบบแยกขอบฟ้า) อย่างไรก็ตาม โซลูชันนี้จะแก้ปัญหากรณีการใช้งานที่ 1 และ 2 เท่านั้น และจะแก้ปัญหากรณีการใช้งานที่ 2 ก็ต่อเมื่อเราแน่ใจว่าโซนส่วนตัวมีสำเนาของ บันทึกทั้งหมดในโซนสาธารณะ (หากไม่มีคู่ส่วนตัว)
โซลูชันนี้ไม่ตรงกับกรณีการใช้งาน 3 เนื่องจากเซิร์ฟเวอร์ตัวจัดการใบรับรองของเราสร้างเรกคอร์ดในโซนสาธารณะ จากนั้นจึงไม่สามารถแก้ไขในโซนสาธารณะได้ เนื่องจากการตั้งค่าเฉพาะของเรา การปรับแต่ง cert-manager เพื่อแก้ไขทั้งสองโซนผ่านการกำหนดค่าในเครื่องบางอย่างนั้นไม่เหมาะ นอกจากนี้ยังเป็นการยากที่จะสร้างบันทึกในทั้งสองโซน ดังนั้นจึงไม่ใช่ทางออกที่ดีอีกต่อไป
สิ่งที่ฉันต้องการคือให้โซนส่วนตัวส่งต่อคำขอไปยังสาธารณะหากไม่มีบันทึกสำหรับคำขอเฉพาะ มีวิธีการทำเช่นนี้โดยเฉพาะโดยใช้ GCP Cloud DNS หรือไม่
อุดมคติ
nslookup -> โซนส่วนตัว -> โซนสาธารณะ
ขณะนี้เรามี
nslookup -> โซนส่วนตัว -> ข้อผิดพลาด (NXDOMAIN) หากไม่มีการบันทึก
ตัวอย่างเช่น,
#ขณะอยู่บนแล็ปท็อป
> nslookup ws1.example.com
...
ชื่อ: ws1.example.com
ที่อยู่: 34.111.111.111 # IP สาธารณะสำหรับเว็บเซิร์ฟเวอร์
# ขณะอยู่ในเครือข่าย GCP
> nslookup db.example.com
...
ชื่อ: db.example.com
ที่อยู่: 10.10.0.2 # IP ส่วนตัวสำหรับฐานข้อมูล
> nslookup ws1.example.com
...
ชื่อ: ws1.example.com
ที่อยู่: 10.0.0.10 # IP ส่วนตัว (จากโซนส่วนตัว) สำหรับเว็บเซิร์ฟเวอร์
วิธีนี้ใช้ได้ดีกับกรณีการใช้งานที่ 1 และ 2 แต่เมื่อเราพยายามแก้ไขระเบียนที่มีเฉพาะในโซนสาธารณะ...
#ขณะอยู่บนแล็ปท็อป
> nslookup ws1.example.com
...
ชื่อ: ws1.example.com
ที่อยู่: 34.111.111.111 # IP สาธารณะสำหรับเว็บเซิร์ฟเวอร์
> nslookup ws2.example.com # เรามีบันทึกนี้ในโซนสาธารณะเท่านั้น
...
ชื่อ: ws2.example.com
ที่อยู่: 34.111.111.112 # IP สาธารณะสำหรับเว็บเซิร์ฟเวอร์อื่น
# ขณะอยู่ใน GCP VPC
> nslookup ws1.example.com
...
ชื่อ: ws1.example.com
ที่อยู่: 10.0.0.1 # IP ส่วนตัว (แทนที่) สำหรับเว็บเซิร์ฟเวอร์
> nslookup ws2.example.com # เรามีบันทึกนี้ในโซนสาธารณะเท่านั้น
...
** เซิร์ฟเวอร์ไม่พบ ws2.example.com: NXDOMAIN # ล้มเหลวในการแก้ไข ควรดูที่ private แล้วก็ public zone แล้วแก้เป็น 34.111.111.112
ข้อเสนอแนะใด ๆ
เพื่อแก้ปัญหาชั่วคราว เราได้เปลี่ยนไปใช้ HTTP01 challenge สำหรับ cert-manager แต่เราต้องการใช้ DNS01 ถ้าเป็นไปได้