Kỹ Thuật Máy tính

Nghiên cứu – Phát triển – Rút ngắn khoảng cách

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

Đăng bởi dongthao on Tháng Chín 10, 2008

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:

4 phản hồi tới “Giữ cho file resolv.conf không bị ghi đè”

  1. nano đã nói

    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 đã nói

    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 đã nói

    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 đã nói

    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.

Để lại hồi âm

XHTML: Bạn có thể sử dụng những thẻ sau: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>