ฉันจะเพิ่มเซิร์ฟเวอร์ DNS ผ่าน resolv.conf ได้อย่างไร


207

คือ/etc/resolv.confไม่มีประโยชน์ในUbuntu 12.04 LTS (Pangolin แม่นยำ)?

ฉันเห็นว่าข้อมูลเซิร์ฟเวอร์ DNS ถูกเก็บไว้ในNetworkManagerทันที nmcliเครื่องมือบรรทัดคำสั่งสามารถแสดงรายการที่สำหรับคุณ

หากฉันต้องการเพิ่มเซิร์ฟเวอร์DNSอีกหนึ่งตัวจะเพิ่มลงใน/etc/resolv.confโดยใช้วิธีใช้resolvconfแพคเกจหรือไม่


2
ผมคิดว่าคำสั่งดังกล่าวข้างต้นควรจะเป็นไม่ได้nm-tool nmcli
Jesse Glick

คำตอบ:


139

หาก/etc/resolv.confมีnameserver 127.0.0.1แล้วเพิ่มรายการเพื่อ/etc/resolvconf/resolv.conf.d/tailจะไม่ทำสิ่งที่มีประโยชน์จริงๆ

หากคุณใช้ NetworkManager คุณควรเพิ่มที่อยู่เซิร์ฟเวอร์ชื่อแบบคงที่ผ่านตัวบ่งชี้เครือข่าย : แก้ไขการเชื่อมต่อ ... | แก้ไข ... | การตั้งค่า IPv4 | เซิร์ฟเวอร์ DNS ที่เพิ่มเติม

หากคุณต้องการเพิ่มรายการจริงๆให้/etc/resolv.confสร้าง/etc/resolvconf/resolv.conf.d/tailและเพิ่มที่นั่น

เช่นเดียวกับ Ubuntu ทุกรุ่นขอแนะนำให้อ่านบันทึกย่อประจำรุ่นของ Ubuntu ที่มีให้ที่นี่:

ส่วนเดสก์ท็อปและโครงสร้างพื้นฐานร่วมประกอบด้วยลิงก์ไปยัง


1
@stgraber โปรดแสดงความคิดเห็นกับวิธีการอื่นที่ฉันพบและโพสต์ด้านล่าง มันเปรียบเทียบกับการเพิ่ม/etc/resolvconf/resolv.conf.d/tailไฟล์หรือใช้ตัวจัดการเครือข่ายได้อย่างไร ขอบคุณ
Randall Cook

3
@stgraber คุณแนะนำอะไรกับเซิร์ฟเวอร์ Ubuntu ฉันสังเกตเห็นจากบล็อกและความคิดเห็นของคุณว่า Network-Manger ดูเหมือนจะเป็นวิธีที่ดีที่สุดในการจัดการสิ่งนี้ แต่การติดตั้ง network-manager บนระบบของฉันจะติดตั้งสิ่งต่าง ๆ ทั้งหมดที่ฉันไม่ต้องการ (เช่นสิ่ง GUI) )
เอเวอรี่ชาน

1
การแข่งขันเพิ่มรายการใดใน /etc/resolvconf/resolv.conf.d/head (ตามบล็อกของคุณ)
sup

3
@AveryChan ใช้วิธีการ "สาม" แนะนำโดย @ randallcook เพียงแค่เพิ่มdns-nameserversไปยังส่วน eth0 /etc/network/interfacesของคุณ
mrm

1
/etc/resolvconf/update.d/libcบนเซิร์ฟเวอร์ Ubuntu 14.04.1: # Set TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no # to allow additional nameserver addresses to be listed in # resolv.conf after an initial loopback address 127.* or ::1. (กำหนดใน/etc/default/resolvconfบรรทัด 23 & 24 ของการ/etc/resolvconf/update.d/libcแสดง
immeëmosol

134

ฉันพบวิธีการอื่นที่นี่ที่เกี่ยวข้องกับการเพิ่มบรรทัดเหมือนที่ด้านล่างเพื่อ/etc/dhcp/dhclient.conf:

prepend domain-name-servers x.x.x.x, y.y.y.y;

ในทำนองเดียวกันฉันพบวิธีที่สามที่นี่ที่เกี่ยวข้องกับการเพิ่มบรรทัดไปที่/etc/network/interfaces:

auto eth0
iface eth0 inet static
    . . .
    dns-nameservers 8.8.8.8 8.8.4.4

อัปเดต: นี่คือเอกสารอย่างเป็นทางการสำหรับแนวทางที่สาม


18
ฉันโหวตให้กับสิ่งนี้เพราะthird approachมันเป็นวิธีที่ง่ายที่สุดในการทำสิ่งนี้
Billy Moon

1
@billy ฉันไม่สามารถรับวิธีที่สามในการทำงานเลย .. มีเพียงรายการแรกที่แสดงที่นี่การแก้ไข dclient.conf ทำงานให้ฉัน
เจฟฟ์แอด

9
หมายเหตุ: การแก้ไข dhclient.conf จะมีผลเฉพาะถ้าใช้ dhclient เท่านั้น (และจะถูกใช้โดยทั้ง ifup และ NetworkManager!) การแก้ไข / etc / network / interfaces จะมีผลกระทบเฉพาะถ้าใช้ ifup เท่านั้น การกำหนดค่าการเชื่อมต่อ NetworkManager โดยใช้ตัวแก้ไขการเชื่อมต่อ NetworkManager จะมีผลเฉพาะถ้าใช้ NetworkManager
jdthood

1
หากฉันไม่ผิดวิธีที่สามจะเพิ่มเนมเซิร์ฟเวอร์อื่นหลังจากที่ DHCP ส่งคืน หากคุณต้องการให้มันมาก่อนตัวเลือกอื่น ๆ ที่เหมาะสมกว่า ฉันใช้/etc/resolvconf/resolv.conf.d/head(หลังจากเอาชนะความคิดเห็นที่ทำให้เข้าใจผิด "อย่าแก้ไข" ในที่นั่น :))
starfry

1
@ Mr.Hyde คำสั่งเหล่านี้ไม่ใช่คำสั่งบรรทัดเป็นบรรทัดสำหรับเพิ่มไปยัง / etc / network / interfaces
Randall Cook

90

ดูเหมือนคุณกำลังพูดถึงแพ็คเกจ resolvconf

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

วิ่ง

cd /etc/resolvconf/resolv.conf.d
sudo cp -p head head.orig  #backup copy, always do this
sudo nano head

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

nameserver <ip_of_nameserver>

กดCtrl xและตอบตกลงเพื่อบันทึกไฟล์ หากต้องการทำให้เสร็จให้สร้าง /etc/resolv.conf ใหม่เพื่อให้การเปลี่ยนแปลงมีผลทันที:

sudo resolvconf -u

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


ข้อมูลเกี่ยวกับคำเตือนไฟล์เป็นสิ่งที่ฉันต้องการ ฉันรู้สึกว่าฉันไม่ควรแก้ไขไฟล์! ขอบคุณ!
Xunnamius

นี่คือคำตอบที่ดีที่สุดสำหรับฉัน!
Siwei Shen 申思维

31

ด้านล่างฉันจะแสดงวิธีที่ดีที่สุดที่ฉันพบตั้งแต่ฉันใช้งาน Ubuntu Server Edition และใช้ ifup แทนที่จะเป็น NetworkManager

ที่จริงแล้วสำหรับฉันพวกเขาทำให้มันง่ายขึ้น :) โดยใส่มันลงในไฟล์ / etc / network / interfaces การกำหนดค่าเดียวกับที่คุณจะเขียนเพื่อ resolv.conf ตอนนี้สามารถอยู่ในไฟล์เดียวกับการกำหนดค่าอะแดปเตอร์เครือข่ายของคุณเช่นในตัวอย่างด้านล่าง:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        dns-nameservers 75.75.75.75 75.75.76.76
        dns-search local

ฉันหวังว่านี่จะช่วยได้และทำให้ง่ายขึ้นสำหรับฉันตอนนี้เราสามารถสร้างที่อยู่ IP แบบคงที่และเพิ่มในเนมเซิร์ฟเวอร์และโดเมน DNS ทั้งหมดในไฟล์เดียว :)


1
ขอขอบคุณ. นี่เป็นวิธีที่ฉันชอบเช่นกัน หมายเหตุนอกหัวข้อ: ไม่จำเป็นต้องระบุที่อยู่ 'เครือข่าย' และ 'ออกอากาศ' เนื่องจากคำนวณโดยอัตโนมัติจาก 'ที่อยู่' และ 'netmask' สิ่งที่คุณต้องการจริงๆคือ 'ที่อยู่', 'netmask' และ 'เกตเวย์'
Martijn Heemels

นี่คือคำตอบที่สะอาดที่สุด เพียงตรวจสอบให้แน่ใจว่าได้สะกดคำหลัก dns- * อย่างถูกต้อง คำว่า "dns-nameservers" ที่สะกดผิดนั้นเป็นปัญหาที่แท้จริงของฉัน
John McGehee

18

Mine กำลังใช้งาน Ubuntu Server 12.04 ฉันได้ทำการเปลี่ยนแปลงต่อไปนี้และรีบูตเซิร์ฟเวอร์ (โดยทั่วไปจะสามารถทำได้โดยการนำอินเทอร์เฟซเครือข่ายนั่นคือifdown eth0หรือifup eth0)

ในไฟล์/etc/resolvconf/resolv.conf.d/baseฉันเพิ่มรายการต่อไปนี้:

nameserver 8.8.8.8
nameserver 8.8.4.4

ฉันหวังว่าข้างต้นช่วย!


12

คุณสามารถใช้ NetworkManager ตามที่ระบุไว้ในคำตอบของ Frank แต่ถ้าคุณต้องการแก้ไขด้วยตนเอง/etc/resolv.confคุณสามารถทำได้โดยการลบมัน (จริงๆแล้วมันเป็น symlink) จากนั้นสร้างไฟล์ธรรมดาใหม่ที่มีเนื้อหาที่คุณต้องการ ยูทิลิตี้เท่านั้นที่เคยเขียนไปยังแฟ้มresolvconf/run/resolvconf/resolv.conf


9

หมายเหตุ: คำตอบนี้มีไว้สำหรับคำถามที่แตกต่างและค่อนข้างกลมกลืนโดยมีการเน้นเฉพาะเนมเซิร์ฟเวอร์ที่ต้องการล่วงหน้า

งานนี้ก่อน -12.04:

แก้ไข/etc/dhcp3/dhclient.confและเพิ่ม:
prepend domain-name-servers 127.0.0.1;

(อันที่จริงแล้วบรรทัดนี้มีอยู่แล้วสิ่งที่คุณต้องทำคือยกเลิกการแสดงความคิดเห็น)


ใช้งานได้ไหมถ้าคุณไม่มีที่อยู่ใด ๆ ที่กำหนดโดย DHCP
Azendale

หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการกำหนดค่า dhclient คุณสามารถทำman dhclient.confเพื่อเข้าถึงหน้า dhclient (นี่ไม่ใช่การตอบคำถามของ Azendale)
Christian Skjødt

คำตอบนี้ผิดอย่างสมบูรณ์ ก่อนอื่นผู้ส่งคำถามต้องการเพิ่มที่อยู่ของเซิร์ฟเวอร์ภายนอกไม่ใช่ที่อยู่ 127.0.0.1 ตัวกำหนดค่าอินเตอร์เฟสสำหรับอินเทอร์เฟซภายนอกไม่ใช่ที่สำหรับเพิ่มที่อยู่สำหรับเนมเซิร์ฟเวอร์ภายใน อันดับที่สองไฟล์อยู่ที่ / etc / dhcp ไม่ใช่ที่ / etc / dhcp3 ประการที่สามตั้งแต่ Ubuntu 12.04 สิ่งต่าง ๆ ได้รับการกำหนดค่าโดยใช้ resolvconf
jdthood

1
ก่อนอื่น - คำถามเดิมเปลี่ยนไปอย่างมากโดยการรวมผู้ดำเนินรายการดังนั้นคำตอบของฉันดูเหมือนแปลก ไฟล์ dhcp3 เป็นที่ตั้งเมื่อฉันตอบคำถามนี้ในปี 2011และแม้ว่าจะไม่เหมาะ แต่ก็ใช้งานได้ ฉันใช้วิธีนี้กับเครื่องหลายเครื่อง เห็นได้ชัดว่าคุณจะเปลี่ยนที่อยู่ย้อนกลับเป็นที่อยู่ที่คุณต้องการเติม ฉันคิดว่าคนส่วนใหญ่รู้ว่าลูปแบ็คคืออะไรถึงแม้ว่าพวกเขาจะไม่ได้อ่าน RFC6890
belacqua

@jdthood ทำไมไม่เพิ่มคำตอบของคุณเอง? โดยส่วนตัวแล้วฉันไม่คุ้นเคยกับวิธีการทำสิ่งต่าง ๆ ของ bsd-ish ฉันชอบแนวทางโดยตรง /etc/resolv.conf และฉันไม่แน่ใจว่าข้อดีของระบบ Rube Goldberg ใหม่คืออะไร (เช่นเดียวกันกับ / etc / motd)
belacqua

7

resolvconfไม่มีประโยชน์ ฉันอยู่บนเซิร์ฟเวอร์ Linux และที่อยู่ IPของฉันเป็นแบบคงที่และเซิร์ฟเวอร์DNSของฉันคงที่ ฉันไม่จำเป็นต้องresolvconfหรือNetworkManager

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

ดังนั้นฉันทำaptitude purge resolvconfด้วยตนเองและทำให้แน่ใจว่า/etc/resolv.confไม่ใช่symlinkและเพิ่งสร้างไฟล์คงที่ ในกรณีที่โปรแกรมพยายามเปลี่ยนไฟล์ฉันทำ chattr +i(ไม่เปลี่ยนรูป) เพื่อ/etc/resolv.confเป็นการป้องกันไว้ก่อน


4
เนื่องจาก resolvconf เป็นส่วนหนึ่งของระบบพื้นฐานโดยการลบมันคุณจะถามปัญหาในอนาคตในเวลาอัพเกรด
jdthood

3
ฉันเห็นด้วยกับทั้งความคิดเห็นและคำตอบ: พิจารณาว่ามีปัญหาเกิดขึ้นกี่ครั้งและจำนวนชั่วโมงสนับสนุนในการแก้ไข "ปัญหา" นี้และพนักงานไอทีจำนวนมากใช้เวลาค้นหาคำตอบ เรียบง่ายดีที่สุด - ฉันไม่ต้องการให้เซิร์ฟเวอร์เปลี่ยน DNS เป็นสิ่งที่ฉันไม่ต้องการ
เหม่ย

6

ข้างต้นส่วนใหญ่ถือว่าคุณมีระบบเก่าแก่ แต่ความจริงมักจะเป็นเช่นที่คุณได้ติดตั้งไคลเอนต์ dhcp ที่แตกต่างกันปิดการใช้งานตัวจัดการเครือข่ายใน Ubuntu รุ่นก่อนหน้าบางรุ่น ฯลฯ อาจคุ้มค่าที่จะทราบต่อไปนี้ ฉันใช้ dnsmasq มาระยะหนึ่งแล้ว แต่ได้ทำการติดตั้งไปแล้ว ปัจจุบันระบบของฉันมีเนื้อหาดังต่อไปนี้ของ/etc/resolv.conf(ซึ่งเป็นลิงก์สัญลักษณ์ไปยัง/run/resolvconf/resolv.confในระบบของฉัน):

cat /etc/resolv.conf
# 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
nameserver 127.0.0.1

ไม่สำคัญว่าฉันจะเรียกใช้บ่อยแค่ไหนsudo resolvconf -uหรือsudo dpkg-reconfigure resolvconfไม่ได้อัปเดตเนมเซิร์ฟเวอร์ให้เป็นชื่อที่ฉันตั้งไว้ใน NetworkManager ข้อมูล resolvconf ใช้จาก NetworkManager มีอยู่:

cat /run/resolvconf/interface/NetworkManager  
nameserver 8.8.4.4
nameserver 8.8.8.8

อย่างไรก็ตามเป็นกรณีที่หากมีหลายไฟล์ในไดเรกทอรีนี้ไฟล์นี้อาจไม่สามารถใช้งานได้เลย ผู้ร้ายเป็นไฟล์ที่ไม่ถูกลบออกด้วยการถอนการติดตั้งของ dnsmasq:

cat /run/resolvconf/interface/lo.dnsmasq                        
nameserver 127.0.0.1

เพียงแค่ลบไฟล์นี้ (และเรียกใช้sudo resolvconf -uหลังจากนั้น) แก้ไขปัญหา dns ของฉัน:

cat /etc/resolv.conf                        
# 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
nameserver 8.8.4.4
nameserver 8.8.8.8 

ฉันหวังว่าสิ่งนี้จะช่วยผู้อื่นในการดีบัก (การโต้ตอบที่ซับซ้อนระหว่างเครื่องมือเครือข่ายที่แตกต่างกันเหล่านี้) หากคุณใช้resolvconfตรวจสอบให้แน่ใจว่าได้ทำงานls /run/resolvconf/interfacesเพื่อดูว่ามีอะไรบ้าง


1
ขอบคุณนี่มีประโยชน์มาก ฉันลองคำตอบที่โหวตให้สูงกว่าก่อนแล้วดูเหมือนจะไม่มีใครทำกลอุบาย ฉันไม่มีไฟล์เพิ่มเติมใน/run/resolvconf/interface/dir แต่NetworkManagerไฟล์ของฉันต้องการความรัก คำตอบของคุณช่วยแก้ไขปัญหานี้ให้ฉัน
mason81

4

ฉันเพิ่งลบลิงค์ใน/etc/resolv.confและสร้างไฟล์ระเบียบด้วยที่อยู่ของเนมเซิร์ฟเวอร์ มันใช้งานได้และฉันไม่เห็นเหตุผลใด ๆ ที่จะใช้สิ่งก่อสร้างที่ค่อนข้างแปลกประหลาดที่นักพัฒนา Ubuntu ได้สร้างขึ้น


1
ใช่ฉันไม่ใช่แฟนของการเปลี่ยนแปลงประเภทนี้ที่มีผลต่อเซิร์ฟเวอร์เพิ่มความซับซ้อนและความทึบ นี่คือพฤติกรรมหลักที่ไม่ควรเปลี่ยนจากรุ่นเป็นรุ่น
belacqua

คำตอบนี้มีอายุ 5 ปีและ IMHO ยังดีที่สุดในบรรดารายการทั้งหมด มันง่ายรวดเร็วและมีประสิทธิภาพ มีข้อเสียหรือไม่?
Craig S. Anderson

3

คุณสามารถแก้ไขการเชื่อมต่อ "AUTO ETH0" หรือชื่ออะไรก็ได้ที่คุณใช้เชื่อมต่อใน NM คุณสามารถทำได้โดยคลิกขวาที่ NM แล้วเลือก "แก้ไขการเชื่อมต่อ ... " บนแท็บ IPv4 คุณสามารถเลือก "ที่อยู่อัตโนมัติ (DHCP) เท่านั้น" เป็น "วิธีการ" และ NM จะช่วยให้คุณตั้งค่าที่อยู่เซิร์ฟเวอร์ชื่อด้วยตนเองแม้ที่อยู่จะถูกส่งผ่าน DHCP


3

การเพิ่มบิตของฉันลงในรายการที่มีความยาวอยู่แล้วนี่เป็นอีกวิธีหนึ่ง (ทดสอบที่ 12.04):

แก้ไข/run/resolvconf/interface/NetworkManagerให้เหมาะกับความต้องการของคุณ นี่คือตัวอย่าง:

search foobar.com example.com
nameserver 192.168.1.1

จากนั้นตามที่ระบุไว้สำหรับส่วนมากของตัวอย่างอื่น ๆ sudo resolvconf -uทำ ตอนนี้คุณจะพบว่าคุณมีresolv.confลักษณะเช่นนี้:

nameserver 192.168.1.1
nameserver 127.0.0.1
search foobar.com example.com

ฉันยังคงไม่ชอบวิธีการนำไปใช้งานในตอนนี้ (ดูเหมือนว่า Ubuntu ต้องการบริการสำหรับทุก ๆ สิ่งที่ทำ) และต้องการใช้งานแบบธรรมดาresolv.confแน่นอน แต่วิธีการนี้ดูเหมือนจะเป็นการประนีประนอมที่ดีที่สุดสำหรับฉันจนถึงตอนนี้ "localhost-NS" ที่เพิ่มเข้ามาไม่ควรทำร้ายมากเกินไป


2

ฉันแก้ไขสิ่งนี้โดยเปลี่ยนลำดับของแหล่งที่มา ฉันย้ายที่dnsมาก่อนmdnsใน /etc/nsswitch.conf:

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4

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


แทนที่จะเพิ่มรายการแก้ไขระบบที่ใช้งานไม่ได้และให้ข้อมูลที่คุณต้องการจริงๆ +1
nelaaro

2

เกี่ยวกับ:

sudo dpkg-reconfigure resolvconf

ก่อนหน้านั้นให้ใช้ Network Manager เพื่อเปลี่ยนที่อยู่ DNS และเปลี่ยนวิธีการเป็น

ที่อยู่อัตโนมัติ (DHPC) เท่านั้น

จากนั้นรันคำสั่งด้านบนและรีบูต นั่นเป็นทางออกสำหรับฉัน


2
vi /etc/network/interfaces


This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The primary network interface
allow-hotplug eth0


# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0         <<----- change this comment with the #
iface eth0 inet dhcp

2

นี่เป็นคำถามที่ได้รับความนิยมมากโดยมีคำตอบมาตรฐานที่เป็นไปได้ทั้งหมดซึ่ง IMO นั้นค่อนข้างแฮ็ค ฉันคนหนึ่งมักมีปัญหาในการให้ Ubuntu เคารพการตั้งค่า DNS ที่ฉันตั้งใน NetworkManager - โดยเฉพาะการตั้งค่าเซิร์ฟเวอร์ DNS แบบคงที่ด้วย "ที่อยู่อัตโนมัติ (DHCP) ที่อยู่เท่านั้น" - และวันนี้ในที่สุดฉันก็พบสิ่งผิดจริง

ปัญหาอยู่ในการโต้ตอบระหว่าง resolvconf และ NetworkManager resolvconf /etc/resolvconf/interface-orderมีไฟล์นี้เรียกว่า อย่างน้อยในระบบของฉัน NetworkManager ไม่ได้อยู่ในไฟล์นี้เลย (ยกเว้นว่าจะครอบคลุมด้วย * wild card ในตอนท้าย) ดังนั้นสิ่งที่เกิดขึ้นคือรายงานล่าสุดของ dhclient สำหรับ resolvconf นั้นสำคัญกว่า NetworkManager ทุกอย่างที่ต้องพูด

ดังนั้นอย่างน้อยในกรณีของฉันคำตอบที่แท้จริงคือการเพิ่ม

NetworkManager

/etc/resolvconf/interface-orderหรือใกล้ด้านบนของ

(ใช่ฉันรู้ว่าหลายคนแค่พูดว่า "ถอนการติดตั้ง resolvconf" ซึ่งดูเหมือนว่าเป็นความคิดที่ไม่ดีในตัวฉันเอง แต่ยิ่งไปกว่านั้นอย่างน้อยเจ้าเล่ห์และ xenial พิจารณา resolvconf เป็นส่วนสำคัญของระบบ [เช่น Ubuntu - น้อยที่สุดขึ้นอยู่กับมัน] ดังนั้นจึงเป็นเรื่องยากที่จะทำให้ระบบของคุณอยู่ในสถานะที่สอดคล้องและอัปเดตโดยไม่ต้อง resolvconf)

เมื่อได้รับการร้องขอฉันสามารถให้รายละเอียดเพิ่มเติมเกี่ยวกับวิธีคิดออก ( แก้ไข : เห็นได้ชัดว่าฉันไม่ได้ทำเมื่อมีการร้องขอขอโทษ ณ จุดนี้ฉันจำรายละเอียดไม่ได้มากไปกว่าสิ่งที่ฉันพูดต่อไป :) โดยสรุปฉันเปลี่ยนแทน executvconf ที่มีตัวห่อตัวรอบตัวมัน ซึ่งทิ้งอาร์กิวเมนต์, อินพุต, เอาต์พุตและ stderr ไปยังไฟล์ และเพิ่ม set -x เพื่อแก้ไขสคริปต์การอัพเดทของ resolvconf

( แก้ไข : ฉันสามารถพูดได้ว่าสิ่งที่ฉันหมายถึงโดยส่วนแรกคือฉันใช้ sudo เพื่อย้ายปฏิบัติการจริง resolvconf ซึ่งสามารถพบได้โดยใช้คำสั่งที่หรือคำสั่งพิมพ์จากนั้นสร้างเชลล์สคริปต์ที่ในที่สุดก็ดำเนินการย้าย resolvconf แต่ยังรวมถึงข้อโต้แย้งไปยังไฟล์บางไฟล์และใช้การเปลี่ยนเส้นทางเชลล์เพื่อส่ง stdin, stdout และ stderr ไปยังไฟล์อื่น ๆ ฉันไม่จำที่ "สคริปต์อัพเดตของ resolvconf" อยู่และไม่สามารถตรวจสอบได้ง่ายในขณะนี้ฉันคิดว่า ลินุกซ์หลายคนสามารถเข้าใจสิ่งที่ฉันหมายถึงบางทีพลเมืองดีบางคนอาจให้รายละเอียดเพิ่มเติมในความคิดเห็น)


กรุณา " ให้รายละเอียดเพิ่มเติมเกี่ยวกับวิธีที่คุณคิดออก "
Pierre.Vriens

1

อีกวิธีหนึ่งคือการกำหนดเซิร์ฟเวอร์ DNS นักเทียบท่าเฉพาะที่:

/etc/docker/daemon.json

หากคุณไม่มีไฟล์ดังกล่าวเพียงแค่สร้างมันขึ้นมา:

{
    "dns": ["10.0.0.2", "8.8.8.8"]
}

ที่มา: https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/

ดูได้ที่: https://docs.docker.com/engine/reference/commandline/dockerd/#/daemon-configuration-file


1

หากต้องการเปลี่ยน DNS ให้ทำตามคำแนะนำใน: https://developers.google.com/speed/public-dns/docs/using

  1. ไปที่เครือข่าย

  2. เลือกการเชื่อมต่อที่คุณต้องการกำหนดค่า DNS

  3. หากต้องการเปลี่ยนการตั้งค่าสำหรับการเชื่อมต่อไร้สายให้เลือกแท็บไร้สายจากนั้นเลือกเครือข่ายไร้สายที่เหมาะสม

  4. คลิกที่ลูกศร (ขวา) และในหน้าต่างที่ปรากฏขึ้นให้เลือกแท็บการตั้งค่า IPv4 หรือการตั้งค่า IPv6

  5. หากวิธีที่เลือกคืออัตโนมัติ (DHCP) ให้เปิดรายการแบบเลื่อนลงและเลือกที่อยู่อัตโนมัติ (DHCP) เท่านั้นแทน หากวิธีการตั้งค่าเป็นอย่างอื่นไม่เปลี่ยน

  6. ในฟิลด์เซิร์ฟเวอร์ DNS ป้อนที่อยู่ IP ของ DNS คั่นด้วยเครื่องหมายจุลภาค


0

0. เพิ่ม DNS ชั่วคราว แก้ไข /etc/resolv.conf

nameserver 4.4.4.4
nameserver 8.8.8.8

1. ติดตั้งหรือปรับปรุง resolvconf

root@ubuntu:~# apt-get install resolvconf -y

2. เพิ่มเนมเซิร์ฟเวอร์ของคุณลงใน /etc/resolvconf/resolv.conf.d/tail

nameserver 4.4.4.4
nameserver 8.8.8.8

3. รีบูตเครื่องของคุณ

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