máy chủ tên 127.0.1.1 trong độ phân giải sẽ không biến mất!


60

Tôi đã đọc rằng tôi chỉ nên có nameserver 127.0.1.1trong /etc/resolv.conftệp của mình nếu máy của tôi có máy chủ DNS riêng. Vì nó không, có nó gây ra vấn đề. Nhưng dù tôi có làm gì thì tôi cũng không thể thoát khỏi nó!

Dưới đây là những điều tôi đã làm cho đến nay:

  1. Thêm nameserver 192.168.1.3vào /etc/resolvconf/resolv.conf.d/basetập tin. (192.168.1.3 là DNS của mạng chúng tôi).
  2. Đang chạy : sudo resolvconf --enable-updates.
  3. Đang chạy : sudo resolvconf -u.
  4. Chạy: sudo service network-manager restart(chỉ để đảm bảo).

Khi tôi mở /etc/resolv.conftập tin thì nó báo : nameserver 127.0.1.1! Có ai có ý kiến ​​gì sai không?

Xin lưu ý rằng đó thực sự là 127.0.1.1! Và tôi không biết tại sao nó lại không 127.0.0.1!

Ngay cả khi tôi cập nhật /etc/resolv.confthủ công và thay đổi nó thành bất cứ điều gì khác, sudo resolvconf -unó sẽ hoàn nguyên lại 127.0.1.1! Địa chỉ này đến từ đâu?

Câu trả lời:


100

NetworkManager là chương trình (thông qua tiện ích phân giải) chèn địa chỉ 127.0.1.1vào resolv.conf. NM chèn địa chỉ đó nếu chỉ khi nó được cấu hình để bắt đầu một phiên bản của chương trình dnsmasq để phục vụ như một máy chủ tên chuyển tiếp cục bộ. Ví dụ dnsmasq lắng nghe các truy vấn tại địa chỉ 127.0.1.1.

Nếu bạn không muốn sử dụng máy chủ tên miền chuyển tiếp cục bộ thì hãy cấu hình NetworkManager để không bắt đầu một thể hiện dnsmasq và không chèn địa chỉ đó. Trong /etc/NetworkManager/NetworkManager.confbình luận ra dòngdns=dnsmasq

sudo nano /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq

và khởi động lại dịch vụ NetworkManager.

sudo service network-manager restart

Trong chế độ này, NetworkManager cập nhật /etc/resolv.conf(vẫn thông qua độ phân giải) để bao gồm các địa chỉ máy chủ tên mà NetworkManager có cho các kết nối hoạt động.

Nếu bạn muốn vô hiệu hóa cơ chế phân giải để cập nhật độ phân giải và chỉ sử dụng tệp độ phân giải tĩnh, hãy làm như sau.

sudo rm -f /etc/resolv.conf  # Delete the symbolic link
sudo nano /etc/resolv.conf   # Create static file

# Content of static resolv.conf
nameserver 8.8.4.4
nameserver 8.8.8.8

Tôi có 3 DNS và truy vấn không bao giờ đạt đến lần thứ 3 nếu tôi tắt dnsmasq, có mẹo nào không? Tôi muốn truy vấn Google, sau đó truy vấn mạng nội bộ dns. Cảm ơn
JorgeeFG

3
restart network-managerkhông hoạt động trên Xenial vì nó sử dụng systemd thay vì khởi động. thửsystemctl restart network-manager
Matthias Weiler

Câu hỏi của tôi là chương trình dnsmasq sẽ hỏi máy chủ DNS nào? nó sẽ hỏi máy chủ DNS của DHCP để truy vấn địa chỉ IP của máy chủ?
Đồng hồ NGÀY

11

Có thể là độ phân giải bị cấu hình sai. Điều này đặc biệt có khả năng nếu bạn đã chơi xung quanh với các tệp cấu hình của nó mà không thực sự hiểu cách thức hoạt động của độ phân giải và Trình quản lý mạng.

Để biết thông tin cơ bản, vui lòng đọc tài liệu về độ phân giải và bài đăng trên blog của Stéphane Graber.

https://www.stgraber.org/2012/02/24/dns-in-ubfox-12-04/

Trước tiên, bạn nên biết rằng cả Ubuntu Desktop và Ubuntu Server theo mặc định đều đã cài đặt và kích hoạt. Resolvconf cung cấp một khung để cập nhật động tệp /etc/resolv.conf theo cách có trật tự và có thể đảo ngược.

Thứ hai, bạn nên biết rằng Ubuntu Desktop theo mặc định đã cài đặt và kích hoạt NetworkManager. Theo mặc định, Trình quản lý mạng bắt đầu một phiên bản của dnsmasq để phục vụ như một máy chủ tên miền chuyển tiếp cục bộ. Ví dụ dnsmasq do NetworkManager kiểm soát này lắng nghe các truy vấn tại 127.0.1.1. Khi NetworkManager khởi động phiên bản dnsmasq, nó sẽ báo chovvvvv để chèn địa chỉ 127.0.1.1vào tệp phân giải. Như đã đề cập trong một câu trả lời khác, nếu bạn định cấu hình Trình quản lý mạng không khởi động phiên bản máy chủ tên miền chuyển tiếp cục bộ thì nó sẽ không khởi động máy chủ tên chuyển tiếp cục bộ và sẽ không yêu cầu giải quyết để chèn địa chỉ 127.0.1.1vào tệp phân giải.

Cấu hình mặc định này hoạt động chính xác, vì vậy trừ khi tình huống của bạn là đặc biệt, bạn nên khôi phục cấu hình mặc định.

Để khôi phục cấu hình mặc định, hãy xem nó

  • /etc/resolvconf/resolv.conf.d/head chỉ chứa văn bản tiêu đề có độ phân giải gồm hai dòng bắt đầu bằng một #ký tự
  • /etc/resolvconf/resolv.conf.d/base là một tệp trống
  • /etc/resolvconf/resolv.conf.d/tail là một tệp trống
  • /etc/resolv.conf là một liên kết tượng trưng với nội dung ../run/resolvconf/resolv.conf

Để đạt được điều này, thực hiện các lệnh sau.

sudo su
dpkg-reconfigure resolvconf   # And answer `Yes` to agree to dynamic updates
cd /etc/resolvconf/resolv.conf.d
echo '# 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' > head
rm -f base tail original
:> base
:> tail

Cấu hình ban đầu của NetworkManager là phải có

[main]
...
dns=dnsmasq
...

trong /etc/NetworkManager/NetworkManager.conf. Đó là một lựa chọn hợp lý để vô hiệu hóa máy chủ tên miền chuyển tiếp cục bộ do NetworkManager kiểm soát bằng cách nhận xét dns=dnsmasqdòng này.

[main]
...
#dns=dnsmasq
...

Sau khi thực hiện tất cả điều này, nên khởi động lại máy để xóa các bản ghi thông tin máy chủ tên cũ.

sudo reboot

1

Trong trường hợp của tôi, không có dns=dnsmasqdòng nào trong /etc/NetworkManager/NetworkManager.conftệp và /etc/resolv.confvẫn bị ghi đè bởi Trình quản lý mạngnameserver 127.0.1.1

Cách khắc phục là khôi phục liên kết tượng trưng để cập nhật đúng cách:

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf
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.