Score:0

DNSmasq และ NetworkManager DNS

ธง mp

ฉันมีเครือข่ายคอมพิวเตอร์ขนาดเล็กที่สามารถย้ายระหว่างไซต์ได้

คอมพิวเตอร์เหล่านี้เชื่อมต่อกับสวิตช์ และหนึ่งในนั้นทำหน้าที่เป็นเซิร์ฟเวอร์ 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
David avatar
cn flag
Do you have 2 DNS servers you question is not clear.
mp flag
The small portable network of pcs has a dns. Imagine it like the pcs of a Autonomous car. They have an internal dns for finding each other. You can connect the car network to another network via wifi, and in this case, non local domain names should be redirected to the dns provided by the wifi.
Score:0
ธง mp

ฉันเชื่อว่าฉันสามารถแก้ปัญหาได้

NetworkManager จะเขียนข้อมูล DNS ที่ได้รับไปยัง /run/NetworkManager/resolv.conf นอกเหนือจาก /etc/resolv.conf

ก่อนอื่นฉันปิดการเขียนไปที่ /etc/resolv.conf โดย:

$ cat /etc/NetworkManager/conf.d/disable-resolv-conf.conf
[หลัก]
# อย่าเขียน /etc/resolv.conf แต่จะเขียน /run/NetworkManager/resolv.conf
DNS = ไม่มี

ฉันแทนที่ /etc/resolv.conf ด้วยไฟล์ที่มี localhost IP เพื่อใช้ dnsmasq เป็นเซิร์ฟเวอร์ DNS

$cat /etc/resolv.conf 
ค้นหา my-private.lan
เนมเซิร์ฟเวอร์ 127.0.0.53

ในที่สุดฉันสั่งให้ dnsmasq อ่าน /run/NetworkManager/resolv.conf แทน /etc/resolv.conf.

แมว /etc/dnsmasq.d/networkmanager-dns.conf
# NetworkManager จะเขียน DNS ที่ได้รับจากเครือข่ายที่เชื่อมต่อไว้ที่นี่
# เราจะใช้สิ่งเหล่านี้เป็น DNS รอง
resolv-file=/run/NetworkManager/resolv.conf

และในเครื่องของฉัน ฉันต้องเปลี่ยนการอนุญาตของ /run/NetworkManager ไดเร็กทอรีเนื่องจากค่าเริ่มต้นจะไม่อนุญาตให้ผู้ใช้รายอื่นอ่าน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา