ฉันมีเครือข่ายคอมพิวเตอร์ขนาดเล็กที่สามารถย้ายระหว่างไซต์ได้
คอมพิวเตอร์เหล่านี้เชื่อมต่อกับสวิตช์ และหนึ่งในนั้นทำหน้าที่เป็นเซิร์ฟเวอร์ DHCP และเซิร์ฟเวอร์ DNS ผ่าน dnsmasq สำหรับเครือข่ายนี้ เรียกมันว่า MAINPC
DNS ใช้เพื่อระบุการจำแนกชื่อระหว่างคอมพิวเตอร์เหล่านี้เท่านั้น และหากคุณเพิ่มคอมพิวเตอร์เครื่องอื่นใน LAN ระบบจะเพิ่มไปยัง DNS ผ่าน dnsmasq
ชื่อ DNS ที่เหลือต้องได้รับการจัดการโดยเซิร์ฟเวอร์ DNS รอง นี่คือปัญหาของฉัน
ฉันไม่ต้องการฮาร์ดโค้ดเซิร์ฟเวอร์ DNS สำรองเช่น 8.8.8.8 เพราะบางครั้งคุณจะเสียบเครือข่ายทั้งหมดนี้ภายในเครือข่ายอื่นด้วยเซิร์ฟเวอร์ DNS ของตัวเอง ฉันต้องการให้ dnsmasq เป็น DNS รองที่ NetworkManager จัดเตรียม DNS
สิ่งที่ฉันทำถูกกำหนดไว้แล้ว DNS = ค่าเริ่มต้น
ในไฟล์ conf ใน /etc/NetworkManager/conf.d/
.
สิ่งนี้ทำให้ NetworkManager เขียน DNS ที่กำหนดโดย DHCP ไปยัง /etc/resolv.conf ซึ่ง dnsmasq อ่าน สิ่งนี้ช่วยแก้ปัญหาส่วนใหญ่ได้
พีซีที่ใช้ MAINPC เป็นเซิร์ฟเวอร์ DNS ทำงานได้ดี พวกเขาส่งคำถามไปยัง MAINPC ซึ่งรับคำตอบจากโดเมนท้องถิ่นหากเป็นไปได้ และหากไม่เปลี่ยนเส้นทางไปยัง DNS ที่กำหนดโดย NetworkManager
แต่ MAINPC เองนั้นใช้ DNS ที่กำหนดโดย NetworkManager เท่านั้น และไม่สามารถแก้ไขพีซีเครื่องอื่นในเครือข่ายได้ โดยสรุป มันไม่ได้ใช้เซิร์ฟเวอร์ DNS ของตัวเองเป็นหลัก
วิธีนี้สามารถทำได้?
โดยทั่วไปฉันต้องการให้ /etc/resolv.conf ของฉันมีลักษณะดังนี้:
# สร้างโดย NetworkManager
ค้นหา internal_domain other_domain
เนมเซิร์ฟเวอร์ MAINPC_IP
เนมเซิร์ฟเวอร์ IP_MANDATED_BY_NETWORK_MANAGER
ขณะนี้ฉันจัดการได้ด้วยการบังคับเซิร์ฟเวอร์ MAINPC DNS ในไฟล์ /etc/netplan/
ไฟล์:
# สร้างโดย NetworkManager
ค้นหา internal_domain other_domain
เนมเซิร์ฟเวอร์ IP_MANDATED_BY_NETWORK_MANAGER
เนมเซิร์ฟเวอร์ MAINPC_IP