decv.conf tiếp tục được thiết lập lại bởi một cái gì đó


29

Tôi cần trợ giúp để tìm ra lý do tại sao tôi liên resolv.conftục thay đổi điều này, khiến tôi không thể truy cập internet bên ngoài và chỉ có mạng cục bộ:

$ cat /etc/resolv.conf
nameserver 192.168.16.1
domain localdomain
search localdomain

Tôi nghĩ rằng tôi đã sửa nó bằng cách loại bỏ giao diện loopback và thêm vào giao diện eth0 /etc/network/interfacesbằng các hướng dẫn trên blog hậu thế của jontsai .

Tôi đã thử làm những việc như:

$ sudo ifconfig eth0 down
$ sudo ifconfig eth0 up
$ sudo /etc/init.d/networking restart
$ sudo dhclient

Và sau đó mọi thứ sẽ hoạt động tạm thời, và cuối cùng máy chủ tên trong độ phân giải sẽ được hoàn nguyên trở lại.

PS tôi cũng đã đăng cái này lên ubuntuforums .


Chỉnh sửa: Có ít nhất một chương trình khác ngoài NetworkManager đang viết resolv.confvà tôi biết điều này bởi vì khi tôi làm mới NetworkManager,resolv.conf tệp được tạo có một nhận xét cho biết # Generated by NetworkManagervà phiên bản mà nó tiếp tục thay đổi không.

Vì vậy, tôi đang thử điều này:

while true; do echo listening; lsof | grep /etc/resolv.conf; echo sleeping; sleep 1; done


Chỉnh sửa 2:

Thêm đầu ra của tệp:

$ cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Không có tập tin nào như /etc/NetworkManager/NetworkManager.conf

$ sudo cat /etc/NetworkManager/system-connections/Auto\ Ethernet 

[connection]
id=Auto Ethernet
uuid=#######omitted#######
type=802-3-ethernet
autoconnect=true
timestamp=1314377063

[ipv4]
method=auto
ignore-auto-routes=false
ignore-auto-dns=false
dhcp-send-hostname=false
never-default=false

[802-3-ethernet]
speed=0
duplex=full
auto-negotiate=true
mtu=0

[ipv6]
method=ignore
ignore-auto-routes=false
ignore-auto-dns=false
never-default=false

Tôi nghi ngờ có lỗi Trình quản lý mạng hoặc nhiều khả năng là cấu hình sai. Phiên bản Ubuntu nào bạn đang chạy? Bạn đã resolvconfcài đặt gói? Đăng nội dung của /etc/network/interfaces, /etc/NetworkManager/NetworkManager.conf/etc/NetworkManager/system-connections/*.
Gilles 'SO- ngừng trở nên xấu xa'

Tôi đang chạy 10.04, không có resolvconfgói nào . Tại một số thời điểm, modem DSL của tôi bị hỏng (phía sau bộ định tuyến) trong khi mạng cục bộ của tôi vẫn ổn, vì vậy tôi có thể đã thử cài đặt nscdhoặc - dnsmasqchúng đã được gỡ cài đặt ngay bây giờ, nhưng nó có thể để lại một số tạo phẩm đang can thiệp?
jontsai

Được rồi, tôi mới khởi động lại máy tính lần đầu tiên sau 3 tuần và tôi nghĩ vấn đề đã biến mất. o_O
jontsai

Không chắc chắn, nhưng tôi nghĩ rằng có một số vấn đề với máy chủ DHCP trên vmnet1hoặc vmnet8(Chỉ NAT và Máy chủ)
jontsai

1
Toàn bộ cuộc thảo luận này có liên quan giảm dần kể từ Ubuntu 12.04 đã giới thiệu độ phân giải trong hệ thống cơ sở, thay đổi căn bản cách xử lý độ phân giải.
mai

Câu trả lời:


13

Bạn có thể thực hiện bổ sung tĩnh cho /etc/resolv.conf. Những bổ sung đó có thể ghi đè lên những thứ đang được thêm tự động.

Đầu tiên, cài đặt resolvconfgói.

Sau đó, nhấn Alt + F2 và chạy gksudo nautilus. Mở /etc/resolvconf/resolv.conf.d/headnếu bạn muốn thêm vào đầu tập tin; mở /etc/resolvconf/resolv.conf.d/tailnếu bạn muốn thêm vào cuối. Thực hiện các thay đổi của bạn, lưu / đóng các tệp và sau đó chạy sudo resolvconf -uđể áp dụng các thay đổi.

(Xin lỗi mà tôi không nhớ nếu cài đặt ở đầu hoặc cuối tệp có mức ưu tiên cao nhất.)


Những thay đổi của trình quản lý mạng của tôi sẽ được hoàn nguyên khi kết nối với bất kỳ VPN nào. Điều này cho phép tôi giữ 8.8.8.8 trong danh sách trình phân giải bất kể tôi kết nối với mạng nào.
Steven P

8

Tôi đã có cùng một vấn đề chính xác - độ phân giải sẽ được viết lại mỗi khi máy chủ được khởi động lại.

Nó được gây ra bởi DHCP. Để thiết lập độ phân giải cho những gì tôi muốn, tôi đã chỉnh sửa /etc/dhcp/dhclient.confvà thêm vào như sau:

supersede domain-name "my.domain.com";
prepend domain-search "my.domain.com";

Bạn thực sự có thể kiểm soát khá nhiều về tệp giải quyếtvv của bạn bằng cách thay đổi điều này.

Hy vọng nó giúp.


2
Đây sẽ là giải pháp sạch nhất nhưng vì một số lý do, nó đã ngừng hoạt động trên hệ thống của tôi vài năm trước. Tôi đã bị mắc kẹt với việc vô hiệu hóa tập lệnh decvconf hoặc chattr + i /etc/resolv.conf kể từ đó.
Tronic

7

(Câu trả lời này chứa các cách để điều tra những gì đang diễn ra. Tôi có thể đưa ra một giải pháp thực tế nếu bạn sử dụng các phương pháp này để thu thập và cung cấp thêm thông tin.)

Một kích hoạt có thể cho các bản cập nhật dường như tự phát /etc/resolv.conflà khi hợp đồng thuê DHCP của bạn được gia hạn. Kiểm tra xem bạn thuê DHCP trong bao lâu (điều này sẽ xuất hiện trong nhật ký hệ thống, tôi nghĩ vậy /var/log/syslog).

Bạn có thể sử dụng audd Cài đặt kiểm toán để tìm hiểu những gì sửa đổi tập tin. Bắt đầu daemon ( sudo service auditd start) và bảo nó xem các sửa đổi cho tệp đó:

sudo auditctl -w /etc/resolv.conf -p w

Nhật ký kiểm toán đang ở /var/log/audit/audit.log. Bạn sẽ thấy thời gian tệp được sửa đổi và tên của chương trình đã sửa đổi nó.

Nếu bạn đã resolvconfcài đặt gói, Trình quản lý mạng có thể đang bước trên các ngón chân của nó. Hãy thử đưa tất cả các giao diện mạng xuống, sau đó dừng Trình quản lý mạng ( sudo service network-manager stop), sau đó khởi động lại nó.


1
Tôi tin rằng bạn đã đúng về việc phát hành DHCP. Bạn có thể thay đổi cài đặt DHCP trong trình quản lý mạng như sau: Chạy nm-connection-editortrong thiết bị đầu cuối của bạn. Chọn giao diện của bạn và nhấn chỉnh sửa. Trong cài đặt IPv4, sẽ có một phương thức chỉ gọi là địa chỉ DHCP (hoặc một cái gì đó tương tự). Nếu tôi không nhầm, điều này sẽ cho phép bạn có được địa chỉ IP thông qua DHCP nhưng không phải là máy chủ tên (bạn có thể chỉ định chúng trong các trường bên dưới).
Christian Skjødt

Tôi đặt bộ định tuyến của mình để ánh xạ địa chỉ MAC thành IP tĩnh, vì vậy việc thuê DNS là trong một thời gian dài. Các auditctldòng không làm việc cho tôi, và tôi tin rằng tên dịch vụ cho Network Manager là network-manager(bao gồm các gạch nối). Tôi chưa resolvconfcài đặt gói, nhưng tôi có những thứ bên trong /etc/resolvconf/thư mục và khi tôi so sánh nó với một máy Ubuntu khác, nó không có nó, vì vậy tôi đã cài đặt và gỡ cài đặt gói đó và xóa thư mục đó theo cách thủ công. /etc/resolv.confchỉ cần viết lại một lần nữa, vì vậy tôi nghĩ rằng auditctllàm việc sẽ rất hữu ích.
jontsai

@jontsai Sự hiện diện của /etc/resolvconflà bình thường ngay cả khi bạn không có resolvconfgói, một số gói thả móc ở đó và những móc này chỉ được sử dụng nếu resolvconfđược cài đặt. Tôi đã sửa auditctldòng, trong trường hợp vấn đề xuất hiện trở lại.
Gilles 'SO- ngừng trở nên xấu xa'

Tôi thích ý tưởng của người dùng Audd để tìm hiểu những gì đang chỉnh sửa tệp, nhưng có vẻ như nó được bắt đầu sau khi tệp đã được sửa đổi.
Peter Sankauskas

4

Mở một thiết bị đầu cuối và gõ

sudo chattr +i /etc/resolv.conf

+ tôi quan tâm rằng tập tin sẽ không được đặt lại khi khởi động ngay cả bằng root.

Hoàn tác những điều trên

sudo chattr -i /etc/resolv.conf

Để biết thêm

man chattr

điều này đã không làm việc cho tôi. Khởi động lại trình quản lý mạng vẫn ghi đè /etc/resolv.conf bằng máy chủ tên DHCP.
Tommy

đã làm việc với tôi trên máy ảo Debian 9 chạy bên trong GCP. vâng cảm ơn!
the0ther


3

Tôi vô hiệu hóa cập nhật resolv.confbằng cách tạo một tệp có tên disable_make_resolv_conftrong/etc/dhcp3/dhclient-enter-hooks.d

#!/bin/sh
make_resolv_conf(){
}

Nó thay thế chức năng tiêu chuẩn bằng cùng tên chịu trách nhiệm cho việc resolv.conflàm mới.


1

Cuối này nhưng tôi sẽ đăng trường hợp của tôi vì nó khác với tất cả các bên trên.

Trong trường hợp của tôi, /etc/resolv.conflà một liên kết tượng trưng đến /var/run/NetworkManager/resolv.confvà vì một số lý docat /etc/resolv.conf tôi không có tệp hoặc thư mục như vậy (có thể vì nó trống?)

Nếu tôi mở nó bằng vi và thêm nameserver x.x.x.xnó hoạt động, nhưng bị xóa khi khởi động lại.

Tôi đã cố gắng chỉnh sửa /etc/network/interfacesvà thêm dns-nameservers x.x.x.x, thay đổi /etc/dhcp/dhclient.confvà loại bỏ dưới request domain-name-servers, cũng chỉnh sửa prepend domain-name-servers x.x.x.x.

Nhị phân Resolvconf chưa được cài đặt, NetworkManager.confkhông có gì liên quan. Nhưng mỗi lần tôi khởi động lại máy thì không có máy chủ tên miền.

Tôi không chắc lý do là gì nhưng dường như nó phải làm với thực tế rằng đây là máy VBox, được khởi động bởi GNS3 và vì trong cài đặt VBox, tôi phải để nó không có giao diện được tạo. Rõ ràng GNS3 tạo ra một "giao diện UDP" một cách nhanh chóng khi tôi khởi động máy, với điều kiện tôi khởi động nó từ GNS3.

Vì vậy, để cứu tôi khỏi việc tìm kiếm vô tận, tôi chỉ cần thêm echo nameserver x.x.x.x> /etc/resolv.confvào /etc/profile, vấn đề đã được giải quyết (không giải quyết được, nhưng đã giải quyết xung quanh hehe). Nhưng thật thú vị khi biết điều gì xảy ra với kịch bản đó nếu có ai gặp phải nó.


1

Nếu bạn có tập tin /etc/NetworkManager/NetworkManager.conf

cat /etc/NetworkManager/NetworkManager.conf

bạn có thể định cấu hình Trình quản lý mạng để dừng đặt lại độ phân giải.

sudo sh -c 'echo "
[main]
dns=none
" >> /etc/NetworkManager/NetworkManager.conf'
cat /etc/NetworkManager/NetworkManager.conf

Bây giờ hãy tự thay đổi /etc/resolv.confvà kiểm tra tính lâu dài của nó với

sudo systemctl restart NetworkManager
# sudo service network-manager restart
cat /etc/resolv.conf

Nguồn: https://askubfox.com/a/623956/452398


Cảm ơn bạn, thêm dns = không sửa chữa vấn đề theo cách thích hợp.
Lốp

0

Chỉ cần tạo các mục trong tệp ifcfg-ethX của bạn như vậy

DNS1 = 192.168.XX

DNS2 = 192.168.XX

DOMAIN = yourdomain.com

sau đó, người quản lý mạng sẽ gửi Pend các bản ghi đó vào tệp giải quyếtvv sau khi bạn khởi động lại dịch vụ hoặc khởi động lại hộp của mình.


0

Chỉ trong trường hợp ai đó rơi vào trường hợp tương tự:

Tôi Quên tôi đặt dhcp trên một giao diện bên trong tệp /etc/network/interfaces

Networkmanager sẽ sửa đổi /etc/resolv.conftừ câu trả lời dhcp anh ta nhận được.

thứ


0

Khi có # Generated by NetworkManagertrong/etc/resolv.conf

Chỉnh sửa cấu hình Trình quản lý mạng:

sudo vim /etc/NetworkManager/NetworkManager.conf

trong [main]phần thêm rc-manager=unmanaged:

[main]                                                                                                                                   
rc-manager=unmanaged

Tại sao?

rc-manager- Đặt chế độ quản lý độ phân giải. Giá trị mặc định phụ thuộc vào các tùy chọn xây dựng NetworkManager và phiên bản NetworkManager này được xây dựng với mặc định là "symlink".

(...)

unmanaged: đừng chạm vào /etc/resolv.conf.

Cấu hình tham chiếu để biết thêm thông tin: https://developer.gnome.org/NetworkManager/ sóng / NetworkManager.conf.html

Sau đó chỉnh sửa /etc/resolv.confvà khởi động lại Trình quản lý mạng để xem, nếu /etc/resolv.confkhông bị ảnh hưởng:

sudo systemctl restart NetworkManager

hoặc là

sudo service network-manager restart

hơn:

cat /etc/resolv.conf

Nếu thủ tục không thành công và /etc/resolv.confbị ghi đè trong quá trình khởi động lại Trình quản lý mạng, hãy thử thêm dns=nonevào [main]phần trong cấu hình như https://askubfox.com/a/1150326/364772 cho biết

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.