เนมเซิร์ฟเวอร์ 127.0.1.1 ใน resolv.conf จะไม่หายไป!


60

ฉันได้อ่านแล้วว่าฉันควรมีnameserver 127.0.1.1ใน/etc/resolv.confไฟล์ของฉันก็ต่อเมื่อเครื่องของฉันมีเซิร์ฟเวอร์ DNS ของตัวเอง เนื่องจากมันไม่ได้ทำให้มันเกิดปัญหา แต่ไม่ว่าฉันจะทำอะไรฉันก็ไม่สามารถกำจัดมันได้!

นี่คือสิ่งที่ฉันทำไปแล้ว:

  1. กำลังเพิ่มnameserver 192.168.1.3ลงใน/etc/resolvconf/resolv.conf.d/baseไฟล์ (192.168.1.3 เป็น DNS ของเครือข่ายของเรา)
  2. sudo resolvconf --enable-updatesเล่น:
  3. sudo resolvconf -uเล่น:
  4. วิ่ง: sudo service network-manager restart(เพื่อให้แน่ใจ)

แต่เมื่อฉันเปิด/etc/resolv.confไฟล์มันบอกว่า: nameserver 127.0.1.1! ใครบ้างมีความคิดว่ามีอะไรผิดปกติ?

โปรดทราบว่ามันจริง127.0.1.1! และฉันก็ไม่รู้ว่าทำไมมันไม่เป็นเช่นนั้น127.0.0.1!

แม้ว่าฉันจะอัปเดต/etc/resolv.confด้วยตนเองและเปลี่ยนเป็นสิ่งอื่นสิ่งที่sudo resolvconf -uจะเปลี่ยนกลับเป็น127.0.1.1! ที่อยู่นี้มาจากไหน

คำตอบ:


100

NetworkManager เป็นโปรแกรมที่ (ผ่านยูทิลิตี้ resolvconf) ที่แทรกอยู่เข้าไป127.0.1.1 resolv.confNM จะแทรกที่อยู่นั้นหากมีการกำหนดค่าให้เริ่มต้นอินสแตนซ์ของโปรแกรม dnsmasq เพื่อทำหน้าที่เป็นเนมเซิร์ฟเวอร์การส่งต่อโลคัล อินสแตนซ์ dnsmasq นั้นรับฟังการสืบค้นตามที่อยู่ 127.0.1.1

หากคุณไม่ต้องการใช้เนมเซิร์ฟเวอร์การส่งต่อโลคัลให้กำหนดค่า NetworkManager ไม่ให้เริ่มอินสแตนซ์ dnsmasq และไม่ต้องแทรกที่อยู่นั้น ในคอม/etc/NetworkManager/NetworkManager.confเม้นท์ออกแนวdns=dnsmasq

sudo nano /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq

และเริ่มบริการ NetworkManager ใหม่

sudo service network-manager restart

ในโหมดนี้ NetworkManager จะอัปเดต/etc/resolv.conf(ยังผ่าน resolvconf) เพื่อรวมที่อยู่เนมเซิร์ฟเวอร์ที่ NetworkManager มีไว้สำหรับการเชื่อมต่อที่ใช้งานอยู่

หากคุณต้องการปิดการทำงานของกลไก resolvconf สำหรับการอัพเดต resolv.conf และใช้ไฟล์ resolv.conf แบบคงที่ให้ทำดังต่อไปนี้

sudo rm -f /etc/resolv.conf  # Delete the symbolic link
sudo nano /etc/resolv.conf   # Create static file

# Content of static resolv.conf
nameserver 8.8.4.4
nameserver 8.8.8.8

ฉันมี 3 DNS และข้อความค้นหาไม่ถึงอันดับ 3 หากปิดใช้งาน dnsmasq คำแนะนำใด ๆ ฉันต้องการสอบถาม Google จากนั้นสอบถามอินทราเน็ต DNS ขอบคุณ
JorgeeFG

3
restart network-managerไม่ทำงานบน Xenial เนื่องจากมันใช้ systemd แทนการพุ่งพรวด ลองsystemctl restart network-manager
แมทเธียสชไวเลอร์

คำถามของฉันคือโปรแกรม dnsmasq จะถามว่าเซิร์ฟเวอร์ DNS ใด มันจะถามเซิร์ฟเวอร์ DNS ของ DHCP สำหรับการค้นหาที่อยู่ IP ของโฮสต์หรือไม่
นาฬิกา ZHONG

11

เป็นไปได้ที่ resolvconf จะถูกกำหนดค่าผิดพลาด นี่เป็นโอกาสโดยเฉพาะอย่างยิ่งถ้าคุณได้เล่นกับไฟล์การกำหนดค่าโดยไม่เข้าใจจริงๆว่า resolvconf และ NetworkManager ทำงานอย่างไร

สำหรับข้อมูลพื้นฐานโปรดอ่านเอกสาร resolvconf และโพสต์บล็อกของStéphane Graber

https://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

ก่อนอื่นคุณควรรู้ว่าทั้ง Ubuntu Desktop และ Ubuntu Server โดยปริยายมีการติดตั้งและเปิดใช้งาน resolvconf Resolvconf จัดเตรียมเฟรมเวิร์กสำหรับการอัพเดตไฟล์ /etc/resolv.conf แบบไดนามิกในแบบที่เป็นระเบียบและย้อนกลับได้

อันดับที่สองคุณควรรู้ว่า Ubuntu Desktop เป็นค่าเริ่มต้นที่มี NetworkManager ติดตั้งและเปิดใช้งาน โดยค่าเริ่มต้น NetworkManager เริ่มต้นอินสแตนซ์ของ dnsmasq เพื่อใช้เป็นเนมเซิร์ฟเวอร์การส่งต่อโลคัล อินสแตนซ์ dnsmasq ที่ควบคุมโดย NetworkManager นี้รับฟังการสืบค้นที่ 127.0.1.1 เมื่อ NetworkManager เริ่มต้นอินสแตนซ์ dnsmasq มันบอกให้ resolvconf ใส่ที่อยู่127.0.1.1ใน resolv.conf ดังที่กล่าวไว้ในคำตอบอื่นถ้าคุณกำหนดค่า NetworkManager ไม่ให้เริ่มต้นอินสแตนซ์ของ nameserver การส่งต่อภายในเครื่องมันจะไม่เริ่มการทำงานของการส่งต่อภายในเครื่องและจะไม่บอก resolvconf เพื่อแทรกที่อยู่127.0.1.1ลงใน resolv.conf

การกำหนดค่าเริ่มต้นนี้ทำงานอย่างถูกต้องดังนั้นหากสถานการณ์ของคุณไม่พิเศษคุณควรคืนค่าการกำหนดค่าเริ่มต้น

หากต้องการคืนค่าการกำหนดค่าเริ่มต้นให้ดูที่การตั้งค่านั้น

  • /etc/resolvconf/resolv.conf.d/head มีเฉพาะข้อความส่วนหัว resolvconf ประกอบด้วยสองบรรทัดเริ่มต้นด้วย#ตัวอักษร
  • /etc/resolvconf/resolv.conf.d/base เป็นไฟล์ว่าง
  • /etc/resolvconf/resolv.conf.d/tail เป็นไฟล์ว่าง
  • /etc/resolv.conf เป็นลิงค์สัญลักษณ์พร้อมเนื้อหา ../run/resolvconf/resolv.conf

เพื่อให้บรรลุนี้ดำเนินการคำสั่งต่อไปนี้

sudo su
dpkg-reconfigure resolvconf   # And answer `Yes` to agree to dynamic updates
cd /etc/resolvconf/resolv.conf.d
echo '# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN' > head
rm -f base tail original
:> base
:> tail

การกำหนดค่าดั้งเดิมของ NetworkManager คือการมี

[main]
...
dns=dnsmasq
...

ใน /etc/NetworkManager/NetworkManager.conf มันเป็นทางเลือกที่เหมาะสมเพื่อปิดการใช้งาน NetworkManager ควบคุม nameserver การส่งต่อในประเทศโดยการแสดงความคิดเห็นออกdns=dnsmasqบรรทัด

[main]
...
#dns=dnsmasq
...

หลังจากดำเนินการทั้งหมดแล้วขอแนะนำให้รีสตาร์ทเครื่องเพื่อล้างข้อมูลบันทึกเนมเซิร์ฟเวอร์เก่า

sudo reboot

1

ในกรณีของฉันไม่มีไฟล์dns=dnsmasqอยู่ในบรรทัด/etc/NetworkManager/NetworkManager.confและ/etc/resolv.confยังถูกเขียนทับโดย Network Manager ให้มีเท่านั้นnameserver 127.0.1.1

การแก้ไขคือการคืนค่า symlink สำหรับการอัพเดตที่เหมาะสม:

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