resolv.conf ยังคงได้รับการรีเซ็ตโดยบางสิ่งบางอย่าง


29

ฉันต้องการความช่วยเหลือในการหาสาเหตุที่resolv.confทำให้ฉันเปลี่ยนแปลงสิ่งนี้ทำให้ฉันไม่สามารถเข้าถึงอินเทอร์เน็ตภายนอกและเฉพาะเครือข่ายท้องถิ่น:

$ cat /etc/resolv.conf
nameserver 192.168.16.1
domain localdomain
search localdomain

ผมคิดว่าผมคงได้โดยการกำจัดของอินเตอร์เฟซวนรอบและเพิ่มในส่วนติดต่อ eth0 ใน/etc/network/interfacesกับคำแนะนำบนบล็อก Posterous jontsai ของ

ฉันพยายามทำสิ่งต่าง ๆ เช่น:

$ sudo ifconfig eth0 down
$ sudo ifconfig eth0 up
$ sudo /etc/init.d/networking restart
$ sudo dhclient

จากนั้นสิ่งต่าง ๆ จะใช้งานได้ชั่วคราวและในที่สุดเซิร์ฟเวอร์ชื่อใน resolv.conf จะกลับมาใช้อีกครั้ง

PS ฉันโพสต์สิ่งนี้บนubuntuforumsด้วย


แก้ไข: มีอย่างน้อยหนึ่งโปรแกรมอื่นนอกเหนือจาก NetworkManager ที่กำลังเขียนอยู่resolv.confและฉันรู้สิ่งนี้เพราะเมื่อฉันรีเฟรช NetworkManager resolv.confไฟล์ที่สร้างขึ้นมีความคิดเห็นที่ระบุว่า# Generated by NetworkManagerและรุ่นที่มันเปลี่ยนไม่ได้

ดังนั้นฉันพยายามทำสิ่งนี้:

while true; do echo listening; lsof | grep /etc/resolv.conf; echo sleeping; sleep 1; done


แก้ไข 2:

การเพิ่มเอาต์พุตของไฟล์:

$ cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

ไม่มีไฟล์ดังกล่าวเป็น /etc/NetworkManager/NetworkManager.conf

$ sudo cat /etc/NetworkManager/system-connections/Auto\ Ethernet 

[connection]
id=Auto Ethernet
uuid=#######omitted#######
type=802-3-ethernet
autoconnect=true
timestamp=1314377063

[ipv4]
method=auto
ignore-auto-routes=false
ignore-auto-dns=false
dhcp-send-hostname=false
never-default=false

[802-3-ethernet]
speed=0
duplex=full
auto-negotiate=true
mtu=0

[ipv6]
method=ignore
ignore-auto-routes=false
ignore-auto-dns=false
never-default=false

ฉันสงสัยว่าตัวจัดการเครือข่ายมีปัญหาหรือมีแนวโน้มที่จะมีการกำหนดค่าผิดพลาด คุณใช้ Ubuntu รุ่นใด คุณมีresolvconfแพ็คเกจที่ติดตั้งหรือไม่ โพสต์เนื้อหาของ/etc/network/interfaces, และ/etc/NetworkManager/NetworkManager.conf /etc/NetworkManager/system-connections/*
Gilles 'หยุดชั่วร้าย'

ฉันใช้ 10.04 ไม่มีresolvconfแพ็คเกจ ในบางจุดโมเด็ม DSL ของฉันก็แย่ (หลังเราเตอร์) ในขณะที่เครือข่ายท้องถิ่นของฉันไม่ดีดังนั้นฉันอาจลองติดตั้งnscdหรือ - dnsmasqพวกเขากำลังถอนการติดตั้งตอนนี้ แต่มันอาจทิ้งสิ่งประดิษฐ์ที่รบกวนอยู่บ้าง
jontsai

โอเคฉันเพิ่งรีบูทคอมพิวเตอร์เป็นครั้งแรกในรอบ 3 สัปดาห์และฉันคิดว่าปัญหาจะหายไป o_O
jontsai

ไม่แน่ใจ แต่ฉันคิดว่ามีปัญหากับเซิร์ฟเวอร์ DHCP ในvmnet1หรือvmnet8(NAT และโฮสต์เท่านั้น)
jontsai

1
การสนทนาทั้งหมดนี้มีความเกี่ยวข้องลดลงตั้งแต่ Ubuntu 12.04 ซึ่งแนะนำ resolvconf ในระบบพื้นฐานการเปลี่ยนวิธีการจัดการ resolv.conf พื้นฐาน
jdthood

คำตอบ:


13

/etc/resolv.confคุณสามารถทำให้การเพิ่มคงที่ ส่วนเพิ่มเติมเหล่านั้นสามารถแทนที่สิ่งที่กำลังเพิ่มโดยอัตโนมัติ

ก่อนติดตั้งresolvconfแพคเกจ

แล้วกด Alt + F2 gksudo nautilusและเรียกใช้ เปิด/etc/resolvconf/resolv.conf.d/headถ้าคุณต้องการเพิ่มในจุดเริ่มต้นของไฟล์; เปิด/etc/resolvconf/resolv.conf.d/tailถ้าคุณต้องการที่จะเพิ่มไปยังจุดสิ้นสุด ทำการเปลี่ยนแปลงของคุณบันทึก / ปิดไฟล์แล้วเรียกใช้sudo resolvconf -uเพื่อใช้การเปลี่ยนแปลง

(ขออภัยที่ฉันจำไม่ได้ว่าการตั้งค่าที่จุดเริ่มต้นหรือจุดสิ้นสุดของไฟล์มีความสำคัญสูงสุดหรือไม่)


การเปลี่ยนแปลงผู้จัดการเครือข่ายของฉันจะถูกเปลี่ยนกลับเมื่อเชื่อมต่อกับ VPN ใด ๆ สิ่งนี้ทำให้ฉันสามารถเก็บ 8.8.8.8 ในรายการตัวแก้ไขโดยไม่คำนึงถึงเครือข่ายที่ฉันเชื่อมต่อด้วย
Steven P

8

ฉันมีปัญหาเดียวกันแน่นอน - resolv.conf จะถูกเขียนใหม่ทุกครั้งที่เซิร์ฟเวอร์รีบูท

มันเกิดจาก DHCP ในการตั้งค่า resolv.conf เป็นสิ่งที่ฉันต้องการฉันจะแก้ไข/etc/dhcp/dhclient.confและเพิ่มสิ่งต่อไปนี้:

supersede domain-name "my.domain.com";
prepend domain-search "my.domain.com";

คุณสามารถควบคุมไฟล์ resolv.conf ของคุณได้โดยทำการเปลี่ยนแปลง

หวังว่ามันจะช่วย


2
นี่จะเป็นทางออกที่สะอาดที่สุด แต่ด้วยเหตุผลบางอย่างมันหยุดทำงานกับระบบของฉันเมื่อไม่กี่ปีก่อน ฉันติดขัดกับการปิดการใช้งานสคริปต์ resolvconf หรือ chattr + i /etc/resolv.conf นับตั้งแต่นั้นมา
Tronic

7

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

ทริกเกอร์ที่เป็นไปได้สำหรับการอัปเดตตามธรรมชาติที่ดูเหมือนจะเกิดขึ้น/etc/resolv.confคือเมื่อสัญญาเช่า DHCP ของคุณได้รับการต่ออายุ ตรวจสอบว่าคุณได้รับ DHCP นานเท่าไร (ซึ่งควรปรากฏในบันทึกของระบบฉันคิดว่า/var/log/syslog)

คุณสามารถใช้auditd ติดตั้ง auditdเพื่อค้นหาสิ่งที่แก้ไขไฟล์ เริ่ม daemon ( sudo service auditd start) และบอกให้คอยดูการแก้ไขไฟล์นั้น:

sudo auditctl -w /etc/resolv.conf -p w

/var/log/audit/audit.logบันทึกการตรวจสอบอยู่ใน คุณจะเห็นเวลาที่ไฟล์ถูกแก้ไขและชื่อของโปรแกรมที่แก้ไข

หากคุณมีresolvconfแพ็คเกจที่ติดตั้งตัวจัดการเครือข่ายอาจก้าวเข้ามาที่นิ้วเท้า ลองนำส่วนต่อประสานเครือข่ายทั้งหมดลงแล้วหยุด Network Manager ( sudo service network-manager stop) จากนั้นเริ่มต้นใหม่


1
ฉันเชื่อว่าคุณพูดถูกเกี่ยวกับ DHCP คุณสามารถเปลี่ยนการตั้งค่า DHCP ในตัวจัดการเครือข่ายดังต่อไปนี้: รันnm-connection-editorในเทอร์มินัลของคุณ เลือกส่วนต่อประสานของคุณแล้วกดแก้ไข ภายใต้การตั้งค่า IPv4 ควรมีวิธีการที่เรียกว่าที่อยู่ DHCP เท่านั้น (หรือสิ่งที่คล้ายกัน) หากฉันไม่เข้าใจผิดนี่จะอนุญาตให้คุณรับที่อยู่ IP ผ่าน DHCP แต่ไม่ใช่เนมเซิร์ฟเวอร์ (คุณสามารถระบุได้ในฟิลด์ด้านล่าง)
Christian Skjødt

ฉันตั้งค่าเราเตอร์ของฉันให้จับคู่ที่อยู่ MAC กับ IP แบบคงที่ดังนั้นการเช่า DNS เป็นเวลานาน auditctlสายไม่ทำงานสำหรับฉันและฉันเชื่อว่าชื่อของบริการสำหรับการจัดการเครือข่ายnetwork-manager(รวมยัติภังค์) ฉันไม่ได้resolvconfติดตั้งแพ็คเกจ แต่มีสิ่งต่าง ๆ อยู่ใน/etc/resolvconf/โฟลเดอร์และเมื่อเปรียบเทียบกับเครื่อง Ubuntu อื่นมันไม่ได้ติดตั้งดังนั้นฉันจึงติดตั้งและถอนการติดตั้งแพคเกจและลบโฟลเดอร์นั้นด้วยตนเอง /etc/resolv.confเพิ่งเขียนใหม่อีกครั้งดังนั้นฉันคิดว่าการauditctlทำงานจะมีประโยชน์มาก
jontsai

@ jontsai การปรากฏตัวของ/etc/resolvconfเป็นเรื่องปกติแม้ว่าคุณจะไม่ได้มีresolvconfแพคเกจบางแพคเกจวาง hooks ในนั้นและ hooks เหล่านี้จะใช้เฉพาะเมื่อresolvconfติดตั้ง ฉันแก้ไขหมายเลขauditctlโทรศัพท์แล้วในกรณีที่ปัญหาปรากฏขึ้นอีกครั้ง
Gilles 'หยุดชั่วร้าย'

ฉันชอบแนวคิดของผู้ใช้ auditd เพื่อค้นหาสิ่งที่แก้ไขไฟล์ แต่ดูเหมือนว่ามันจะเริ่มต้นหลังจากที่ไฟล์มีการแก้ไขแล้ว
Peter Sankauskas

4

เปิดเทอร์มินัลแล้วพิมพ์

sudo chattr +i /etc/resolv.conf

เครื่องหมาย + ฉันใช้ความระมัดระวังว่าไฟล์จะไม่ถูกลบในการบู๊ตแม้จะเป็นรูทก็ตาม

เพื่อยกเลิกการข้างต้น

sudo chattr -i /etc/resolv.conf

สำหรับข้อมูลเพิ่มเติม

man chattr

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

ทำงานให้ฉันบน Debian 9 VM ที่ทำงานอยู่ภายใน GCP เย้! ขอบคุณ!
the0ther

3

resolvconfตัวเลือกที่ผมเคยมีโชคบางคนที่มีเกี่ยวข้องกับการใช้อีก

เพิ่มรายการใด ๆ ในไฟล์นี้:

/etc/resolvconf/resolv.conf.d/base

/etc/resolv.confและพวกเขาจะถูกเพิ่มเข้าไป

ขอบคุณที่ถาม Ubuntu การโพสต์: ฉันจะรวมบรรทัดใน resolv.conf ที่จะไม่หายไปเมื่อรีบูตได้อย่างไร


3

ฉันจะปิดปรับปรุงของresolv.confโดยการสร้างไฟล์ที่เรียกว่าdisable_make_resolv_confใน/etc/dhcp3/dhclient-enter-hooks.d

#!/bin/sh
make_resolv_conf(){
}

มันแทนที่ฟังก์ชั่นมาตรฐานด้วยชื่อเดียวกับที่รับผิดชอบในการresolv.confรีเฟรช


1

มาถึงตอนนี้ แต่ฉันจะโพสต์เคสของฉันเพราะมันต่างจากข้างต้นทั้งหมด

ในกรณีของฉัน/etc/resolv.confsymlink /var/run/NetworkManager/resolv.confคือและด้วยเหตุผลบางอย่างcat /etc/resolv.confทำให้ฉันมีข้อผิดพลาดไม่มีไฟล์หรือไดเรกทอรีดังกล่าว (อาจเป็นเพราะมันว่างเปล่า?)

ถ้าฉันเปิดด้วย vi และเพิ่มnameserver x.x.x.xมันใช้งานได้ แต่จะถูกล้างเมื่อรีบูต

ผมพยายามที่จะแก้ไข/etc/network/interfacesและเพิ่มdns-nameservers x.x.x.xการเปลี่ยนแปลง/etc/dhcp/dhclient.confและอยู่ภายใต้ถูกนำออกไปยังแก้ไขrequest domain-name-serversprepend domain-name-servers x.x.x.x

Resolvconf ไม่ได้ติดตั้งไบนารีNetworkManager.confไม่มีอะไรเกี่ยวข้อง แต่ทุกครั้งที่ฉันรีสตาร์ทเครื่องไม่มีเซิร์ฟเวอร์โดเมน

ฉันไม่แน่ใจว่าเหตุผลคืออะไร แต่ดูเหมือนว่าจะต้องเกี่ยวข้องกับความจริงที่ว่านี่เป็นเครื่อง VBox ที่เริ่มต้นโดย GNS3 และเนื่องจากการตั้งค่า VBox นั้นฉันต้องปล่อยให้มันโดยไม่สร้างส่วนต่อประสาน เห็นได้ชัดว่า GNS3 สร้าง "อินเตอร์เฟซ UDP" ได้ทันทีเมื่อฉันเริ่มต้นเครื่องโดยมีเงื่อนไขว่าฉันจะเริ่มต้นจาก GNS3

ดังนั้นเพื่อช่วยฉันจากการค้นหาอย่างไม่สิ้นสุดฉันเพิ่งเพิ่มecho nameserver x.x.x.x> /etc/resolv.confเข้าไป/etc/profileแก้ไขปัญหา (ไม่แก้ไข แต่ทำงานรอบ ๆ ฮิฮิ) แต่อาจเป็นเรื่องที่น่าสนใจที่จะรู้ว่าเกิดอะไรขึ้นกับสถานการณ์นั้นถ้ามีคนวิ่งเข้ามา


1

หากคุณมีไฟล์ /etc/NetworkManager/NetworkManager.conf

cat /etc/NetworkManager/NetworkManager.conf

คุณสามารถกำหนดค่า NetworkManager เพื่อหยุดการรีเซ็ต resolv.conf ด้วย

sudo sh -c 'echo "
[main]
dns=none
" >> /etc/NetworkManager/NetworkManager.conf'
cat /etc/NetworkManager/NetworkManager.conf

ตอนนี้เปลี่ยนของคุณด้วยตนเอง/etc/resolv.confและทดสอบความคงทนของมันด้วย

sudo systemctl restart NetworkManager
# sudo service network-manager restart
cat /etc/resolv.conf

ที่มา: https://askubuntu.com/a/623956/452398


ขอบคุณการเพิ่ม dns = none แก้ปัญหาด้วยวิธีที่เหมาะสม
ยางรถยนต์

0

เพียงป้อนข้อมูลในไฟล์ ifcfg-ethX ของคุณเช่นนั้น

DNS1 = 192.168.XX

DNS2 = 192.168.XX

DOMAIN = yourdomain.com

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


0

ในกรณีที่มีคนตกอยู่ในกรณีเดียวกัน:

ฉันลืมฉันตั้ง dhcp บนอินเทอร์เฟซภายในไฟล์ /etc/network/interfaces

Networkmanager จะแก้ไข/etc/resolv.confจากคำตอบ dhcp ที่ได้รับ

HTH


0

เมื่อมี# Generated by NetworkManagerใน/etc/resolv.conf

แก้ไขการกำหนดค่า Network Manager:

sudo vim /etc/NetworkManager/NetworkManager.conf

ใน[main]ส่วนเพิ่มrc-manager=unmanaged:

[main]                                                                                                                                   
rc-manager=unmanaged

ทำไม?

rc-manager- ตั้งค่าโหมดการจัดการ resolv.conf ค่าเริ่มต้นขึ้นอยู่กับตัวเลือกการสร้าง NetworkManager และ NetworkManager เวอร์ชันนี้เป็นบิลด์ที่มีค่าเริ่มต้นเป็น "symlink"

( ... )

unmanaged: /etc/resolv.confไม่ได้สัมผัส

การอ้างอิงการกำหนดค่าสำหรับข้อมูลเพิ่มเติม: https://developer.gnome.org/NetworkManager/stable/NetworkManager.conf.html

จากนั้นแก้ไขของคุณ /etc/resolv.confและเริ่มต้นตัวจัดการเครือข่ายใหม่เพื่อดูหาก/etc/resolv.confยังไม่มีการแตะต้อง:

sudo systemctl restart NetworkManager

หรือ

sudo service network-manager restart

กว่า:

cat /etc/resolv.conf

หากโพรซีเดอร์ล้มเหลวและ/etc/resolv.confถูกเขียนทับในระหว่างการรีสตาร์ท Network Manager ให้ลองเพิ่มdns=noneใน[main]ส่วนการกำหนดค่าตามhttps://askubuntu.com/a/1150326/364772กล่าว

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