วิธีทำให้ NetworkManager เพิ่มเซิร์ฟเวอร์ DNS ที่ด้านบนของ /etc/resolv.conf


11

ตอนนี้ /etc/resolv.conf ของฉันจะเป็นดังนี้:

# Generated by NetworkManager
nameserver 10.165.246.33
nameserver 192.135.82.60
nameserver 10.165.74.2

สองเนมเซิร์ฟเวอร์แรกจะถูกกำหนดค่าโดยอัตโนมัติผ่าน DHCP อันสุดท้ายคืออันที่ฉันเพิ่มด้วยตนเองใน NetworkManager เป็นชื่อที่สำคัญที่สุดเนื่องจากช่วยแก้ไขชื่อโดเมนภายในของเรา (เช่นbuild-server-17.our-company-domain.com)

ปัญหาคือ NetworkManager เพิ่มที่ด้านล่างของ/etc/resolv.confดังนั้นเมื่อเข้าถึง URL อินทราเน็ตเบราว์เซอร์ของฉันพยายามแก้ไขโดยใช้สองเซิร์ฟเวอร์แรกและใช้เวลานาน

ฉันจะทำให้ NetworkManager เพิ่มเซิร์ฟเวอร์ DNS ที่กำหนดค่าด้วยตนเองได้อย่างไรก่อนที่จะถูกกำหนดค่าโดยอัตโนมัติ


1
โดยทั่วไปเซิร์ฟเวอร์ DNS ทั้งหมดใน resolv.conf ของคุณควรส่งคืนผลลัพธ์เดียวกัน มีเซิร์ฟเวอร์ผสมในนั้นมีสูตรสำหรับความล้มเหลวเป็นระยะและความเจ็บปวดมากมาย
Philip Kendall

คำตอบ:


3

ฉันไม่เห็นว่าจะใช้ระบบใดในการระบุเฉพาะเจาะจง แต่หากคุณใช้อยู่resolvconfให้ลองใช้วิธีต่อไปนี้ในฐานะ root ( su -หรือsudo -i):

echo 'nameserver 10.165.74.2' >> /etc/resolvconf/resolv.conf.d/head
resolvconf -u

มีคำเตือนในไฟล์ที่ระบุว่าการเปลี่ยนแปลงด้วยตนเองจะถูกเขียนทับ แต่ในบริบทข้อความนำไปใช้ไม่ได้/etc/resolv.conf/etc/resolvconf/resolv.conf.d/head

สิ่งนี้ควรวางเซิร์ฟเวอร์ชื่อที่ต้องการเป็นอันดับแรกในรายการ แน่นอนถ้าใช้งานได้กับระบบปฏิบัติการของคุณแล้ว 10.165.74.2 สามารถลบได้จาก NetworkManager

ตัวแก้ไขท้องถิ่นdnsmasqยังเป็นเส้นทางที่ยอดเยี่ยมไปข้างหน้า การใช้dnsmasqหนึ่งสามารถใช้การควบคุม DNS และ DHCP ได้มากขึ้น ตัวอย่างเช่นในสถานการณ์นี้dnsmasqสามารถเคียวรีเซิร์ฟเวอร์ชื่อเฉพาะตามชื่อโดเมนที่ระบุด้วยserverตัวเลือก ดูตัวอย่างจากdnsmasq.confที่อาจเกี่ยวข้องกับวัตถุประสงค์ของคุณด้านล่าง

# Add other name servers here, with domain specs if they are for
# non-public domains.
server=/our-company-domain.com/10.165.74.2

ปรับปรุง

ขอบคุณที่กล่าวถึงระบบปฏิบัติการ บน CentOS 7 มีหลายวิธี ใน GUI คลิกแอปพลิเคชั่น> เครื่องมือระบบ> การตั้งค่า> เครือข่าย เลือกการเชื่อมต่อเพื่อกำหนดค่า

CentOS 7 NetworkManager - กำหนดค่าการเชื่อมต่อ

ปิด Automatic DNS และระบุชื่อเซิร์ฟเวอร์ ใช้การกำหนดค่า

CentOS 7 NetworkManager - ใช้การตั้งค่า DNS แบบคงที่

ครั้งต่อไปที่ NetworkManager เริ่มการเชื่อมต่อนั้นมันจะเขียนค่าที่กำหนดเอง (ในขณะทดสอบฉันปิดเครือข่ายและเปิดอีกครั้งเพราะฉันมีการเชื่อมต่อเครือข่ายสองครั้ง)

ตามเอกสาร ,

  1. อินเทอร์เฟซผู้ใช้ข้อความที่ใช้ curses แบบง่าย (TUI) สำหรับ NetworkManager, nmtui สามารถใช้ได้
  2. เครื่องมือบรรทัดคำสั่ง nmcli มีไว้เพื่อให้ผู้ใช้และสคริปต์สามารถโต้ตอบกับ NetworkManager โปรดทราบว่า nmcli สามารถใช้กับระบบ GUI น้อยเช่นเซิร์ฟเวอร์เพื่อควบคุมทุกด้านของ NetworkManager มันอยู่บนพื้นฐานที่เท่าเทียมกับเครื่องมือ GUI

โดยเฉพาะnmcli เอกสารประกอบดูดีมาก


1
ขออภัยเป็น CentOS ซึ่งไม่มีresolvconfแพ็คเกจ dnsmasqดูเหมือนว่าจะเป็นทางออกที่ดี
ผู้ใช้งาน Newbie Linux เมื่อ

8

ฉันตั้งใจสร้างเป็นคำถามที่ซ้ำกันที่นี่ คำตอบนั้นอยู่ที่นั่น แต่คุณต้องสร้าง:

/etc/dhcp/dhclient.conf

หากยังไม่มีอยู่และเพิ่ม:

prepend domain-name-servers [ip address of server];

อย่าลืมอัฒภาคในตอนท้าย!

หลังจากนั้นเพียงรีบูตอัตโนมัติย้ายบรรทัด 'nameserver [ที่อยู่ ip ของเซิร์ฟเวอร์]' ใน '/etc/resolv.conf' ขึ้นไปด้านบน!


มหัศจรรย์! นั่นเป็นแบ็กเอนด์ที่ใช้โดย NetworkManager และวิธีเดียวที่จะทำให้การทำงานกับการเชื่อมต่อ wifi ทั้งหมด (ไม่ใช่แบบคงที่) ขอบคุณมาก!
Adrien M.

0

มีวิธีอื่นไม่จำเป็นต้องปิด NetworkManager.service เพียงแค่ตั้ง ifcfg-idevice:

PEERDNS=no
DNS1=10.165.74.2
DNS2=OTHERDNS
DOMAIN=DEMO.COM

คุณไม่จำเป็นต้องตั้งค่า /etc/NetworkManager/NetworkManager.conf เช่น:

[main]
dns=none
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.