Mục tiêu:
Cài đặt và cấu hình BIND trên AlmaLinux.
Tạo một zone cho
homelab.local
để phân giải các host trong mạng nội bộ của bạn.Cấu hình DNS server để lắng nghe trên địa chỉ IP của nó.
Cấu hình firewall để cho phép truy cập DNS.
Bước 1: Cài đặt BIND
Trước tiên, hãy cập nhật hệ thống và cài đặt gói bind
và bind-utils
.
sudo dnf update -y
sudo dnf install bind bind-utils -y
Bước 2: Cấu hình BIND
File cấu hình chính của BIND là /etc/named.conf
. Chúng ta sẽ chỉnh sửa file này và tạo các file zone.
Chỉnh sửa /etc/named.conf
Mở file cấu hình chính:
sudo nano /etc/named.conf
Bạn cần tìm và thay đổi một số dòng sau:
listen-on port 53
: Thay đổi127.0.0.1
thành địa chỉ IP của máy chủ DNS của bạn hoặcany
để nó lắng nghe trên tất cả các interface. Ví dụ, nếu IP của bạn là192.168.1.100
:listen-on port 53 { 127.0.0.1; 192.168.1.100; };
Hoặc nếu bạn muốn nó lắng nghe trên tất cả các IP:
listen-on port 53 { any; };
allow-query
: Cho phép các client trong mạng của bạn gửi truy vấn. Thay đổilocalhost
thành dải mạng của bạn. Ví dụ:allow-query { localhost; 192.168.1.0/24; };
Thêm zone cho
homelab.local
: Thêm một blockzone
vào cuối file để định nghĩa zone mới của chúng ta.zone "homelab.local" IN { type master; file "homelab.local.zone"; allow-update { none; }; };
Thêm zone cho phân giải ngược (Reverse Zone): Để các client có thể phân giải IP thành tên miền, bạn cần tạo một zone phân giải ngược. Giả sử dải mạng của bạn là
192.168.1.0/24
, bạn sẽ định nghĩa zone như sau:zone "1.168.192.in-addr.arpa" IN { type master; file "homelab.local.rev"; allow-update { none; }; };
Lưu ý: Tên zone phải là dải mạng của bạn viết ngược lại, cộng thêm
.in-addr.arpa
.
Sau khi chỉnh sửa xong, file /etc/named.conf
của bạn có thể trông giống như thế này (đã rút gọn):
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { none; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
...
};
logging { ... };
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
zone "homelab.local" IN {
type master;
file "homelab.local.zone";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "homelab.local.rev";
allow-update { none; };
};
Tạo file zone forward /var/named/homelab.local.zone
File này sẽ chứa các bản ghi phân giải tên miền thành địa chỉ IP.
sudo nano /var/named/homelab.local.zone
Nội dung file:
$TTL 86400
@ IN SOA ns1.homelab.local. admin.homelab.local. (
2023080601 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
IN NS ns1.homelab.local.
ns1 IN A 192.168.1.100 ; IP của DNS Server
router IN A 192.168.1.1 ; IP của router
web IN A 192.168.1.101 ; Một máy chủ web
Giải thích:
$TTL
: Thời gian tồn tại mặc định của bản ghi.@ IN SOA
: Bản ghi "Start of Authority" (SOA), định nghĩa máy chủ DNS chính cho zone này.ns1.homelab.local.
: Tên máy chủ DNS của bạn.admin.homelab.local.
: Email của quản trị viên (dấu@
được thay bằng dấu chấm).Serial
: Số phiên bản của file cấu hình. Mỗi khi bạn thay đổi file, hãy tăng số này lên.@ IN NS
: Bản ghi Name Server, chỉ định máy chủ DNS cho zone này.ns1 IN A 192.168.1.100
: Bản ghi "A" (Address) phân giải tênns1
thành địa chỉ IP192.168.1.100
.
Tạo file zone reverse /var/named/homelab.local.rev
File này sẽ chứa các bản ghi phân giải IP thành tên miền.
sudo nano /var/named/homelab.local.rev
Nội dung file:
$TTL 86400
@ IN SOA ns1.homelab.local. admin.homelab.local. (
2023080601 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
IN NS ns1.homelab.local.
100 IN PTR ns1.homelab.local.
1 IN PTR router.homelab.local.
101 IN PTR web.homelab.local.
Giải thích:
100 IN PTR ns1.homelab.local.
: Bản ghi "PTR" (Pointer) phân giải IP192.168.1.100
(chỉ viết phần cuối của IP) thành tên miềnns1.homelab.local.
.
Đặt quyền sở hữu cho các file zone
Sau khi tạo, bạn cần đảm bảo BIND có thể đọc được các file này.
sudo chown named:named /var/named/homelab.local.zone
sudo chown named:named /var/named/homelab.local.rev
Bước 3: Kiểm tra cấu hình và khởi động BIND
Kiểm tra cú pháp cấu hình
Sử dụng lệnh named-checkconf
và named-checkzone
để kiểm tra các file cấu hình.
sudo named-checkconf
sudo named-checkzone homelab.local /var/named/homelab.local.zone
sudo named-checkzone 1.168.192.in-addr.arpa /var/named/homelab.local.rev
Nếu không có lỗi, các lệnh này sẽ không trả về gì hoặc hiển thị thông báo OK
.
Khởi động và kích hoạt dịch vụ BIND
sudo systemctl start named
sudo systemctl enable named
sudo systemctl status named
sudo systemctl reload named
Đảm bảo dịch vụ đang chạy (trạng thái active (running)
).
Bước 4: Cấu hình Firewall
Mở cổng 53 (cổng mặc định của DNS) trên firewall để cho phép các client truy cập.
sudo firewall-cmd --permanent --add-service=dns
sudo firewall-cmd --reload
Bước 5: Kiểm tra hoạt động của DNS server
Bạn có thể kiểm tra trực tiếp trên máy chủ DNS bằng cách thay đổi file /etc/resolv.conf
hoặc sử dụng các công cụ như dig
.
# Sử dụng dig để kiểm tra
dig @127.0.0.1 ns1.homelab.local
dig @127.0.0.1 web.homelab.local
dig @127.0.0.1 -x 192.168.1.101
Nếu bạn thấy các bản ghi ANSWER SECTION
trả về đúng, DNS server của bạn đã hoạt động.
Bước 6: Cấu hình Client để sử dụng DNS server
Trên các máy client trong mạng của bạn, hãy cấu hình DNS server thành địa chỉ IP của máy chủ DNS bạn vừa dựng (192.168.1.100
).
Trên Linux: Chỉnh sửa file
/etc/resolv.conf
hoặc cấu hình trong NetworkManager.sudo nano /etc/resolv.conf
Thêm dòng sau:
nameserver 192.168.1.100
Trên Windows/macOS: Vào cài đặt mạng và thay đổi DNS server.
Sau khi cấu hình, bạn có thể kiểm tra từ máy client:
ping web.homelab.local
Lệnh này sẽ ping đến 192.168.1.101
nếu cấu hình DNS của bạn chính xác.
No comments:
Post a Comment