Giữ cho file resolv.conf không bị ghi đè

Trong một network cấu hình điạ chỉ động (DHCP), việc bạn muốn thay đổi file /etc/resolv.conf để sử dụng DNS server khác hay thông tin truy vấn domain name khác với mặc định sẽ gặp khó khăn. Khó khăn ở chỗ file resolve.conf của bạn đã chỉnh sửa sẽ bị ghi đè khi chương trình dhclient trên máy bạn chạy để cập nhật địa chỉ IP theo chu kỳ. Để ngăn chặn việc này xảy ra, ta có thể dùng một trong các cách sau đây:

Chặn quyền ghi lên file /etc/resolve.conf

Dùng lệnh chattr để bảo vệ file khỏi bị ghi đè:

# chattr +i /etc/resolv.conf

Hook dhcp-client script

Tạo một hook script để ngăn chặn việc cập nhật file resolv.conf theo đường dẫn sau (Debian/Ubuntu)

# vi /etc/dhcp3/dhclient-enter-hooks.d/nodnsupdate

Thêm nội dung sau vào:

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

Lưu và đóng file lại sau đó cho file được quyền execute

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

Script này sẽ thay thế chức năng make_resolv_conf() bằng một hàm do ta định nghĩa lại, nhưng hàm này không làm gì cả (:) nên resolv.conf sẽ không bị update.

Lưu ý với Red Hat và CentOS: đặt script vào thư mục :/etc/dhclient-enter-hooks

Tham khảo:

About dongthao

"Man does not simply exist but always decides what his existence will be, what he will become the next moment"
This entry was posted in Linux Tutorial and tagged , , . Bookmark the permalink.

4 Responses to Giữ cho file resolv.conf không bị ghi đè

  1. nano says:

    cp resolv.conf resolv.conf.bk coi bộ gọn hơn không bác? dùng hook vậy mỗi khi hệ thống nâng cấp lại chỉnh sửa lại à

  2. dongthao says:

    Mỗi lần hệ thống nâng cấp thì chỉnh sửa với năm phút chỉnh một lần bạn chọn cái nào :). BTW, dùng script hook vào dhcp-client là một cơ chế khá hay mà ta có thể dùng với nhiều mục đích khác nữa.

  3. htr3n says:

    Mình chợt nghĩ là nếu dhcpclient thực thi việc ghi đè resolv.conf thì ắt hẳn có option để tắt/mở. Không biết option trong dhcpclient.conf là

    no-client-updates [ flag ] ;

    có thực hiện được như trên không nhỉ?

  4. nhanth87 says:

    trên trang chủ của opendns có hướng dẫn:

    To avoid having your settings get revoked after reboots, or after periods of inactivity you may need to make the following changes via the command line:

    $ sudo cp /etc/resolv.conf /etc/resolv.conf.auto
    $ gksudo gedit /etc/dhcp3/dhclient.conf
    # append the following line to the document
    prepend domain-name-servers 208.67.222.222,208.67.220.220;
    # save and exit
    $ sudo ifdown eth0 && sudo ifup eth0

    You may be required to change eth0 to your own network device’s name if it uses a non-standard name.

Leave a comment