Điều gì ghi đè /etc/resolv.conf trên mỗi lần khởi động?


23

Tôi đã nhận được các tập tin cho một mini linux, mà khởi động trực tiếp vào firefox. Nó hoạt động cho tất cả những gì nó nên làm, chỉ là tôi không có kết nối internet.

Chúng tôi có 3 máy chủ DNS trong mạng, tất cả đều hoạt động. Tôi cũng có thể ping chúng. Nhưng khi cố gắng ping google.dehoặc wget google.detôi nhận được một bad addresslỗi.

nslookup google.de hoạt động vì một số lý do.

Tôi đã theo dõi vấn đề của tôi resolv.conftrên hệ thống đã khởi động không có cùng nội dung như resolv.conftôi đã đưa vào .isotệp.

Tôi đã cố gắng hiểu tất cả các yếu tố đi vào việc tạo và sửa đổi resolv.conf. Tôi không chắc là tôi có tất cả, nhưng tôi chắc chắn không tìm thấy giải pháp của mình ở đó.

Vì vậy, như một nỗ lực cuối cùng, tôi đã cố gắng làm cho resolv.conftập tin bất biến bằng cách sử dụng

:~# chattr +i /etc/resolv.conf

Khi xây dựng lại và khởi động lại một lần nữa làm tôi ngạc nhiên, tập tin của tôi đã được đổi tên thành resolv.conf~và ở vị trí của nó là cùng một tập tin tiêu chuẩn đã ám ảnh tôi.

Nội dung tập tin khiến tôi tin rằng nó lấy thông tin từ chính mạng. Khi bắt đầu .isotrong Virtualbox mà không cần truy cập internet, tập tin của tôi đang được giữ nguyên.

Tôi đã cố gắng thay đổi /etc/dhcp/dhclient.confđể không lấy thông tin từ mạng, bằng cách xóa domain-name-serverdomain-name-searchtừ requestmột phần của tập tin.

Thật không may làm việc.

Tôi chưa cài đặt Trình quản lý mạng. Iso dựa trên Ubuntu 14.04.

Có lẽ thiếu thông tin quan trọng. Tôi rất vui khi cung cấp nó.

CẬP NHẬT:

Tôi nghĩ rằng tôi đã tìm thấy các tập tin xóa resolv.conf.

Nó có vẻ là /usr/share/udhcpc/default.script

#!/bin/sh

# udhcpc script edited by Tim Riker <Tim@Rikers.org>

[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1

RESOLV_CONF="/etc/resolv.conf"
[ - n "$broadcast" ] && BROADCAST="broadcast $broadcast"
[ -n "$subnet" ] && NETMASK="netmask $subnet"

case "$1" in
    deconfig)
        /bin/ifconfig $interface 0.0.0.0
        for i in /etc/ipdown.d/*; do
            [ -e $i ] && . $i $interface
        done
        ;;

    renew|bound)
        /bin/ifconfig $interface $ip $BROADCAST $NETMASK

        if [ -n "$router" ] ; then
            echo "deleting routers"
            while route del default gw 0.0.0.0 dev $interface ; do
                :
            done

            metric=0
            for i in $router ; do
                route add default gw $i dev $interface metric $((metric++))
            done
        fi

        echo -n > $RESOLV_CONF # Start ----------------  
        [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
        for i in $dns ; do
            echo adding dns $i
            echo nameserver $i >> $RESOLV_CONF
        done
        for i in /etc/ipup.d/*; do
            [ -e $i ] && . $i $interface $ip $dns 
        done # End ------------------
        ;;
esac

exit 0

Đó là một phần của udhcpcchương trình. Một khách hàng dhcp nhỏ, đó là một phần củabusybox

Sẽ điều tra thêm.


CẬP NHẬT2 VÀ GIẢI PHÁP:

Tôi đã nhận xét phần này (#Start to #End), dường như ghi đè lên /etc/resolv.conftệp và chắc chắn là đủ. Đó là thủ phạm. Vì vậy, một kịch bản tối nghĩa gây ra tất cả những rắc rối này.

Tôi đã thay đổi câu hỏi để phản ánh, những gì thực sự cần phải biết để giải quyết vấn đề của tôi, vì vậy sẽ dễ dàng tìm thấy hơn cho những người có cùng vấn đề và vì vậy tôi có thể chấp nhận câu trả lời.

Cảm ơn sự giúp đỡ ở đây trong việc tìm ra mọi thứ.


1
Đặt cờ không thay đổi trên tệp độ phân giải không hoạt động như bạn mong đợi vì tệp không bị thay đổi. Mục nhập thư mục trong / etc đã được thay đổi khi tập tin được đổi tên. Bạn sẽ phải thiết lập / vv để trở nên bất biến - điều mà bạn thực sự không muốn làm.
doneal24

@ DougO'Neal tôi thấy. Cảm ơn cho những người đứng đầu lên.
Minix

Câu trả lời:


24

1) Bạn không nên cập nhật thủ công độ phân giải của mình, vì tất cả các thay đổi sẽ được ghi đè bằng dữ liệu mà máy chủ DHCP cục bộ của bạn cung cấp. Nếu bạn muốn nó ở trạng thái tĩnh, hãy chạy sudo dpkg-reconfigure resolvconfvà trả lời "không" cho các cập nhật động. Nếu bạn muốn thêm các mục mới ở đó, chỉnh sửa /etc/resolvconf/resolv.conf.d/basevà chạy sudo resolvconf -u, nó sẽ nối các mục của bạn và các mục của máy chủ DHCP.

2) Cố gắng chỉnh sửa / etc / mạng / giao diện của bạn và thêm các mục của bạn ở đó, như

auto eth0 
iface eth0 inet dhcp 
dns-search google.com 
dns-nameservers dnsserverip 

và sau đó khởi động lại /etc/init.d/networking restarthoặc sudo ifdown -asudo ifup -a

3) Hệ thống của bạn sử dụng udhcp , một chương trình máy khách DHCP rất nhỏ. Máy khách udhcp đàm phán hợp đồng thuê với máy chủ DHCP và thông báo cho một tập lệnh khi cho thuê hoặc mất. Bạn có thể đọc về cách sử dụng ở đây hoặc chỉ chỉnh sửa tập lệnh này (như bạn đã làm).


1
Tôi đã thêm các mục vào /etc/resolvconf/resolv.conf.d/basevà chạy resolvconf -u. Thật không may, nó không hoạt động.
Minix

Bạn đã thử chạy sudo dpkg-cấu hình lại độ phân giải chưa? Sau khi chạy độ phân giải -u, các mục nhập của bạn không nằm trong tệp kết quả? Làm thế nào bạn thêm chúng, như "máy chủ tên 127.0.0.1" hoặc "tìm kiếm google.com"?
kirill-a

Tôi đã chạy dpkg-reconfigure resolvconf. Các mục không có trong đó. Và tôi có mục với cả nameserver ipsearch domain.
Minix

Không, chạy dpkg-reconfigure resolvconfsẽ không thêm mục, nhưng bạn có thể tắt cập nhật tự động. Nếu bạn tắt cập nhật, bạn có thể chỉnh sửa độ phân giải bằng tay và không nên ghi đè.
kirill-a

Xấu của tôi vì phrasing nó rất vụng về, tôi đã trả lời câu bình luận của bạn bằng câu. Sau khi chạy resolvconf -ucác mục không được thêm vào.
Minix

4

Tôi cũng chạy vào đây. Nhận xét domain-name-serverđã không sửa nó cho tôi.

Ngoài ra, tôi không sử dụng resolvconf, chỉ đơn giản /etc/resolv.conf.

Tôi đã không thử sử dụng chattr +iđể khóa resolv.confvì nó có vẻ quá hack. Ngoài ra, tôi muốn Puppet có thể sửa đổi resolv.confkhi cần thiết.

Các giải pháp tốt nhất tôi thấy ghi đè hành vi mặc định dhclientsử dụng móc tài liệu của nó.

Tạo một tệp mới /etc/dhcp/dhclient-enter-hooks.d/nodnsupdatevới các nội dung sau:

#!/bin/sh
make_resolv_conf() {
    :
}

Sau đó làm cho tập tin thực thi:

chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

Bây giờ khi dhclient chạy - khi khởi động lại hoặc khi bạn chạy thủ công sudo ifdown -a ; sudo ifup -a- nó sẽ tải tập lệnh này nodnsupdate. Kịch bản lệnh này ghi đè một chức năng nội bộ được gọi là make_resolv_conf()thông thường sẽ ghi đè resolv.confvà thay vào đó không làm gì cả.

Điều này làm việc cho tôi trên Ubuntu 12.04.


Không hoạt động trên Ubuntu 18.04 :( /etc/resolv.confđã bị ghi đè sau khi khởi động lại.
Dan Dascalescu

3

Ubuntu 16.04 Nếu giao diện mạng cho phiên bản máy chủ của bạn được điều khiển bởi DHCP, chương trình dhclient sẽ ghi đè lên /etc/resolv.conftệp của bạn bất cứ khi nào dịch vụ mạng được khởi động lại.

Bạn có thể khắc phục vấn đề bằng cách chỉnh sửa các /etc/dhcp/dhclient.conftập tin và thêm “thay thế” báo cáo cho miền tên , miền tìm kiếmdomain-name-server như sau:

supersede domain-name "local.com";
supersede domain-search "local.com";
supersede domain-name-servers 192.168.56.103;

Trong trường hợp cụ thể này, máy chủ tên được đặt tại "192.168.56.103" và tên miền là "local.com"

Lưu ý rằng mỗi dòng được chấm dứt bởi dấu chấm phẩy và tên miền được đặt trong dấu ngoặc kép.


Thật không may, điều này không hoạt động trên Ubuntu 18.04. Sau khi khởi động lại, /etc/resolv.confđã được ghi đè bằng 127.0.0.53.
Dan Dascalescu

Có thể bạn có thể thử này askubuntu.com/questions/1031279/...
Sand1512

Đồng thời kiểm tra xem bạn có đang chạy khôngdnsmasq
Sand1512

0

vào thư mục này:

  cd /etc/resolvconf/resolv.conf.d

Mở tệp có tên head và đặt IP DNS hoặc tên trong đó. Mở tệp có tên đuôi và đặt tên miền vào đó. Khởi động lại.


Thư mục đó không tồn tại theo mặc định trên Ubuntu 18.04. Bạn có cần phải cài đặt một dịch vụ tạo ra nó?
Dan Dascalescu

0

Trong máy ảo Azure /etc/resolv.conf không thể chỉnh sửa trực tiếp.

Hãy thử thêm toàn bộ DNS trong tệp cấu hình mạng của bạn / etc / sysconfig / network-scripts / ifcfg-eth0, v.v. như dưới đây:

DOMAIN = example.com

DNS1 = 10. . . *
DNS2 = 10. . . *
DNS3 = 10. . . *

và khởi động lại dịch vụ mạng sau khi lưu tệp. bạn sẽ thấy cấu hình sau đó cũng sẽ được thêm vào giải quyết.


0

Để thực hiện các thay đổi liên quan đến DNS resolv.confvĩnh viễn, bạn cần thay đổi tệp cấu hình DHCP có tên dhclient.conf. Bạn có thể tìm thấy các tập tin trong /etc/dhcp/dhclient.conf.

Mở tệp để chỉnh sửa (đừng quên sử dụng sudo). Bạn sẽ thấy những dòng như thế này:

#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;

Xóa các # # trước đó và sử dụng tên miền và / hoặc tên miền máy chủ mà bạn muốn. Lưu nó Bây giờ các thay đổi liên quan đến DNS sẽ là vĩnh viễn.

Tín dụng truy cập vào: https://itsfoss.com/resolvconf-permanent-ubfox/


Câu trả lời này đã được đưa ra 2 năm trước .
Dan Dascalescu

0

Sử dụng lệnh dưới đây để ngăn độ phân giải hoặc bất kỳ tệp nào ghi đè sau khi khởi động lại

tên tệp chattr -V + i, ví dụ: chattr -V + i /etc/resolv.conf

Để hoàn nguyên thay đổi Sử dụng lệnh bên dưới:

tên tệp chattr -i - để kích hoạt lại chèn vào tệp

chattr (Change Attribution) là một tiện ích Linux dòng lệnh được sử dụng để đặt / hủy đặt các thuộc tính nhất định cho một tệp trong hệ thống Linux để bảo đảm xóa hoặc sửa đổi các tệp và thư mục quan trọng, mặc dù bạn đã đăng nhập với tư cách là người dùng root.


Tôi tin rằng người dùng trong câu hỏi thực sự đã cố gắng chattr, nhưng chấp nhận rằng điều này không có hiệu lực.
Kusalananda

Điều này sẽ hoạt động chắc chắn, Người dùng tùy chọn đã thử là để chỉnh sửa tệp không phải để biến nó thành bất biến
Ashish Jain

Vui lòng chạy lệnh với sudo chattr -V + i tên tệp, vd: sudo chattr -V + i /etc/resolv.conf
Ashish Jain

-1

Trên Ubuntu 18.04 sử dụng NetworkManager. Bạn cần xóa tệp 'decv.conf' và để NetworkManager tạo một tệp cho bạn.

Để loại bỏ các tập tin trong loại thiết bị đầu cuối sudo rm -f /etc/resolv.conf; Điều này sẽ xóa các tập tin cho bạn.

Khởi động lại hệ thống và NetworkManager sẽ tạo tệp độ phân giải cho bạ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.