DNS ตั้งค่าเป็น 127.0.0.53 ของ systemd - วิธีการเปลี่ยนอย่างถาวร?


37

ฉันเพิ่งอัพเกรดเป็น 17.10 เมื่อฉันพยายามเรียกดูเว็บไซต์หรือ ping โดเมนมันล้มเหลวโดยบอกว่าเว็บไซต์ไม่สามารถแก้ไขได้

network-adminแสดงเนื้อหาของ/etc/resolv.confการเป็นnameserver: 127.0.0.53

ถ้าฉันเปลี่ยนเป็น 8.8.8.8 หรือ 208.67.222.222 ทุกอย่างก็ใช้ได้ จนกว่าฉันจะรีบูต

เมื่อรีบูทหรือทำงานต่อเนมเซิร์ฟเวอร์จะถูกรีเซ็ตเป็น 127.0.0.53

ฉันจะตั้งค่าเนมเซิร์ฟเวอร์อย่างถาวรเป็นสิ่งที่ใช้งานได้อย่างไร


สำหรับแฟน systemd ถ้าฉันวิ่งsystemd-resolve --statusฉันจะได้รับ

Link 3 (wlo1)
      Current Scopes: LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

ถ้าฉันทำตามคำแนะนำในคำถามนี้ - DNS ยังคงรีเซ็ตหลังจากรีบูต Ubuntu 17.10 - DNS ยังไม่สามารถแก้ไขได้


systemctl stop systemd-resolvedและsystemctl mask systemd-resolvedควรทำเคล็ดลับ :)
Shayan

คำตอบ:


28

คุณสามารถติดตั้งแพคเกจ resolvconf ซึ่งจะปรับเปลี่ยนวิธีการ/etc/resolv.confสร้างขึ้นในการบูตระบบ

sudo apt install resolvconf

/etc/resolvconf/resolv.conf.d/tailจากนั้นคุณสามารถสร้างหรือแก้ไขไฟล์ หากคุณใส่ไฟล์ลงในบรรทัดnameserver 8.8.8.8นี้บรรทัดนี้จะถูกเพิ่มเมื่อสิ้นสุดการ/run/resolvconf/resolv.confบูท /etc/resolv.confตอนนี้จะเป็นลิงก์สัญลักษณ์ไปยังไฟล์นี้


4
ใช้งานได้ - ขอบคุณ! คุณรู้หรือไม่ว่ามีวิธีใดที่จะให้ 127.0.0.53 ทำงานด้วยตัวเอง?
Terence Eden

1
ฉันค่อนข้างใหม่สำหรับเรื่องนี้ เพิ่งพยายามกำจัดปัญหา DNS เมื่อเปิด / ปิด VPN ในช่วงสัปดาห์ที่ผ่านมา sudo dpkg-reconfigure resolvconfคุณอาจจะลอง ฉันลองสิ่งนี้เมื่อเร็ว ๆ นี้เคลียร์ไฟล์ท้ายและตอนแรกมันก็ใช้ได้
oscar1919

@ TerenceEden หากคุณต้องการให้ 127.0.0.53 ทำงานด้วยตัวเอง (เท่าที่ควร) ลองดูคำตอบของฉัน: askubuntu.com/a/1083843/281191
intelfx

9

ที่ถูกต้องวิธีการแก้ปัญหาจะแก้ไข systemd แก้ไขแทนการพยายามที่จะรักษาไมเกรนด้วยกิโยติน

มันเป็นเครื่องมือที่ดีจริงๆถ้าใช้อย่างถูกต้อง

ตัดสินโดยsystemd-resolve --statusผลลัพธ์ของคุณ...

Link 3 (wlo1)
      Current Scopes: LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

... เครื่องมือตัวจัดการเครือข่ายของคุณไม่ผ่านการกำหนดค่า DNS ต่ออินเตอร์เฟสเพื่อแก้ไขระบบ

รุ่นล่าสุดของ NetworkManager ตัวอย่างเช่นจะทำเช่นนี้โดยอัตโนมัติหาก/etc/resolv.confเป็นภายใน symlink ชี้หรือ/run/systemd/resolve /usr/lib/systemd/resolv.confอีกวิธีหนึ่งเวอร์ชันล่าสุดของ systemd ที่แก้ไขแล้วพยายามที่จะเข้ากันได้กับอินเตอร์เฟส resolvconf ที่ผ่านมาโดยการติดตั้งresolvconfไบนารีที่พูดถึงการแก้ไข systemd

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

$ cat /etc/systemd/resolved.conf
<...>
[Resolve]
DNS=8.8.8.8 8.8.4.4
<...>

จากนั้นรีสตาร์ทsystemd-resolved.serviceหรือรีบูต


อย่างน้อยสำหรับฉันคำตอบนี้ใช้งานไม่ได้โดยใช้ ubuntu 18.04 หลังจากเปลี่ยนรายการ "DNS" มันให้ใช้กับ 127.0.0.53
André M. Faria

1
@ AndréM.Fariaเรียนรู้วิธีการทำงานที่ได้รับการแก้ไข 127.0.0.53เป็นที่อยู่ของตัวแก้ไข stub การแคชในเครื่อง ส่งต่อคำขอ DNS ไปยังเซิร์ฟเวอร์ DNS ต้นทางที่คุณระบุ
intelfx

บางครั้งคุณรู้อะไรบางอย่างและไม่สนใจมันใช่คุณพูดถูก
André M. Faria

1
สิ่งที่ดีที่ควรทราบที่นี่คือโดยค่าเริ่มต้นsystemd-resolvedแคชการตอบสนอง DNS ขณะนี้อาจมีประโยชน์บางครั้งก็สามารถทำให้เกิดปัญหาในบางสถานการณ์ บรรทัดเหล่าcache=yesบรรทัดในไฟล์ config noในคำตอบและตั้งค่าให้
Quentin Skousen

อะไรเป็นสาเหตุที่ทำให้/etc/resolve.conf(หรือที่จริง /run/resolvconf/resolv.confซึ่งอดีตชี้ไป) ได้รับการปรับปรุง? จะดีที่จะรู้สำหรับการทดสอบโดยไม่ต้องมีการรีบูตสันนิษฐานว่าถูกต้อง ทั้งหมดที่ฉันสามารถพูดได้ก็คือการเริ่มต้นใหม่systemd-resolved.serviceดูเหมือนจะไม่หลอกลวง
bbarker

8

ทำงานภายในsystemdกระบวนทัศน์เพิ่ม DNS ไปยังลิงค์ / อุปกรณ์

ใช้ubuntu 17.10+เพิ่ม*.networkไฟล์:

sudo nano /lib/systemd/network/100-somecustom.network:

100-somecustom.network (100 สามารถเป็นหมายเลขใดก็ได้สำหรับลำดับความสำคัญและต้องการ.networkนามสกุลไฟล์):

[Match]
Name=wlo1 # the device name here

[Network] # add multiple DNS 
DNS=8.8.8.8
DNS=208.67.222.222

จากนั้นรีสตาร์ท:

sudo service systemd-networkd restart

มองไปที่:

netplan apply

จากนั้นตรวจสอบ:

systemd-resolve --status wlo1

จากหน้าข้อมูลinfo systemd.network:

นอกเหนือไป/etc/systemd/network, หล่นใน ".d"ไดเรกทอรีสามารถ วางไว้ใน / lib / systemd / เครือข่ายหรือ / วิ่ง / systemd / เครือข่ายไดเรกทอรี ไฟล์ดร็อปอินใน / etc มีความสำคัญมากกว่าไฟล์ใน / run ซึ่งจะมีความสำคัญเหนือกว่าไฟล์ใน / lib ไฟล์ดร็อปอินภายใต้ไดเรกทอรีใด ๆ เหล่านี้มีความสำคัญมากกว่าไฟล์ netdev หลักไม่ว่าจะอยู่ที่ไหนก็ตาม (แน่นอนเนื่องจาก / run เป็นชั่วคราวและ / usr / lib สำหรับผู้ขายจึงไม่ควรใช้ดร็อปอินในสถานที่เหล่านั้น)

วิธีการอื่นDNSStubListenerสำหรับปิดการใช้งานด้วยdnsmasq:

sudo nano /etc/systemd/resolved.conf:

#
DNSStubListener=false

ที่เกี่ยวข้อง:


แปลกคือคุณระบุว่า DNSStubListener = false แต่การกำหนดค่าความคิดเห็นจริงคือ DNSStubListener = ใช่โดยปกติค่าผกผันของค่า "ใช่" คือ "ไม่" และไม่ใช่ "เท็จ" ซึ่งในกรณีของ "เท็จ" มักจะเป็น " ความจริง"
André M. Faria

คำตอบของคุณในการสร้างไฟล์ที่มีนามสกุล. network ไม่ทำงาน
André M. Faria

7

ฉันใช้ Lubuntu & Kubuntu 18.04 ฉันสามารถเอาชนะปัญหา DNS ได้ใน 2 ขั้นตอน:

ขั้นตอนแรก:ติดตั้งunboundและตั้งค่าให้เปลี่ยนsystemd-resolvedเป็นGrégoire Cการแสดงที่นี่

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
sudo systemctl enable unbound-resolvconf
sudo systemctl enable unbound

รีบูต

เปิดเป็นรูทไฟล์ /etc/NetworkManager/NetworkManager.conf

( sudo leafpad /etc/NetworkManager/NetworkManager.confใน Lubuntu 18.04 หรือใน Kubuntu 18.04 SUDO_EDITOR=kate sudoedit /etc/NetworkManager/NetworkManager.conf)

และด้านล่าง[main]ใส่บรรทัดนี้:

dns=unbound

รีบูตอีกครั้ง

ขั้นตอนที่สอง:ถ้าหลังจากรีบูตปัญหายังไม่สามารถแก้ไขได้เพราะมันเป็นในกรณีของฉันเริ่มต้นการจัดการไฟล์เป็นรากไป/etcลบและสร้างใหม่resolv.conf resolv.confปล่อยว่างไว้และรีบูตระบบปฏิบัติการ ในกรณีของฉันหลังจากรีบูตปัญหานี้หายไป

ใน Kubuntu 18.04 คุณไม่สามารถเริ่มโลมาเป็นรากดังนั้นก่อนอื่นคุณสามารถไป/etcและเปิดสถานีจากที่นั่นแล้วพิมพ์sudo suและกดEnterจะใช้มันเป็นรากและลบกับคำสั่งresolv.conf rm resolv.confจากนั้นคุณสามารถสร้างไฟล์ว่างใหม่บนเดสก์ท็อปตั้งชื่อresolv.confและเปิดเทอร์มินัลได้ ใช้sudo suคำสั่งเพื่อเข้าสู่โหมดรากของสถานีและคัดลอกใหม่resolv.confจากเดสก์ทอปของคุณที่จะมีคำสั่ง/etccp resolv.conf /etc

ฉันต้องเพิ่มว่าฉันไม่ได้พยายามทำขั้นตอนที่สองก่อนที่จะติดตั้งunboundดังนั้นในครั้งต่อไปที่ฉันจะทำเช่นนั้นเพียงเพื่อดูว่ามันจะเพียงพอหรือไม่


เหตุใดจึงไม่เพียงแก้ไขเป็นรูทและลบเนื้อหา
Ballie

@ Balie ฉันได้ลองในตอนแรก แต่ก็ไม่ได้ช่วย ฉันคิดว่าต้นฉบับresolv.confจาก/etcนั้นก็แสดงว่าเป็นทางลัดบางชนิดซึ่งไม่ปกติ resolv.confนี่คือเหตุผลที่ฉันตัดสินใจที่จะลบและสร้างมันด้วยการสร้างไฟล์ใหม่ที่ว่างเปล่าและตั้งชื่อมัน และมันก็ใช้งานได้ ด้วยเหตุนี้ฉันจึงเขียนข้างต้นว่าครั้งต่อไปที่ฉันต้องติดตั้งระบบปฏิบัติการใหม่ฉันจะพยายามทำสิ่งนี้ก่อนโดยไม่ทำ "ขั้นตอนแรก" - เพื่อดูว่ามันจะเพียงพอหรือไม่ แต่ต้นฉบับresolv.confใน/etcความต้องการที่จะลบและสร้างใหม่ - เกี่ยวกับเรื่องนี้ฉันแน่ใจ
КалоянГрънчаров

ฉันเพิ่งปิดการใช้งาน systemd-resol.service และลบลิงค์ของ resolv.conf และสร้างขึ้นด้วยตนเองและมันทำงานได้!
André M. Faria

2

นี่คือวิธีที่ฉันเปลี่ยนเร็กคอร์ด dns ของฉันบนคอนฟิกูเรชันอินเตอร์เฟส

$ vi /etc/netplan/50-cloud-init.yaml

เปลี่ยนที่อยู่เซิร์ฟเวอร์ชื่อก่อนหน้านี้เป็น. 4 จากนั้นฉันเปลี่ยนเป็น. 3:

...
            nameservers:
                addresses:
                - 192.168.1.3
...

บันทึกการกำหนดค่าแล้วใช้การกำหนดค่า:

$ sudo netplan apply

หลังจากนั้นรีสตาร์ทเซอร์วิส resolctl

$ sudo systemctl restart systemd-resolved.service

สำหรับบันทึกย่อ: ฉันรีบูตเซิร์ฟเวอร์และการเปลี่ยนแปลงที่ฉันทำยังคงไม่เปลี่ยนแปลง ฉันใช้resolvctl dnsคำสั่งเพื่อตรวจสอบบันทึก DNS


นี่เป็นคำตอบที่ถูกต้องจริงๆ ฉันประหลาดใจที่มันไม่ใช่ที่ยอมรับ
Toumal

0

มีปัญหาบางอย่างกับ NordVPN ดังนั้นตัดสินใจเพิ่มในสิ่งนี้

ข้อค้นพบ:
NordVPN ตั้ง/run/systemd/resolve/resolv.confค่า DNS เมื่อทำการเชื่อมต่อ
NordVPN ลบการตั้งค่า DNS ทั้งหมดออกจาก/run/systemd/resolve/resolv.confเมื่อยกเลิกการเชื่อมต่อ
สิ่งนี้ทำให้เซิร์ฟเวอร์ DNS ไม่ทำงานอีกต่อไป (เนื่องจากไม่มีชุดเดียว)

ระบบต้องการการรีบูตเพื่อตั้งค่ากลับเป็นอะไรเลย การรีสตาร์ทบริการ ( sudo systemctl restart systemd-resolved.service) มาตรฐานไม่ทำงาน

วิธีการแก้ไขปัญหานี้:

sudo apt install resolvconf

ตรงไปที่ /etc/resolvconf/resolv.conf.d/

cd /etc/resolvconf/resolv.conf.d/
sudo nano tail

เพิ่มเนมเซิร์ฟเวอร์

nameserver 1.1.1.1
nameserver 1.0.0.1

ตรวจสอบสถานที่ต่อไปนี้สำหรับเนมเซิร์ฟเวอร์ที่สามารถตั้งค่าได้:

/run/resolvconf/interface/original.resolvconf
/run/resolvconf/interface/systemd-resolved
/etc/resolvconf/resolv.conf.d/tail
/etc/resolvconf/resolv.conf.d/head
/etc/systemd/resolved.conf
/run/systemd/resolve/resolv.conf
/run/systemd/resolve/stub-resolv.conf

ทดสอบเซิร์ฟเวอร์ DNS ที่ใช้กับ:

nslookup google.com

Server:         1.1.1.1
Address:        1.1.1.1#53

0

อาจจะสายไปหน่อย แต่ฉันพบปัญหานี้ ฉันต้องยอมรับว่าฉันได้ทำการกำหนดค่าเครือข่ายด้วยตนเองผ่าน cli มาก่อนและไม่ผ่านทางผู้จัดการเครือข่าย inbuilt ฉันรัน Ubuntu 18.04

ดังนั้นหลังจากที่ฉันปิดใช้งานและเปิดใช้งาน systemd.resolved.service อีกครั้งพฤติกรรมที่ผิดปกติของการสูญเสียการกำหนดค่า DNS ของฉันแบบสุ่มนั้นได้รับการแก้ไขสำหรับฉัน

systemctl disable systemd.resolved.service
reboot

หลังจากรีบูต:

systemctl enable systemd.resolved.service
reboot

ฉันเป็นผู้ใช้ลีนุกซ์ที่ค่อนข้างใหม่ดังนั้นต้องมีใครบางคนที่สามารถอธิบายความชำนาญได้และทำไมมันถึงเป็นเช่นนั้นสำหรับฉัน


พยายามที่จะทำให้ผิดหวัง แต่ต้องมีสิ่งที่คุณทำในระหว่างที่จริงแก้ปัญหา การดำเนินการที่คุณแนะนำที่นี่สามารถออกจากระบบได้เหมือนเดิม
tishma

-1

เมื่อใช้การจำแนกชื่อ dhcp ทำงานตามที่คาดไว้ใน Ubuntu ปัญหาเริ่มต้นเมื่อคุณต้องการไปคงที่ cat /etc/resolv.confจะแสดงว่า yor dns เป็น 127.0.0.53 ไม่ใช่ที่อยู่ใน/etc/netplan/.yamlไฟล์ ในการแก้ไขปัญหานี้คุณต้องลบ/etc/resolve.confลิงก์และสร้างลิงก์ใหม่ที่ชี้ไป/run/resolve/resolve.conf


โปรดแก้ไขคำตอบของคุณและแก้ไขการจัดรูปแบบบางอย่าง ...
Yufenyuy Veyeh Dider

-2

เรื่องนี้ต้องมีการเล่นกับ หลังจากฉันอัปเดตการตั้งค่าฉันเริ่มต้นใหม่ ใช้:

ln -s /run/resolvconf/resolv.conf /etc/resolv.conf

/etc/systemd/resolved.conf
DNS=8.8.8.8
Cache=no

System resolved failed
systemctl stop systemd-resolved
systemctl disable systemd-resolved

เมื่อความคิดเห็นออกจาก "คำขอ" สำหรับ

# domain-name, domain-name-servers, domain-search, host-name,

เพิ่มบรรทัดนี้ใน/etc/dhcp/dhclient.conf:

 supersede domain-name "cwillenterprise.com";

แก้ไขไฟล์กำหนดค่าและเพิ่มรายการ เพิ่มเติมจะไม่แทนที่

เพิ่มรายการไปยัง /etc/resolvconf/resolv.conf.d/tail

nameserver 8.8.8.8
search "cwillenterprise.com"

เรียกใช้เพื่อดำเนินการเปลี่ยนแปลง

resolvconf -u

1
ยินดีต้อนรับสู่ถาม Ubuntu ! โปรดแก้ไขคำตอบของคุณเพื่อใช้การจัดรูปแบบรหัสสำหรับรหัสที่ควรป้อนในไฟล์หรือเทอร์มินัล อย่าผนวก#กับ "ความคิดเห็น" ในรหัส - หมายถึงส่วนหัวใน Markdown โปรดตรวจสอบตัวอย่างของโพสต์ของคุณก่อนที่จะส่ง
Melebius
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.