Làm cách nào để sửa lỗi phân giải DNS không hoạt động sau khi nâng cấp lên Ubuntu 13.10 (Saucy)


64

Sau khi nâng cấp lên 13.10, việc giải quyết DNS của tôi không thành công. Có vẻ như các máy chủ DNS mà tôi nhận được bằng DHCP (LAN) không được sử dụng.

Tôi có thể tạm thời giải quyết vấn đề bằng cách thêm nameserver 8.8.8.8vào /etc/resolv.conf. Nhưng sau đó các máy chủ mạng nội bộ vẫn không thể được giải quyết.

Khi nhấp vào mục menu Thông tin kết nối trên chỉ báo mạng, DNS chính và DNS phụ được đặt chính xác. Nhưng máy tính của tôi không sử dụng chúng.

Vì vậy, câu hỏi của tôi:

  • Tôi nên đưa cái gì vào resolv.conf, nếu có gì?
  • Làm thế nào để tìm ra, máy chủ tên mà máy tính của tôi đang truy vấn?
  • Nơi để tìm tiếp theo, để tìm hiểu, tại sao máy chủ tên mà DHCP nhận được không được sử dụng?

2
Tôi gặp vấn đề tương tự khi nâng cấp từ 12.04 lên 14.04.
Tarrasch

6
Tôi đã gặp lỗi DNS hàng ngày kể từ khi nâng cấp lên 16.10 vài ngày trước.
WindRider

@WindRider có cùng một vấn đề, thủ thuật với dnsmasq dưới đây dường như có hiệu quả.
Suor

Tôi đã gặp sự cố khi cài đặt mới LubFi 17.04 và giải quyết nó bằng cách thêm thủ công các url cần thiết vào tệp máy chủ: Askubfox.com/a/936972/34298
rubo77

Câu trả lời:


83

Trước tiên, bạn cần biết một chút về cách giải quyết tên hoạt động trong Ubuntu kể từ Ubuntu 12.04.

Stéphane Graber đã viết một số thông tin về nó năm ngoái tại đây . Điều quan trọng nhất cần biết là cả Ubuntu Server và Ubuntu Desktop đều sử dụng độ phân giải để quản lý resolv.conftệp. Điều đó có nghĩa là bạn không nên chỉnh sửa /etc/resolv.conftrực tiếp nữa; thay vào đó, bạn nên định cấu hình tiện ích cấu hình giao diện mạng của mình để cung cấp thông tin chính xác cho độ phân giải. Đối với Ubuntu Server, tiện ích cấu hình giao diện mạng là ifup và được cấu hình bởi tệp /etc/network/interfaces. Đối với Ubuntu Desktop, tiện ích cấu hình giao diện mạng là NetworkManager . Đây là những gì bạn đang sử dụng.

Trình quản lý mạng được định cấu hình bằng chỉ báo Mạng> Chỉnh sửa kết nối . Tuy nhiên, đối với các giao diện mạng được cấu hình bởi DHCP, thông thường không cần thiết phải thay đổi bất kỳ cài đặt nào theo cách thủ công. Thông thường những gì xảy ra là máy chủ DHCP (từ xa) cung cấp cho NetworkManager cả địa chỉ IP cho giao diện cục bộ và địa chỉ của máy chủ tên DNS (từ xa) để sử dụng. Trình quản lý mạng bắt đầu một phiên bản của máy chủ tên chuyển tiếp nghe cục bộ tại 127.0.1.1. Địa chỉ này, 127.0.1.1, được gửi tới độ phân giải được đặt nameserver 127.0.1.1trong/etc/resolv.conf. NetworkManager cũng cung cấp địa chỉ IP (từ xa) của máy chủ tên DNS do DHCP cung cấp cho máy chủ tên chuyển tiếp. Do đó, một chương trình chạy trên hệ thống cục bộ yêu cầu trình phân giải dịch tên máy chủ thành địa chỉ IP; trình giải quyết truy vấn máy chủ chuyển tiếp cục bộ tại 127.0.1.1; máy chủ tên chuyển tiếp truy vấn (các) máy chủ tên từ xa mà nó đã được thông báo, nhận câu trả lời và gửi lại chuỗi đó.

NetworkManager giao tiếp với quá trình máy chủ tên chuyển tiếp qua D-Bus. Bạn có thể thấy những gì NetworkManager nói với máy chủ tên chuyển tiếp bằng cách chạy lệnh

nmcli dev list iface eth0 | grep IP4.DNS

Cập nhật phát sinh từ việc nhận xét:
Lưu ý resolvconf rằng thực sự viết các tập tin /run/resolvconf/resolv.conf/etc/resolv.confđược coi là một liên kết tượng trưng. Nếu /etc/resolv.confkhông phải là một liên kết tượng trưng thì bạn cần phải tạo lại nó. Để làm như vậy bạn có thể chạy

sudo dpkg-reconfigure resolvconf

hoặc là

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf        

Cảm ơn bạn rất nhiều vì thông tin này. Trong trường hợp của tôi, lệnh hiển thị các máy chủ DNS chính xác. Nhưng tệp resolf.conf không được cập nhật. Nó có dấu thời gian từ khi tôi đặt các giá trị của mình ở đó. Vì vậy, tôi sẽ phải tìm ra lý do tại sao độ phân giải không ghi tệp.
Witek

15
Resolvconf thực sự ghi tập tin /run/resolvconf/resolv.conf và /etc/resolv.conf được coi là một liên kết tượng trưng đến /run/resolvconf/resolv.conf. Nếu bạn đã xóa /etc/resolv.conf thì bạn đã xóa liên kết tượng trưng. Để tạo lại liên kết tượng trưng bạn có thể chạy sudo dpkg-reconfigure resolvconfhoặc bạn có thể làmmv /etc/resolv.conf /run/resolvconf/resolv.conf && ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf
jdthood

7
Điều này có mọi thứ trừ 'sửa chữa'. Làm thế nào tôi có thể giải quyết vấn đề này?
Amal Murali

5
Cách khắc phục có thể là chạy sudo dpkg-reconfigure resolvconfnhư được đề xuất trong phần cuối của câu trả lời.
jdthood

Cảm ơn bạn!!! Tôi không chắc chắn những gì đã xảy ra với hệ thống của tôi nhưng chạy sudo dpkg-reconfigure resolveconfcó vẻ hoạt động tốt!
meanbunny

49

Tôi đã thực hiện thay đổi được đề xuất trên liên kết bên dưới (vô hiệu hóa dnsmasq). Bây giờ mọi thứ hoạt động tuyệt vời! http://www.ubuntugeek.com/how-to-disable-dnsmasq-in-ubfox-12-04precise.html

Mở /etc/NetworkManager/NetworkManager.conftệp.

sudo gedit /etc/NetworkManager/NetworkManager.conf

Nhận xét dòng như:

#dnsmasq deactivated
#dns=dnsmasq

4
Sau khi nhận xét dnsmasq, bạn cần khởi động lại trình quản lý mạng : sudo restart network-manager.
Don Kirkby

2
Trong trường hợp của tôi (Xubfox), lệnh là: sudo /etc/init.d/network-manager restart
aviram83

Nếu bạn có điều này xảy ra với bạn, mặc dù không có dnsmasq được cài đặt và không có gì để bình luận, hãy thêm dns=defaultvào [main]phần. NetworkManager có plugin dnsmasq khó chịu của riêng nó mà nó sẽ sử dụng theo cách khác.
dstibbe

1
Tôi cần thực hiện việc khởi động lại này network-manager-sudo service network-manager restart
Sungam

Một trong những hộp của tôi không có dns sau khi nâng cấp lên 17.10 và hóa ra /etc/resolv.conf không phải là một liên kết tượng trưng. Đã sửa nó. Một hộp khác không hoàn thành nâng cấp và tôi tìm thấy một tệp .dpkg mới trong thư mục, khác biệt với chúng là sự khác biệt chính là dnsmasq. Sao chép nó và làm việc mà không cần khởi động lại bất kỳ trình nền nào
fchen

20

EDIT 2: Bài viết trước đã bị xóa một cách hợp lý bởi kiểm duyệt, tôi đang đăng những gì tôi thấy là một giải pháp. Xin lỗi vì điều đó.

EDIT: Tôi vừa tìm thấy câu trả lời và nó nằm trong chính trang này - xin lỗi vì miopy của tôi. Tôi đã đăng những phát hiện của mình dưới đây, mở rộng câu trả lời đúng của Richard Lindstedt được tìm thấy trong trang này. Tôi rời khỏi ầm ầm đầu của tôi cho một chút bối cảnh. Xin hãy nêu lên câu trả lời của Richard, anh ấy xứng đáng với điều đó.

Nó thực sự rất dễ dàng.

chỉ cần mở tập tin giao diện của bạn -> sudo vi / etc / network / giao diện

Điều đó chắc chắn không giúp được OP và không giúp tôi bây giờ. Chúng tôi không muốn địa chỉ tĩnh, chúng tôi muốn sử dụng địa chỉ mà máy chủ DHCP gửi cho chúng tôi. Trình quản lý mạng dường như nhận ra chúng, nhưng Ubuntu thẳng thừng bỏ qua chúng:

# nmcli dev list iface wlan0 | grep IP4.DNS
IP4.DNS[1]:          10.*.*.*
IP4.DNS[2]:          10.*.*.*
IP4.DNS[3]:          8.8.8.8

Nhưng...

# dig microsoft.com
; <<>> DiG 9.9.5-4.3-Ubuntu <<>> microsoft.com
;; global options: cmd
;; connection timed out; no servers could be reached

Và giao diện / etc / mạng / của tôi là:

auto lo
iface lo inet loopback

đó là một chút kỳ lạ, tôi sẽ mong đợi tất cả các giao diện được khai báo ở đây (hoặc tôi đang thiếu một cái gì đó?).

Vì vậy, trong ngắn hạn:

  • Tôi không gây rối với bất kỳ tập tin nào để bắt đầu
  • Tôi đã chạy rồi dpkg-reconfigure resolvconf
  • Symlink đúng là đúng chỗ
  • Trình quản lý mạng truy xuất các máy chủ DNS chính xác từ DHCP
  • Ubuntu KHÔNG sử dụng các địa chỉ đó
  • Cách giải quyết là đặt cố định 8.8.8.8 trên / etc / mạng / giao diện MÀ TÔI KHÔNG MUỐN
  • Tôi muốn sử dụng các máy chủ DNS do DHCP cung cấp trong mọi tình huống.

Không mở một chủ đề khác bởi vì đó là vấn đề chính xác, ngoại trừ tôi vào ngày 14.10 (nhưng điều này đã làm tôi khó chịu kể từ khi nâng cấp từ 12.10 lên 13.04).

GIẢI PHÁP

Câu nói cuối cùng đó đã đưa tôi đi đúng hướng, và chỉ sau đó tôi mới nhận thấy câu trả lời của Richard.

Vấn đề dường như có liên quan đến xung đột dnsmasqresolvconfcác gói. Cho đến ngày 12.10, dnsmasqđã được sử dụng. Từ ngày 13.04 trở đi, Ubuntu dường như chuyển sang lai dnsmasq / decvconf, nơi bạn đã cài đặt các gói dnsmasq-baseresolvconf, nhưng không phải dnsmasqchính nó.

Tôi không thể nói nếu đó là một lỗi trong các kịch bản nâng cấp cho 13.04 hay cái gì khác, bởi vì khi nâng cấp (như trong bản cài đặt mới), độ phân giải được cài đặt, dnsmasq-base được nâng cấp và dnsmasq được gỡ cài đặt (chính xác).

Điều hấp dẫn là, kịch bản nâng cấp không thể bình luận ra dns=dnsmasqdòng /etc/NetworkManager/NetworkManager.conf. Vì vậy, mặc dù dnsmasq daemon không còn xuất hiện trên hệ thống, /etc/resolv.conf vẫn mong đợi nó sẽ xuất hiện.


VIỆC NÀY THẬT LÀ TUYỆT!
cuộc họp

1
OMG điều này đã giải quyết các vấn đề DNS của tôi, tôi đã có 3 năm qua! Nếu bạn có dnsmasqdnsmasq-basecài đặt, NM sẽ đưa 127.0.0.1vào /etc/resolv.confthay vì 127.0.1.1. Tôi chỉ cần gỡ cài đặt dnsmasq(và kích hoạt NM) và mọi thứ đều hoạt động tốt.
dùng1129682

4
Nhân viên Google trong tương lai nên lưu ý rằng bạn phải làm sudo service network-manager restartđiều này để có hiệu lực.
bảng chấm công

Điểm tốt về khởi động lại dịch vụ quản lý mạng!
Henrique

7

Nó thực sự rất dễ dàng.

chỉ cần mở tập tin giao diện của bạn -> sudo vi / etc / network / giao diện

và trong giao diện của bạn (có thể là eth0), bạn sẽ thấy tất cả các cấu hình thông thường.

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1

Sau cổng, chỉ cần thêm 'dns-nameervers 8.8.8.8 8.8.8.9' hoặc bất kỳ máy chủ tên nào bạn sẽ sử dụng.

Vì vậy, cấu hình của bạn phải là:

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1
dns-nameservers 8.8.8.8 8.8.8.9

sau đó chỉ cần thực hiện 'khởi động lại dịch vụ mạng sudo' và bạn sẽ ổn!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.