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

The best things in life, they are free ... (Cry on my shoulder lyric)
This entry was posted in Linux Tutorial and tagged , , . Bookmark the permalink.

Có 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.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s