หลังจากอัปเกรดการติดตั้ง 16.04 เป็น 16.10 ฉันมีปัญหากับ DNS
ครั้งแรกที่ฉันมีปัญหาสองสามครั้งเมื่อเชื่อมต่อกับ WiFi ในขณะที่ทำงานบนอีเธอร์เน็ต ตอนนี้ดูเหมือนว่าจะทำงานกับ WiFi ด้วย ไม่แน่ใจว่าทำไมและถ้าเป็นไปในทางที่เกี่ยวข้องกับปัญหาที่ฉันเผชิญตอนนี้:
เมื่อเชื่อมต่อไปยังโฮสต์ VPN พร้อมด้วยCisco Anyconnect VPNก็เพิ่มเส้นใน '/etc/resolv.conf' ฉันเข้าใจว่า Ubuntu กำลังใช้systemd-resolและหน้า man บอกว่ามีสามโหมดที่แตกต่างกันสำหรับการจัดการ /etc/resolv.conf /etc/resolv.conf ของฉันไม่ใช่ symlink และไม่ได้แสดงรายการ 127.0.0.53 เป็นเซิร์ฟเวอร์ DNS ดังนั้นเท่าที่ฉันเข้าใจ systemd แก้ไขควร "อ่านสำหรับข้อมูลการกำหนดค่า DNS" อย่างไรก็ตามมันดูเหมือนจะไม่สนใจ
ขุด
สิ่งที่แปลก (สำหรับฉัน) คือการdig host.customer.tld
ส่งคืนคำตอบที่ดีกับส่วนคำตอบที่แสดง IP ของโฮสต์ที่ร้องขอและมันหมายถึงเซิร์ฟเวอร์ DNS ที่เพิ่มไปยัง /etc/resolv.conf โดยลูกค้า VPN เป็นเซิร์ฟเวอร์ เมื่อการเชื่อมต่อ VPN ถูกปิดการใช้งานฉันไม่ได้รับคำตอบ เช่นขุดอ่าน /etc/resolv.conf
ปิง
เบราว์เซอร์ในอีกด้านหนึ่งไม่ได้รับ /etc/resolv.conf และไม่สามารถแก้ไขชื่อโฮสต์ได้ ไม่ ping / curl โดยวิธี
nmcli
ฉันพบโพสต์ที่เกี่ยวข้องและลองเรียกใช้
nmcli device show <interfacename> | grep IP4.DNS
แต่จะไม่มีรายการ dns สำหรับอุปกรณ์ cscotun0 (มันไม่ได้อยู่ใน 16.04 ทั้งๆที่) นอกจากนี้ nmcli แสดงเซิร์ฟเวอร์ dhcp ของฉัน (เราเตอร์ของฉัน) เป็นโฮสต์ IP4.DNS สำหรับการเชื่อมต่อ eth / wlan ของฉัน ใช้dig @192.168.0.1 xxx
สำหรับโดเมนสาธารณะทำงานได้ดี
องค์ประกอบ
มีเซิร์ฟเวอร์ DNS อื่น ๆ อยู่ในรายการ /run/systemd/resolve/resolv.conf ของฉัน:
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 2001:4860:4860::8888
# Too many DNS servers configured, the following entries may be ignored.
nameserver 2001:4860:4860::8844
สิ่งเหล่านี้ไม่ได้ให้บริการโดยเซิร์ฟเวอร์ DHCP ของฉัน ไฟล์ /etc/systemd/resolved.conf มีเฉพาะบรรทัดที่ถูกคอมเม้นต์ยกเว้นส่วนหัวของส่วน:
[Resolve]
#DNS=
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
man page สำหรับresol.confบอกว่า
DNS = รายการที่อยู่ IPv4 และ IPv6 ที่คั่นด้วยช่องว่างเพื่อใช้เป็นเซิร์ฟเวอร์ DNS ของระบบ ... เพื่อเหตุผลด้านความเข้ากันได้หากไม่ได้ระบุการตั้งค่านี้เซิร์ฟเวอร์ DNS ที่ระบุไว้ใน /etc/resolv.conf จะถูกใช้แทนหากไฟล์นั้นมีอยู่และเซิร์ฟเวอร์ใด ๆ การตั้งค่านี้มีค่าเริ่มต้นเป็นรายการที่ว่างเปล่า
FallbackDNS = รายการที่คั่นด้วยช่องว่างของที่อยู่ IPv4 และ IPv6 เพื่อใช้เป็นเซิร์ฟเวอร์ DNS ทางเลือก เซิร์ฟเวอร์ DNS แบบต่อลิงก์ใด ๆ ที่ได้รับจาก systemd-networkd.service (8) มีความสำคัญเหนือกว่าการตั้งค่านี้เช่นเดียวกับเซิร์ฟเวอร์ใด ๆ ที่ตั้งค่าผ่าน DNS = ด้านบนหรือ /etc/resolv.conf ดังนั้นการตั้งค่านี้จะถูกใช้ก็ต่อเมื่อไม่ทราบข้อมูลเซิร์ฟเวอร์ DNS อื่น ๆ หากไม่ได้รับตัวเลือกนี้จะใช้รายการเซิร์ฟเวอร์ DNS ที่คอมไพล์แล้วแทน
ดูเหมือนว่าทางเลือกจะสิ้นสุดลงใน /run/systemd/resolve/resolv.conf ในกรณีของฉัน
แก้ไข: ฉันไม่แน่ใจว่าปัญหาคืออะไรและบอกตามตรงฉันยังไม่รู้แน่ชัดว่าทำงานอย่างไร แต่อย่างน้อยมันกลับกลายเป็นว่าวิธีแก้ปัญหาในกรณีของฉันคือปิดใช้งานsystemd-resolved
บริการ ฉันคิดว่าจำเป็นต้องใช้บริการนั่นเป็นองค์ประกอบที่ให้บริการ DNS กับแอปพลิเคชันในพื้นที่ทั้งหมด แต่ดูเหมือนจะมีสิ่งอื่นที่ทำหน้าที่นี้อยู่