ตัวจัดการเครือข่าย: วิธีหยุด nm อัพเดต /etc/resolv.conf


26

ฉันไม่ต้องการผู้จัดการเครือข่ายเพื่อเพิ่มเซิร์ฟเวอร์ DNS ที่ได้รับจาก DHCP /etc/resolv.confของฉัน

เมื่อกำหนดค่าจาก GUI / การเชื่อมต่อ / IPV4 และเลือกวิธีอัตโนมัติ (ที่อยู่เท่านั้น) มันยังคงเพิ่มเซิร์ฟเวอร์ DNS ที่ได้รับผ่าน DHCP

มันเป็นไปได้ที่จะทำต่อการเชื่อมต่อ (เฉพาะ SSID?)


หากคุณเลือกวิธี "ที่อยู่อัตโนมัติ (DHCP) เท่านั้น" จากนั้น NetworkManager จะไม่เปลี่ยนหรือไม่ควรเปลี่ยน resolv.conf เมื่อเปิดใช้งานการเชื่อมต่อนั้น หาก NetworkManager ทำเพิ่มที่อยู่ลงใน resolv.conf ทั้ง ๆ ที่การตั้งค่า "ที่อยู่เท่านั้น" ก็มีข้อผิดพลาดใน NetworkManager และคุณควรรายงานข้อผิดพลาดนั้นโดยใช้ Launchpad หากต้องการหยุด NetworkManager ไม่ให้เปลี่ยน resolv.conf คุณควรเลือก "Automatic (DHCP) address only" ในการกำหนดค่าการเชื่อมต่อทั้งหมดที่เปิดใช้งานบนระบบของคุณ
jdthood

1
คุณสามารถใช้ GUI ในการตั้งค่า IPv4 ในการเชื่อมต่อและเลือก "adddresses เท่านั้น" ในโหมดหรือทำสิ่งที่ทำเองด้วยการแก้ไขไฟล์การเชื่อมต่อที่เกี่ยวข้องใน / etc / NetworkManager / system-connections / และเพิ่มการละเว้นอัตโนมัติ -dns = บรรทัดที่แท้จริงไปยังส่วน [ipv4]
Sasha Pachev

คำตอบ:


32

วิธีหนึ่งที่จะหยุด Network Manager ไม่ให้เพิ่ม dns-servers ลงใน/etc/resolv.confไฟล์คือการทำสิ่งนี้:

ก่อนเปิดไฟล์ conf นาโนเมตร/etc/NetworkManager/NetworkManager.conf:

sudo vim /etc/NetworkManager/NetworkManager.conf

และเพิ่มลงใน[main]ส่วน:

dns=none

บันทึกและออก.


ส่วนหลักคือ[main]ไม่ใช่[Main]
AB

/etc/resolv.confโดยทั่วไปแล้วจะเป็น symlink - คุณแน่ใจหรือไม่ว่าการทำให้ไม่เปลี่ยนรูปนั้นทำให้เป้าหมายของลิงก์นั้นเปลี่ยนไปหรือไม่
muru

5
สิ่งนี้ใช้ไม่ได้กับฉันใน debian jessie
Dimitri Kopriwa

5
สิ่งนี้ใช้ไม่ได้กับ Ubuntu 18.04
LuizAngioletti

1
ฉันต้องทำsudo service network-manager restartก่อนการเปลี่ยนแปลงไฟล์. conf จะมีผล
Chris Moore

3

ชื่นชอบส่วนตัวของฉันคือการใช้เส้นในsupersede domain-name-servers /etc/dhcp/dhclient.confไม่ว่าจะมีจุดเชื่อมต่อ dns ใด Ubuntu ของคุณจะใช้ dns ที่ระบุไว้dhclient.conf

ตัวอย่างจากไฟล์ของฉัน

#send host-name "andare.fugue.com";
send host-name = gethostname();
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
supersede domain-name-servers 208.67.220.220;
#prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
    domain-name, domain-name-servers, domain-search, host-name,
    dhcp6.name-servers, dhcp6.domain-search,
    netbios-name-servers, netbios-scope, interface-mtu,
    rfc3442-classless-static-routes, ntp-servers,
    dhcp6.fqdn, dhcp6.sntp-servers;
#require subnet-mask, domain-name-servers;

การสร้างบรรทัดตามที่อธิบายไว้ (โดยใช้เซิร์ฟเวอร์ 8.8.8.8) ไม่ทำงานบน Ubuntu 18.04
LuizAngioletti

3
@LuizAngioletti 18.04 netplanจะใช้ชนิดที่แตกต่างกันของการประยุกต์ใช้ผู้จัดการเครือข่ายที่เรียกว่า คำตอบนี้เขียนขึ้นสำหรับรุ่นก่อน -18.04 ฉันอาจอัปเดตในภายหลังได้
Sergiy Kolodyazhnyy

2

/etc/resolv.confเป็น symlinked /run/resolvconf/resolv.confไป NetworkManager ไม่อัปเดต /etc/resolv.conf โดยตรง (เฉพาะอัปเดต /run/resolvconf/resolv.conf เท่านั้น) ดังนั้น:

  • ลบ symlink ( rm /etc/resolv.conf)
  • เขียนเวอร์ชันของคุณเอง /etc/resolv.conf

1
ฉันรู้ว่านี่เป็นฟอรัมอูบุนตู แต่ในขณะที่ googling สำหรับ centos นี่ยังเป็นผลการค้นหา google ครั้งแรกของฉันดังนั้นจึงโพสต์ความคิดเห็นสำหรับผู้ที่เพิ่งหัดทำ centos ในอนาคต สิ่งนี้ไม่ได้แก้ปัญหาของฉันบน centos ดูเหมือนว่าตัวจัดการเครือข่าย centos ทำงานโดยตรงกับ /etc/resolv.conf
Tommy

นี่ไม่เป็นความจริงสำหรับ Debian Stretch ที่สุดอย่างแน่นอน มันจะลบไฟล์ของคุณและแทนที่ด้วย symlink อื่น น่ารำคาญมาก
HörmannHH

นี่คือหนึ่งสำหรับ (เสมือนจริง) Fedora 25 ใช้nmcli: ใน/etc/sysconfig/network-scripts/ifcfg-ens3เราจะเห็นว่าPEERDNS=yesซึ่งหมายถึง (ในกรณีนี้ผิด) ข้อมูล DNS จะได้รับโดย DHCP /etc/resolv.confและมันจะจบลงใน ฉันต้องการ 127.0.0.1 เป็นเนมเซิร์ฟเวอร์ แสดงnmcli con mod ens3 ipf4.ignore-auto.dns yesผลลัพธ์ในPEERDNS=noไฟล์กำหนดค่าส่วนต่อประสาน อย่างไรก็ตาม/etc/resolv.confยังคงมีจรจัดรายการดังนั้นหากจำเป็นต้องเริ่มต้นการเชื่อมต่อnamseserver nmcli con down ens3; nmcli con up ens3ดูเพิ่มเติมที่: certdepot.net/rhel7-configure-ipv4-addresses
David Tonhofer

บน Ubuntu 18.04 การรีสตาร์ท 'service network-manager restart' จะทำให้ NM เขียนทับ /etc/resolv.conf แม้ว่าจะเป็นไฟล์ที่ยากและไม่ใช่ symlink ก็ตาม
LuizAngioletti

0

สิ่งที่ฉันทำกับ Debian Stretch:

  • rm /etc/resolv.conf ### (symlink)
  • แตะ /etc/resolv.conf
  • echo "nameserver xxxx" >> /etc/resolv.conf

โดยที่ "xxxx" เป็นที่อยู่ IP เซิร์ฟเวอร์ DNS ที่คุณต้องการไม่ว่าจะเป็นจาก OpenDNS, Google หรือ Cloudflare

ขอบคุณสำหรับความคิด Taha Jahangir! ฉันสามารถยืนยันได้ว่าข้อเสนอแนะของคุณใช้ได้กับการกระจาย Debian Stretch ของฉัน

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