架构

16

环境要求

角色 ip
DNS客户端 192.168.1.6/24
本地DNS服务器 192.168.1.8/24
转发目标DNS服务器 192.168.1.18/24
根DNS服务器 192.168.1.28/24
org域DNS服务器 192.168.1.38/24
wang.org 域主DNS服务器 192.168.1.48/24
wang.org 域从DNS服务器 192.168.1.58/24
www.wang.org的web服务器 192.168.1.68/24

前提准备

1
2
3
关闭SElinux
关闭防火墙
时间同步

实现步骤

各种主机的网络配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#在客户端配置DNS服务器地址
[root@Client ~]# cat /etc/NetworkManager/system-connections/ens160.nmconnection
[connection]
id=ens160
type=ethernet
autoconnect-priority=-999
interface-name=ens160
timestamp=1730329769

[ethernet]

[ipv4]
address1=192.168.1.6/24,192.168.1.2 # IP
dns=192.168.1.8; # DNS
method=manual # 手动

[ipv6]
addr-gen-mode=eui64
method=auto

[proxy]

实现WEB服务

1
2
3
4
#在web服务器192.168.1.68/24上实现
yum install httpd
echo www.wang.org > /var/www/html/index.html
systemctl start httpd

实现wang.org域的主DNS服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#在wang.org域主DNS服务器192.168.1.48/24上实现
yum install bind -y

vim /etc/named.conf
#注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
#只允许从服务器进行区域传输
allow-transfer { 192.168.1.58;};



vim /etc/named.rfc1912.zones
#加上这段
zone "wang.org" {
type master;
file "wang.org.zone";
};


cd /var/named
cp -p named.localhost wang.org.zone


vim /var/named/wang.org.zone
$TTL 1D
@ IN SOA master admin.wang.org. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave
master IN A 192.168.1.48
slave IN A 192.168.1.58
www IN A 192.168.1.68

chgrp named /var/named/wang.org.zone

systemctl start named #第一次启动服务
rndc reload #不是第一次启动服务

实现wang.org域的从DNS服务器配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#在wang.org域从DNS服务器192.168.1.58/24上实现

yum install bind -y
vim /etc/named.conf
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
#不允许其它主机进行区域传输
allow-transfer { none;};


vim /etc/named.rfc1912.zones
zone "wang.org" {
type slave;
masters { 192.168.1.48; };
file "slaves/wang.org.slave";
};

systemctl start named #第一次启动服务
rndc reload #不是第一次启动服务
ls /var/named/slaves/wang.org.slave #查看区域数据库文件是否生成

实现 org 域的主DNS服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#在org域的主DNS服务器192.168.1.38/24上实现
yum install bind -y

vim /etc/named.conf
#注释掉两行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };


vim /etc/named.rfc1912.zones
zone "org" IN {
type master;
file "org.zone";
};


cd /var/named/
cp -p named.localhost org.zone


vim /var/named/org.zone
$TTL 1D
@ IN SOA master admin.wang.org. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
wang NS wang1
wang NS wang2

master IN A 192.168.1.38
wang1 IN A 192.168.1.48
wang2 IN A 192.168.1.58



chgrp named /var/named/org.zone

systemctl start named #第一次启动服务
rndc reload #不是第一次启动服务

实现根域的主DNS服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#在根域的主DNS服务器192.168.1.28/24上实现
yum install bind -y

vim /etc/named.conf
#注释掉两行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };

#将下面行改为:
zone "." IN {
type master; # master
file "root.zone";
};

vim /var/named/root.zone
$TTL 1D
@ IN SOA master admin.wang.org. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
org NS orgns

master IN A 192.168.1.28
orgns IN A 192.168.1.38

#安全加固
chgrp named /var/named/root.zone
chmod 640 /var/named/root.zone


systemctl start named #第一次启动
rndc reload #不是第一次启动

实现转发目标的DNS服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#在转发目标的DNS服务器192.168.1.18/24上实现
yum install bind -y

vim /etc/named.conf
#注释掉两行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };

# 修改
# dnssec-enable no; rocky9中添加此行会报错,已废弃
dnssec-validation no

##############################################################################
#/etc/named.conf:32: option 'dnssec-enable' is obsolete and should be removed#
##############################################################################

vim /var/named/named.ca
# 其他都注释掉
. 518400 IN NS a.root-servers.net.
a.root-servers.net. 518400 IN A 192.168.1.28



systemctl start named #第一次启动
rndc reload #不是第一次启动

实现本地只缓存DNS服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#在转发目标的DNS服务器192.168.1.8/24上实现
yum install bind -y

vim /etc/named.conf
#注释掉两行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };

forward only;
forwarders { 192.168.1.18;};


#dnssec-enable no; rocky9中添加此行会报错,已废弃
dnssec-validation no


systemctl start named #第一次启动
rndc reload #不是第一次启动

客户端测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.1.8

yum install -y bind-utils

[root@Client ~]# dig www.wang.org

; <<>> DiG 9.16.23-RH <<>> www.wang.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12137
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 2818ee5793b919f20100000067519e9e57bff3cce5ad4d24 (good)
;; QUESTION SECTION:
;www.wang.org. IN A

;; ANSWER SECTION:
www.wang.org. 86396 IN A 192.168.1.68 # 成功

;; Query time: 2 msec
;; SERVER: 192.168.1.8#53(192.168.1.8)
;; WHEN: Thu Dec 05 20:37:50 CST 2024
;; MSG SIZE rcvd: 85

[root@Client ~]# curl www.wang.org
www.wang.org