s23.实战案例:实现Internet 的DNS 服务架构

289 阅读3分钟

本文已参与「新人创作礼」活动, 一起开启掘金创作之路。

1.实战案例:实现Internet 的DNS 服务架构

1.1 实验目的

010.jpg

搭建DNS实现internet dns架构

1.2 环境要求

需要8台主机
DNS客户端:172.31.0.7/21
本地DNS服务器(只缓存):172.31.1.8/21
转发目标DNS服务器:172.31.1.18/21
根DNS服务器:172.31.1.28/21
org域DNS服务器:172.31.1.38/21
raymonds.cc域主DNS服务器:172.31.1.48/21
raymonds.cc域从DNS服务器:172.31.1.58/21
www.raymonds.cc的WEB服务器:172.31.1.68/21

1.3 前提准备

关闭SElinux
关闭防火墙
时间同步

1.4 实现步骤

1.4.1 各种主机的网络配置(参看上面的环境要求)

#在客户端配置DNS服务器地址
[root@centos7 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=none
ONBOOT=yes
IPADDR=172.31.0.7
PREFIX=21
GATEWAY=172.31.0.2
DNS1=172.31.1.8[root@centos7 ~]# nmcli conn reload
[root@centos7 ~]# nmcli conn up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)

1.4.2 实现WEB服务

#在web服务器172.31.1.68/21上实现
[root@rocky8-7 ~]# dnf -y install httpd;echo www.raymonds.cc > /var/www/html/index.html;systemctl enable --now httpd
[root@rocky8-7 ~]# curl 172.31.1.68
www.raymonds.cc

1.4.3 实现raymonds.cc域的主DNS服务器

#在raymonds.cc域主DNS服务器172.31.1.48/21上实现
[root@rocky8-5 ~]# dnf -y install bind[root@rocky8-5 ~]# vim /etc/named.conf
#注释掉下面两行
//  listen-on port 53 { 127.0.0.1; };
//  allow-query     { localhost; };
#只允许从服务器进行区域传输
    allow-transfer {172.31.1.58;}; 
#关闭加密验证
    dnssec-enable no;
    dnssec-validation no;[root@rocky8-5 ~]# vim /etc/named.rfc1912.zones
#加上这段
zone "raymonds.cc" {
    type master;
    file "raymonds.cc.zone";                                 
};[root@rocky8-5 ~]# cp -p /var/named/named.localhost /var/named/raymonds.cc.zone
[root@rocky8-5 ~]# vim /var/named/raymonds.cc.zone
$TTL 1D
@   IN SOA  master admin.raymons.cc. (
                    1   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
            NS  master
            NS  slave
master      A   172.31.1.48
slave       A   172.31.1.58
​
www         A   172.31.1.68
*           A   172.31.1.68
@           A   172.31.1.68
​
[root@rocky8-5 ~]# systemctl enable --now named
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.

1.4.4 实现raymonds.cc域的从DNS服务器配置

#在raymonds.cc域从DNS服务器172.31.1.58/21上实现
[root@rocky8-6 ~]# dnf -y install bind[root@rocky8-6 ~]# vim /etc/named.conf
#注释掉下面两行
//  listen-on port 53 { 127.0.0.1; };
//  allow-query     { localhost; };
#不允许其它主机进行区域传输
    allow-transfer {none;}; 
#关闭加密验证
    dnssec-enable no;
    dnssec-validation no;[root@rocky8-6 ~]# vim /etc/named.rfc1912.zones
zone "raymonds.cc" {
    type slave;
    masters {172.31.1.48;};
    file "slaves/raymonds.cc.zone";                                
};
[root@rocky8-6 ~]# systemctl enable --now named
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.
​
[root@rocky8-6 ~]# ll /var/named/slaves/
total 4
-rw-r--r-- 1 named named 407 Dec  6 15:46 raymonds.cc.zone
 #查看区域数据库文件是否生成

1.4.5 实现org域的主DNS服务器

#在cc域的主DNS服务器172.31.1.38/21上实现
[root@rocky8-4 ~]# dnf -y install bind[root@rocky8-4 ~]# vim /etc/named.conf
#注释掉下面两行
//  listen-on port 53 { 127.0.0.1; };
//  allow-query     { localhost; };
#关闭加密验证
    dnssec-enable no;
    dnssec-validation no;[root@rocky8-4 ~]# vim /etc/named.rfc1912.zones
#加上这段
zone "cc" {
    type master;
    file "cc.zone";                               
};[root@rocky8-4 ~]# cp -p /var/named/named.localhost /var/named/cc.zone[root@rocky8-4 ~]# vim /var/named/cc.zone
$TTL 1D
@   IN SOA  master admin.raymonds.cc. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
              NS  master
raymonds      NS  raymondsns1
raymonds      NS  raymondsns2
master        A   172.31.1.38
raymondsns1   A   172.31.1.48
raymondsns2   A   172.31.1.58 
​
[root@rocky8-4 ~]# systemctl enable --now named
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.

1.4.6 实现根域的主DNS服务器

#在根域的主DNS服务器172.31.1.28/21上实现
[root@rocky8-3 ~]# dnf -y install bind
​
​
vim /etc/named.conf
#注释掉下面两行
//  listen-on port 53 { 127.0.0.1; };
//  allow-query     { localhost; };
#关闭加密验证
    dnssec-enable no;
    dnssec-validation no;
#将下面行改为:
zone "." IN {
    type master;
    file "root.zone";                             
};[root@rocky8-3 ~]# cp -p /var/named/named.localhost /var/named/root.zone[root@rocky8-3 ~]# vim /var/named/root.zone
$TTL 1D
@   IN SOA  master admin.raymonds.cc. (
                    1   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
            NS  master
cc          NS  ccns
master      A   172.31.1.28
ccns        A   172.31.1.38
​
[root@rocky8-3 ~]# systemctl enable --now named
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.

1.4.7 实现转发目标的DNS服务器

#在转发目标的DNS服务器172.31.1.18/21上实现
[root@rocky8-2 ~]# dnf -y install bind
​
​
[root@rocky8-2 ~]# vim /etc/named.conf
#注释掉下面两行
//  listen-on port 53 { 127.0.0.1; };
//  allow-query     { localhost; };
#关闭加密验证
    dnssec-enable no;
    dnssec-validation no;
​
[root@rocky8-2 ~]# vim /var/named/named.ca
.                       518400      IN     NS    a.root-servers.net.                                         
a.root-servers.net.     3600000     IN     A     172.31.1.28
​
[root@rocky8-2 ~]# systemctl enable --now named
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.

1.4.8 实现本地只缓存DNS服务器

#在转发目标的DNS服务器172.31.1.8/21上实现
[root@rocky8 ~]# dnf -y install bind
​
vim /etc/named.conf
#注释掉下面两行
//  listen-on port 53 { 127.0.0.1; };
//  allow-query     { localhost; };
    forward only;
    forwarders {172.31.1.18;}; 
#关闭加密验证
    dnssec-enable no;
    dnssec-validation no;
​
[root@rocky8 ~]# systemctl enable --now named
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.

1.4.9 客户端测试

[root@centos7 ~]# yum -y install bind-utils[root@centos7 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 172.31.1.8[root@centos7 ~]# dig www.raymonds.cc
​
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> www.raymonds.cc
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59786
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
​
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.raymonds.cc.       IN  A
​
;; ANSWER SECTION:
www.raymonds.cc.    86400   IN  A   172.31.1.68
​
;; AUTHORITY SECTION:
raymonds.cc.        86400   IN  NS  raymondsns1.cc.
raymonds.cc.        86400   IN  NS  raymondsns2.cc.
​
;; ADDITIONAL SECTION:
raymondsns1.cc.     86400   IN  A   172.31.1.48
raymondsns2.cc.     86400   IN  A   172.31.1.58
​
;; Query time: 5 msec
;; SERVER: 172.31.1.8#53(172.31.1.8)
;; WHEN: Mon Dec 06 16:17:39 CST 2021
;; MSG SIZE  rcvd: 144
​
[root@centos7 ~]# curl www.raymonds.cc
www.raymonds.cc
[root@centos7 ~]# curl raymonds.cc
www.raymonds.cc
[root@centos7 ~]# curl xxx.raymonds.cc
www.raymonds.cc