วิธีกำหนดค่าการค้นหา DNS ในเครื่องใน Ubuntu 16.10


9

ฉันติดตั้ง Ubuntu 16.10 ใหม่และสำรองข้อมูลไดเรกทอรีบ้านของฉันก่อนหน้านี้จาก kubuntu 16.04 ไปยังการติดตั้งใหม่ของฉัน สิ่งต่าง ๆ ทำงานได้ดี แต่ฉันไม่สามารถแก้ไขที่อยู่ในพื้นที่ได้แม้ว่าจะมีการลองผิดลองถูกมาก

เครือข่ายทั้งหมดดูเหมือนว่าจะทำงานได้อย่างไร้ที่ติ การท่องอินเทอร์เน็ต, การค้นหา DNS ของที่อยู่ภายนอก, ssh, ฯลฯ นั้นยอดเยี่ยม ในพื้นที่ฉันสามารถเข้าถึงเครื่องผ่าน ssh ด้วยที่อยู่ของพวกเขา แต่ไม่ใช่ชื่อของพวกเขา ทุกอย่างทำงานได้ดีใน nautilus / samba ซึ่งหมายถึงการทำงานของ WINS ปัญหาเดียวที่ปรากฏคือ DNS เครือข่ายท้องถิ่น ฉันติดตั้งและใช้งาน avahi-daemon เนื่องจากมันมาพร้อมกับ Ubuntu

ฉันได้รวมการแก้ไขปัญหาไว้แล้วโดยใช้ << >> เพื่อย่อส่วนที่ซ้ำซ้อนหรือทำงานได้อย่างถูกต้อง

$ nmcli g
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN    
connected  full          enabled  enabled  enabled  enabled 

$ ping tendril8 << or tendril8.local >>
ping: tendril8: Name or service not known

$ ping gateway
PING gateway (192.168.1.1) 56(84) bytes of data.
64 bytes from gateway (192.168.1.1): icmp_seq=1 ttl=64 time=4.16 ms

$ ping askubuntu.com
PING askubuntu.com (151.101.129.69) 56(84) bytes of data.
64 bytes from 151.101.129.69 (151.101.129.69): icmp_seq=1 ttl=49 time=43.0 ms

$ nslookup askubuntu.com
Server:     127.0.1.1
Address:    127.0.0.1#53
<< followed by several IP addresses >>

$ nslookup tendril8 << or tendril8.local >>
Server:     127.0.1.1
Address:    127.0.0.1#53
** server can't find tendril8: NXDOMAIN

$ 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.1.1

$ ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 29 Oct 15 19:30 /etc/resolv.conf -> ../run/resolvconf/resolv.conf

$ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat
gshadow:        files

hosts:          files resolve [!UNAVAIL=return] mdns4_minimal dns [NOTFOUND=return]
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

หมายเหตุ: ฉันใช้เวลาดูโซลูชันที่เก่ากว่าก่อนที่ Ubuntu จะเปลี่ยนเป็น systemd.resolved ใน 16.10 พวกเขาไม่ได้ผลสำหรับฉันและฉันไม่เชื่อว่านี่เป็นคำถามซ้ำซ้อนกับคำถามที่คล้ายกันกับการตั้งค่า Ubuntu ก่อนหน้านี้


1
เรื่องนี้เกิดขึ้นนอกจากนี้ยังมีระบบการอัพเกรด ... ผมคิดว่าคำถามที่จะได้รับจำนวนมากของการเข้าชมในวัน :)
มิเชลดิอามิโก

ฉันเกลียดปัญหาเครือข่ายที่เลวร้ายที่สุด และอันนี้ก็กัดฉันอย่างหนัก แต่ในทางที่แตกต่างออกไปเล็กน้อย คำตอบไม่ได้แก้ไขสำหรับฉัน ดูคำถามของฉันสำหรับรายละเอียดของฉัน
moodboom

คำตอบ:


18

หากฉันเข้าใจคำถามของคุณอย่างถูกต้องคุณจะไม่สามารถแก้ไขชื่อโฮสต์ได้

เมื่อวันที่ฉันมีปัญหาเดียวกันกับการติดตั้งใหม่ของ 16.10 และมันก็กลายเป็นปัญหาที่รู้จักกัน ( https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624071 ) ที่เกี่ยวข้องกับ libnss - แก้ไขใน systemd

ทางออกในกรณีของฉันคือการตรวจสอบไฟล์ /etc/nsswitch.conf ของคุณและจดบันทึกเฉพาะวิธีที่ NSS แก้ไขโฮสต์ของคุณ:

hosts: files resolve [!UNAVAIL=return] mdns4_minimal [NOTFOUND=return] dns myhostname

ตรรกะนี้ดูเหมือนจะล้มเหลวในการแก้ปัญหาชื่อโฮสต์ก่อนที่จะไปถึง mDNS

การแก้ไขบรรทัดโฮสต์กลับไปเป็นรีลีสก่อน 16.10 จะช่วยแก้ไขข้อผิดพลาดเชิงตรรกะที่ชัดเจนนี้:

hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname

ลิงก์ข้อผิดพลาดที่รวมอยู่ในรายงานแนะนำแพคเกจ systemd รุ่นต่อไปในอนาคตอาจแก้ไขปัญหานี้ได้ในที่สุด

รวย


1
คำตอบที่ยอดเยี่ยมทั้งลิงก์และตัวอย่าง! ฉันเล่นกับคำแนะนำของคุณและพบว่าตราบใดที่ฉันย้าย "mdns4_minimal" ก่อน "[NOTFOUND = return]" และ "[! UNAVAIL = return]" มันใช้งานได้ ฉันยังต้องการส่วนต่อท้าย. local สำหรับที่อยู่ในท้องถิ่น
อันยิ่งใหญ่

1
มีข้อผิดพลาดที่เฉพาะเจาะจงมากขึ้นสำหรับ libnss-เด็ดละเอียดและ mdns ที่บั๊ก. launchpad.net/ubuntu/+source/systemd/+bug/1641328
ไนโตรเจน

7

โซลูชันทางเลือกที่การแก้ไขอัตโนมัติ/etc/nsswitch.confกำลังลบ[ แก้ไข:และติดตั้งใหม่] libnss-resolve :

sudo apt purge libnss-resolve
sudo apt install libnss-resolve

+1 นี่เป็นโซลูชั่นที่เหนือกว่าสำหรับพวกเราที่ต้องการให้การกำหนดค่าระบบยังคงเหมือนเดิมสำหรับแพ็คเกจเหล่านั้นที่เราไม่ได้เข้าไปยุ่ง ควรจะทำโดยเครื่องมืออัพเกรด / ติดตั้งภายในตอนนี้แม้ว่า ... 16.10 จะมีมาระยะหนึ่งแล้ว
eskhool

1

ฉันมีปัญหานี้เมื่อติดตั้ง Ubuntu 17.04 ใหม่ ฉันเลือกที่จะเปลี่ยนจากการใช้ systemd- แก้ไขเป็น dnsmasq บนแล็ปท็อปของฉัน (เซิร์ฟเวอร์ชื่อใช้ dnsmasq ด้วย) ฉันทำตามขั้นตอนในวิธีการปิดการใช้งาน systemd- แก้ไขและแก้ไข DNS ด้วย dnsmasq?

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