Hướng dẫn cấu hình dns server linux
Domain Name System Server được viết tắt là DNS Server, DNS Server được sử dụng để phân giải tên miền sang địa chỉ IP và ngược lại. Berkeley Internet Name Domain (BIND) là máy chủ DNS được sử dụng phổ biến trên internet, đặc biệt trên các hệ thống dựa trên nền Unix/Linux. Hệ thống tên DNS là một hệ thống phân cấp và cấu trúc logic hình cây được gọi là không gian tên DNS. Quy tắc đặt tên của hệ thống DNS theo cấu trúc phân cấp từ phải qua trái. Đứng đầu là cấp độ cao nhất (root) đại diện bằng dấu ".", tiếp theo là cấp 1 (level 1) được đặt tên phân chia theo quy tắc địa lý (như tên miền Việt Nam là .vn, tên miền Mỹ là .us) hoặc phân chia theo hình thức tổ chức doanh nghiệp (như .com là công ty, .gov chính phủ, .edu giáo dục, ...), tiếp theo là cấp 2, cấp 3, ... Chức năng của DNS DNS cung cấp dịch vụ phân giải tên cho những máy tính client DNS cung cấp phân giải địa chỉ IP cho hostname Linux DNS Server có thể hoạt động trong 3 kiểu and có những kiển hoạt động là Caching Only DNS Server, Primary DNS Server and Slave DNS Server Sao lưu lại dư liệu của DNS giữa các Server Mục tiêu chủ đề DNS Server Mục tiêu của chủ đề này là giúp các bạn hiểu được cách tổ chức tên trong DNS, chức năng, hoạt động, cài đặt, cấu hình dịch vụ DNS trên CentOS 7. Bây giờ chúng ta đi vào chi tiết cài đặt và cấu hình dịch vụ DNS on CentOS. Cài đặt Bind Chroot Để cài đặt BIND chạy trong môi trường chroot bạn phải cài đặt gói bind-chroot. [root@master ~]# yum install -y bind-chroot Kiểm tra lại gói cài bind chroot đã cài đặt thành công hay chưa thông qua yum: [root@master ~]# rpm -qa| grep bind bind-license-9.9.4-74.el7_6.1.noarch bind-chroot-9.9.4-74.el7_6.1.x86_64 keybinder3-0.3.0-1.el7.x86_64 bind-libs-9.9.4-74.el7_6.1.x86_64 bind-utils-9.9.4-74.el7_6.1.x86_64 bind-libs-lite-9.9.4-74.el7_6.1.x86_64 bind-9.9.4-74.el7_6.1.x86_64 rpcbind-0.2.0-47.el7.x86_64 Toàn bộ thư mục và file bên dưới sẽ được tạo bởi gói cài Bind chroot trên CentOS host của bạn. [root@master ~]# ls -l /var/named/chroot/ total 20 drwxr-x---. 2 root named 4096 Jun 21 16:11 dev drwxr-x---. 4 root named 4096 Jun 21 16:11 etc drwxr-x---. 3 root named 4096 Jun 21 16:11 run drwxr-xr-x. 3 root root 4096 Jun 21 16:11 usr drwxr-x---. 5 root named 4096 Jun 21 16:11 var Chúng ta khởi động môi trường bind chroot, tất cả các thư mục và file liên quan tới Bind DNS Server sẽ được nằm trong thư mục /var/named/chroot [root@master ~]# /usr/libexec/setup-named-chroot.sh /var/named/chroot on Tiếp theo ta kiểm tra lại danh sách toàn bộ đường dẫn trên /var/named/chroot [root@master ~]# mount | grep chroot /dev/mapper/centos-root on /var/named/chroot/etc/named type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/usr/lib64/bind type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/localtime type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/named type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/named.root.key type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/named.conf type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/named.rfc1912.zones type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/rndc.key type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/named.iscdlv.key type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/protocols type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/etc/services type ext4 (rw,relatime,data=ordered) /dev/mapper/centos-root on /var/named/chroot/usr/lib64/bind type ext4 (rw,relatime,data=ordered) tmpfs on /var/named/chroot/run/named type tmpfs (rw,nosuid,nodev,mode=755) /dev/mapper/centos-root on /var/named/chroot/var/named type ext4 (rw,relatime,data=ordered) Chúng ta sẽ ghi lại địa chỉ ip, địa chỉ mà chúng ta sẽ sử dụng cấu hình BIND DNS của chúng ta trong môi trường chroot. [root@master ~]# ip a 1: lo: link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: link/ether 08:00:27:df:87:41 brd ff:ff:ff:ff:ff:ff inet 192.168.100.254/24 brd 10.255.255.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fedf:8741/64 scope link valid_lft forever preferred_lft forever 3: eth1: link/ether 08:00:27:95:c3:cd brd ff:ff:ff:ff:ff:ff 4: virbr0: link/ether 52:54:00:b0:af:fb brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever 5: virbr0-nic: link/ether 52:54:00:b0:af:fb brd ff:ff:ff:ff:ff:ff Cấu hình dịch vụ DNS Server Cấu hình dịch vụ DNS Server đầu tiên chúng ta update file /etc/named.conf Chúng ta sẽ chỉnh sửa những chỗ tô màu trong file named.conf. [root@master ~]# cat /etc/named.conf // // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for unixlinuxvn named configuration files. // // See the BIND Administrator's Reference Manual (ARM) for details about the // configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html options { listen-on port 53 { 127.0.0.1; any; }; listen-on-v6 port 53 { ::1; }; 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 { localhost; any; }; allow-query-cache { localhost; any; }; /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; dnssec-enable yes; dnssec-validation yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; Thêm bản Zone records Tiếp đến chúng ta cần thêm bản zone record cho file forward zone và file reverve zone. Ở đây tên miền unixlinuxvn.com trong file forward zone của chúng ta và 100.168.192.in-addr.arpa bao gồm thông tin về file reverve zone. zone "unixlinuvn.com" IN { type master; file "unixlinuxvn.com.zone"; allow-update { none; }; }; zone "100.168.192.in-addr.arpa" IN { type master; file "unixlinuxvn.com.zone"; allow-update { none; }; }; Chúng ta sẽ tao file forward và reverse zone trong những bước tiếp theo. Tạo file forward zone Vào thư mục /var/named nơi mà chúng ta sẽ có một số file mẫu mặc định những file mà chúng ta có thể sử dụng được để cấu hình file forward zone. [root@master ~]# cd /var/named/ Liệt kê nội dung của /var/named [root@master named]# ls -l total 32 drwxr-x---. 2 root named 4096 Jun 21 16:12 chroot drwxrwx---. 2 named named 4096 Jun 5 00:56 data drwxrwx---. 2 named named 4096 Jun 5 00:56 dynamic -rw-r-. 1 root named 2281 May 22 2017 named.ca -rw-r-. 1 root named 152 Dec 15 2009 named.empty -rw-r-. 1 root named 152 Jun 21 2007 named.localhost -rw-r-. 1 root named 168 Dec 15 2009 named.loopback drwxrwx---. 2 named named 4096 Jun 5 00:56 slaves Tạo file forward zone bằng cách copy nội dung trong file named.localhost [root@master named]# cat named.loopback > unixlinuxvn.com.zone Thay đổi quyền của file forward zone (unixlinuxvn.com.zone) như bên dưới: [root@master named]# chmod 644 unixlinuxvn.com.zone [root@master named]# chown root:named unixlinuxvn.com.zone [root@master named]# ls -l unixlinuxvn.com.zone -rw-r--r--. 1 root named 260 Jun 21 16:28 unixlinuxvn.com.zone Cập nhập lại file forward zone theo môi trường hệ thống mạng của bản. Bên dưới là file forward zone mẫu của tôi: [root@master named]# cat unixlinuxvn.com.zone $TTL 1D @ IN SOA unixlinuxvn.com. root. unixlinuxvn.com. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS localhost. IN NS unixlinuxvn.com. IN NS master.unixlinuxvn.com. localhost IN A 127.0.0.1 master IN A 192.168.100.254 Tạo file Reverse Zone Giống như tạo forward zone để tạo một file reverse zone chúng ta sử dụng named.localhost bằng cách copy nó. [root@master named]# cat named.localhost > unixlinuxvn.com.zone Thay đổi quyền truy cập file và quyền chỉnh sửa file reverse zone (unixlinuxvn.com.zone) như bên dưới: [root@master named]# chmod 644 unixlinuxvn.com.rzone [root@master named]# chown root:named unixlinuxvn.com.zone [root@master named]# ls -l unixlinuxvn.com.zone -rw-r--r--. 1 root named 260 Jun 21 16:28 unixlinuxvn.com.zone Tiếp đến ta thêm thông tin cho file reverse zone. Bên dưới là file reverse zone cấu hình hệ thống của tôi: [root@master named]# cat unixlinuxvn.com.zone $TTL 1D @ IN SOA unixlinuxvn.com. root.unixlinuxvn.com. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS localhost. IN NS unixlinuxvn.com. IN NS master.unixlinuxvn.com. 254 IN PTR master.unixlinuxvn.com. Kiểm tra lại cấu hình Bind chroot Trước khi bạn khởi động dịch vụ named-chroot lên, Cái quan trọng là bạn phải kiểm tra lại cấu hình của bind chroot của bạn bằng cầu lệnh: [root@master named]# named-checkconf -t /var/named/ /etc/named.conf Ở đây nghĩa là chroot liệt kê bao gồm những thư mục trong file cấu hình được sử lý nếu chạy giống như chrooted named. Khởi động dịch vụ named-chroot Để cấu hình DNS Server trên CentOS 7 cài đặt trong bind-chroot không thay đổi dịch vụ named chạy. Trái ngược lại với nó là dịch vụ named-chroot cần được bật lên bằng cách sử dụng cấu lệnh systemctl , Nếu bạn muốn chạy dịch vụ named trong môi trường chroot. Nhưng trước hết, Phải chắc chắn stop and disable bất cứ dịch vụ named cái nào sẵn sàng và chạy trên CentOS 7 host: [root@master named]# systemctl stop named [root@master named]# systemctl disable named Tiếp đến chúng ta start named-chroot service bằng cách sử dụng câu lệnh systemctl: [root@master named]# systemctl start named-chroot [root@master ~]# systemctl status named-chroot ● named-chroot.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2019-06-21 17:00:25 IST; 1min 1s ago Process: 5321 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} -t /var/named/chroot $OPTIONS (code=exited, status=0/SUCCESS) Process: 5319 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -t /var/named/chroot -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS) Main PID: 5323 (named) Tasks: 4 CGroup: /system.slice/named-chroot.service └─5323 /usr/sbin/named -u named -c /etc/named.conf -t /var/named/chroot Jun 21 17:00:25 master.unixlinuxvn.com named[5323]: zone 100.168.192.in-addr.arpa/IN: loaded serial 1 Jun 21 17:00:25 master.unixlinuxvn.com named[5323]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0 Jun 21 17:00:25 master.unixlinuxvn.com named[5323]: zone localhost.localdomain/IN: loaded serial 0 Jun 21 17:00:25 master.unixlinuxvn.com named[5323]: zone unixlinuxvn.com/IN: loaded serial 1 Jun 21 17:00:25 master.unixlinuxvn.com named[5323]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0....ial 0 Jun 21 17:00:25 master.unixlinuxvn.com named[5323]: zone localhost/IN: loaded serial 0 Jun 21 17:00:25 master.unixlinuxvn.com named[5323]: all zones loaded Jun 21 17:00:25 master.unixlinuxvn.com named[5323]: running Jun 21 17:00:25 master.unixlinuxvn.com named[5323]: zone unixlinuxvn.com/IN: sending notifies (serial 1) Jun 21 17:00:25 master.unixlinuxvn.com named[5323]: zone 100.168.192.in-addr.arpa/IN: sending notifies (serial 1) Hint: Some lines were ellipsized, use -l to show in full. Bây giờ những bước cấu hình dịch vụ DNS của chúng ta hầu như đã xong, enable dịch vụ named-chroot để khi chúng ta khởi động lại Server dịch vụ tự động khởi động lên: [root@master ~]# systemctl enable named-chroot Created symlink from /etc/systemd/system/multi-user.target.wants/named-chroot.service to /usr/lib/systemd/system/named-chroot.service. Cấu hình DNS server sử dụng resolv.conf Bây giờ là bước cấu hình DNS Server cuối cùng để cập nhập /etc/resolv.conf chúng ta với DNS server IP của chúng ta i.e. 192.168.100.254. [root@master ~]# cat /etc/resolv.conf # Generated by NetworkManager search unixlinuxvn.com nameserver 192.168.100.254 nameserver 8.8.8.8 Kiểm tra lại Bind Chroot DNS Server Bây giờ chúng ta có thể dùng công cụ khác để kiểm tra lại cấu hình bind chroot DNS server của chúng ta. Trong ví dụ này tôi đang sử dụng nslookup và dig để kiểm tra lại cấu hình file forward and reverse zone của tôi. [root@master ~]# nslookup client.unixlinuxvn.com Server: 192.168.100.253 Address: 192.168.100.253 53Name: client.unixlinuxvn.com Address: 192.168.100.254 Vì nslookup có khả năng trả lời cho client.unixlinuxvn.com sử dụng bind chroot DNS server 192.168.100.254. Giống như ANSWER SECTION sử dụng câu lệnh dig cho nội dung file reverse zone. [root@master ~]# dig -x 192.168.100.254 ; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.1 <<>> -x ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55495 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;30.100.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 254.100.168.192.in-addr.arpa. 86400 IN PTR client.unixlinuxvn.com. ;; AUTHORITY SECTION: 100.168.192.in-addr.arpa. 86400 IN NS localhost. ;; ADDITIONAL SECTION: localhost. 86400 IN A 127.0.0.1 localhost. 86400 IN AAAA ::1 ;; Query time: 0 msec ;; SERVER: 192.168.100.253 53(192.168.100.253);; WHEN: Fri Jun 21 17:02:28 IST 2019 ;; MSG SIZE rcvd: 149 Cấu hình DNS Server trên Client Để cấu hình DNS server trên một client bạn không cần cài đạt bất cứ gói bind chroot rpms liên quan nào, bạn chỉ cần cập nhật file /etc/resolv.conf trên tất cả các clients để sử dụng nameserver IP của DNS server. Cho unixlinuxvn trên client của tôi: [root@client ~]# cat /etc/resolv.conf # Generated by NetworkManager search unixlinuxvn.com nameserver 192.168.100.253 Chúng ta đi kiểm tra cấu hình DNS server bằng cách sử dụng nslookup: [root@client ~]# nslookup master.unixlinuxvn.com Server: 192.168.100.253 Address: 192.168.100.253 53Name: master.unixlinuxvn.com Address: 192.168.100.253 Như bạn nhìn thấy client là thật sự có khả năng trả lời từ DNS server đang chạy trên 192.168.100.253 host. |