Hầu hết các hệ thống GNU/Linux đều
được tích hợp và sử dụng DHCP Client. DHCP Client cung cấp phương thức
cho việc cấu hình một hay nhiều card mạng sử dụng địa chỉ động (DHCP).
Tuy nhiên nó lại làm thay đổi tệp tin /etc/resolv.conf
mỗi khi khởi động DHCP Client hay kết nối vào một mạng khác. Trong một
số trường hợp như DNS server cục bộ trong mạng LAN của bạn không thể
phân giải một địa chỉ trên Internet, bạn cần nhờ một nameserver khác
phân giải địa chỉ này (chẳng hạn một public DNS server). Do vậy bạn cần
giữ cho tệp tin /etc/resolv.conf không thay đổi mỗi khi
kết nối mạng. Trong bài viết này Wikilinux xin giới thiệu một số cách
để giúp việc giữ cố định nội dung tệp tin /etc/resolv.conf theo ý của bạn.
Giả sử bạn có tập tin /etc/resolv.conf với nội dung:
nameserver 8.8.8.8 nameserver 8.8.4.4và mục đích là bạn muốn giữ cố định nội dung này.
Cách 1: Gán thuộc tính Read-Only cho /etc/resolv.conf
Ngoài các quyền đọc, ghi, thực thi bình thường; hệ thống Linux còn cung cấp một số thuộc tính đặc biệt cho các tệp tin như read-only… Như vậy khi gán thuộc tính read-only cho tệp tin thì tệp tin đó sẽ không bị thay đổi bởi các chương trình khác nếu chưa xóa bỏ thuộc tính này đi. Để gán thuộc tính read-only ta làm như sau:
sudo chattr +i /etc/resolv.confLưu ý: Đối với Ubuntu tệp tin /etc/resolv.conf là liên kết mềm tới /run/resolvconf/resolv.conf, vì vậy trước khi thực hiện lệnh trên thì bạn cần bỏ liên kết mềm và tạo lại file /etc/resolv.conf trước:
sudo cp /run/resolvconf/resolv.conf /etc/resolv.conf.orig sudo unlink /etc/resolv.conf sudo cp /etc/resolv.conf.orig /etc/resolv.conf sudo chattr +i /etc/resolv.confKết quả: Sau khi gán thuộc tính này, chúng ta yên tâm là nội dung của file /etc/resolv.conf sẽ không bao giờ thay đổi.
Cách 2: Sử dụng đoạn mã bẫy sự kiện trong DHCP.
DHCP không cung cấp cách thức để chỉnh sửa các cấu hình ban đầu, tuy nhiên nếu việc sửa đổi là bắt buộc cần thiết thì chúng ta có thể sử dụng các bẫy sự kiện để ghi đè lên các cấu hình ban đầu. Ban đầu dhcpclient sẽ sử dụng hàm make_resolv_conf() để tạo tệp /etc/resolv.conf mặc định. Nếu muốn thay đổi chúng ta có thể định nghĩa lại hàm này như sau:
# vim /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate
Rồi thêm vào nội dung sau:#!/bin/sh make_resolv_conf(){ echo "nameserver 8.8.8.8" > /etc/resolv.conf echo "nameserver 8.8.4.4" >> /etc/resolv.conf }Sau đó cấp quyền thực thi cho đoạn mã đó.
# chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdateCách 3. Sử dụng tệp tin cấu hình dhclient.conf
Tệp tin /etc/dhclient.conf hoặc /etc/dhcp/dhclient.conf chứa các thông tin cấu hình cho client. Bạn có thể bật tắt các thay đổi DNS và các lựa chọn khác cho một card mạng hoặc tất cả các card mạng thông qua tệp tin này.
Để thêm lựa chọn bạn có thể add nội dung như sau:
option domain-name-servers 8.8.8.8, 8.8.4.4Các chọn lựa khác bạn có thể xem trong man của DHCLIENT.CONF
Cách 4. Cấu hình trong /etc/network/interfaces
Bạn có thể cấu hình DNS namerserver cho một card mạng cố định thông qua việc chỉnh sửa trong /etc/network/interfaces bằng cách thêm trường DNS như sau (trên Debian/Ubuntu):
auto eth0 iface eth0 inet static address 192.168.1.10 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.254 dns-nameservers 8.8.8.8 8.8.4.4Hi vọng bạn có thể sử dụng bài viết này để áp dụng được vào trường hợp cụ thể của mình.
Chúc các bạn thành công.
Wikilinux.vn