วิธีการปิดการใช้งานระบบที่แก้ไขในอูบุนตู?


87

ฉันจะปิดการใช้งานการแก้ไขระบบใน Ubuntu 17.04 ได้อย่างไร

ปิดใช้งานด้วยsystemctl disableไม่ทำงานดูเหมือนว่าจะเริ่มบริการใหม่ (โดย Networkmanager หรือไม่)


10
แก้ไข systemd ไม่เพียงใหญ่ แต่ยังแบ่งวิธีการแก้ปัญหา dns ทำงานโดยไม่พยายามแก้ไขตามลำดับเซิร์ฟเวอร์ dns ที่ระบุในการกำหนดค่าไคลเอนต์ เมื่อเซิร์ฟเวอร์ไม่สามารถแก้ไขโดเมนได้รายการถัดไปในรายการจะถูกย้ายไปที่ด้านบน (การโทรที่เรียกว่า 'หน่วยความจำ') ดูกระทู้นี้สำหรับรายละเอียด
LifeBoy

7
มันยังเลี่ยงกฎ iptables ซึ่งเป็นความคิดที่แย่มาก
Spongman

คำตอบ:


150

วิธีนี้ใช้ได้กับ Ubuntu รุ่น 17.04 (Zesty), 17.10 (Artful), 18.04 (Bionic), 18.10 (Cosmic) และ 19.04 (Disco):

ปิดใช้งานและหยุดบริการที่แก้ไขโดย systemd:

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

จากนั้นใส่บรรทัดต่อไปนี้ใน[main]ส่วนของคุณ/etc/NetworkManager/NetworkManager.conf:

dns=default

ลบ symlink /etc/resolv.conf

rm /etc/resolv.conf

รีสตาร์ท NetworkManager

sudo systemctl restart NetworkManager

นอกจากนี้โปรดทราบว่าการปิดใช้งาน systemd-resolvd อาจทำให้การจำแนกชื่อใน VPN สำหรับผู้ใช้บางคนไม่ดีขึ้น ดูข้อผิดพลาดนี้บน launchpad (ขอบคุณ Vincent)


4
ดูเหมือนว่าจะไม่สามารถใช้งานบน Ubuntu 17.04 ได้ Alsi, ไฟล์ปรับแต่งคือ /etc/NetworkManager/NetworkManager.conf การแก้ไขชื่อพักเมื่อฉันทำข้างต้น แก้ไขแล้ว systemd แก้ไขครั้งใหญ่ตอนนี้การแก้ไข DNS DNS ไม่ทำงานเลยสำหรับฉัน ความคืบหน้าของข้อผิดพลาดสามารถพบได้ที่นี่: bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624317
Vincent Gerris

5
ฉันคิดว่าคุณควรเพิ่มคำตอบข้างต้นว่า "apt-get install dnsmasq" ควรจะทำเมื่อระบบปิดการแก้ไขได้ถูกปิดใช้งาน
LifeBoy

5
@LifeBoy ฉันไม่ได้ใช้ dnsmasq ฉันแค่ไม่ใช้เนมเซิร์ฟเวอร์ในท้องถิ่นไม่เห็นคุณค่าของมัน
Bastian Voigt

9
สำหรับ Ubuntu 18.04 สิ่งที่จำเป็นต้องมีก็คือรันคำสั่ง sudo systemctl ปิดการใช้งาน systemd-resolve.service และบริการ sudo หยุดการแก้ไขระบบ ที่ทำงานให้ฉัน
แดเนียลอีเกิล

12
ขอขอบคุณ. SystemD ทำลายลินุกซ์ทำให้มันน่าเชื่อถือและเข้าใจได้ในบางสิ่งที่ทำงานผ่านเวทย์มนตร์
Forbesmyester

18

ฉันเพิ่งอัพเกรดเป็น (k) Ubuntu 17.04 และฉันก็สะดุดเมื่อเปลี่ยนเป็น systemd

การตั้งค่าของฉันเป็นเรื่องปกติฉันคิดว่าฉันมีผู้ให้บริการ DNS ใน HUB บรอดแบนด์ของฉันและนี่คือแหล่งข้อมูลหลักของฉันสำหรับอุปกรณ์ทั้งหมดในเครือข่ายของฉัน (ซึ่งฉันมีไม่กี่)

มีความงามอยู่บ้างใน systemd มันไม่ได้เลวร้ายนัก แต่สิ่งที่แย่จริง ๆ ก็คือเอกสารประกอบการขาดการสื่อสารจากทีมอูบุนตูและ gung-ho "เราแค่เปลี่ยนมันทั้งๆ

ทางออกสำหรับฉันหลังจากผมร่วงบางส่วนคือการแก้ไข /etc/systemd/resolved.conf:

[Resolve]
DNS=192.168.1.254   # <-- change to your router address
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
Domains=lan         # <-- change to your localdomain name (maybe .local)
#LLMNR=yes  <-- I dabbled with this for a while but it doesn't matter
#DNSSEC=no
#Cache=yes
#DNSStubListener=udp

หลังจากไม่เข้าใจว่าทำไมสิ่งนี้ถึงใช้งานไม่ได้ฉันคิดว่าสิ่งที่ต้องการก็คือเปลี่ยน /etc/resolv.conf ไปเป็นอันที่จัดเตรียมโดย systemd นี่ไม่ใช่กรณีในการติดตั้งออกจากกล่อง (สำหรับเหตุผลที่ไม่รู้จักกับฉัน)

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

เซิร์ฟเวอร์ DNS ในเครื่องไม่ได้ใช้งานและคำขอ DNS ทั้งหมดจะถูกส่งไปที่ HUB ของฉัน

ฉันคิดว่านี่เป็นทางออกที่ดีกว่าการตัดและวางโซลูชันอื่น ๆ เนื่องจาก systemd-resolv เป็นค่าเริ่มต้นต่อไป

ปัญหาที่เกี่ยวข้องกับ btw คือ /etc/nsswitch.conf นั้นทำหมัน

คุณควรอ่าน:

โฮสต์: ไฟล์ mdns4_minimal dns [NOTFOUND = return] แก้ไข [! UNAVAIL = return] dns

นี่เป็นการกำหนดค่าที่สับสนเนื่องจาก [NOTFOUND = return] หมายถึงการประมวลผลสิ้นสุดลงที่นั่น รายการหลังจากนั้นจะไม่ถูกใช้


1
แล้วฉันจะต้องเปลี่ยนที่อยู่เราเตอร์ในการกำหนดค่าทุกครั้งที่ฉันเชื่อมต่อกับ WiFi ใหม่หรือไม่ คุณจริงจังไหม -1
Bastian Voigt

ฉันไม่ทราบว่าคุณโรมมิ่งอยู่กับมัน หากคุณเป็นเช่นนั้นปล่อยให้รายการการตั้งค่าแสดงความคิดเห็น คุณควรได้รับ /etc/resolv.conf ที่ระบุว่า: nameserver 8.8.8.8 nameserver 8.8.4.4
user2427436

1
ฉันไม่คิดว่าจำเป็นต้องแก้ไข resol.conf หากคุณตั้งค่า netplan อย่างถูกต้อง ie, netplan เขียนค่าที่ถูกต้องไปยังไฟล์ symlinked ... PS SYSTEMD SUCKS!
g33kz0r

3

หากคุณมีปัญหาการรั่วไหลของ VPN และไม่สามารถหาวิธีการตั้งค่า systemd (เช่นฉัน) คุณสามารถลบออกได้ตามวิธีที่อธิบายไว้ในคำตอบแรก แต่ไม่เพิ่มdns=defaultบรรทัดเพราะมันจะเปิดใช้งานเนมเซิร์ฟเวอร์ 127.0 .0.1 ในการตั้งค่าเราเตอร์เป็น DNS ให้สร้างไฟล์ "tail" ใน/etc/resolvconf/resolv.conf.d/ โฟลเดอร์ของคุณเพื่อเพิ่มบรรทัดnameserser 192.168.1.1

ทำอย่างไรln -sf /var/run/resolved/resolv.conf /etc/resolv.confถ้าคุณมีไฟล์นี้ยุ่งอยู่


1
จริงๆ? สำหรับฉันมันทำงานตรงตามที่อธิบายไว้ในคำตอบของฉัน ไม่ใช้เนมเซิร์ฟเวอร์ 127.0.0.1 อย่างแน่นอน ฉันคิดว่ามันไม่สะดวกในการ hardcode IP ของ nameserver ของคุณในไฟล์ปรับแต่ง อย่างน้อยฉันก็เปลี่ยนเครือข่าย wifi ค่อนข้างบ่อยและแต่ละ wifi มีเนมเซิร์ฟเวอร์ที่แตกต่างกัน
Bastian Voigt

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