1.简单的正反解析DNS服务器
实验准备:
- 一台虚拟机server,作为dns服务器
- 一台虚拟机作为,web网页服务器。
- 一台虚拟机进行测试。
- 关闭防火墙和selinux
1)web服务器安装httpd服务:
[root@web-server ~]# yum install httpd -y
Installed:
httpd.x86_64 0:2.4.6-45.el7
Dependency Installed:
apr.x86_64 0:1.4.8-3.el7 apr-util.x86_64 0:1.5.2-6.el7
httpd-tools.x86_64 0:2.4.6-45.el7 mailcap.noarch 0:2.1.41-2.el7
Complete!
2)编辑web服务器的默认发布页面:
[root@web-server ~]# vim /var/www/html/index.html
DNS test. # 写入内容
3)启动网络服务:
[root@web-server ~]# systemctl start httpd
4)客户端通过IP地址测试web网页:
[root@client1 ~]# curl 172.25.5.15
DNS test. # 内容正确
5)DNS安装软件:
[root@server ~]# yum install bind -y
Installed:
bind.x86_64 32:9.9.4-37.el7
Complete!
6)修改主配置文件:
[root@dns-server ~]# vim /etc/named.conf
options {
listen-on port 53 { 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";
allow-query { any; }; # 监听所有询问的客户端
:wq
7)修改区域配置文件(正向和反向的标签记录):
[root@dns-server ~]# vim /etc/named.rfc1912.zones
# 删除文件中的其他模版,我们只留下一个正向一个反向
# 正向
zone "song.com" IN { # 写入要指定的域
type master; # 不做主从不修改
file "song.localhost"; # 正向配置文件
allow-update { none; }; # 不做主从不更新
};
zone "5.25.172.in-addr.arpa" IN { # 反写解析网段
type master;# 不做主从不修改
file "song.loopback"; # 反向解析配置文件
allow-update { none; }; # 不做主从不更新
};
8)生成配置文件:
[root@dns-server ~]# cp -a /var/named/named.localhost /var/named/song.localhost
[root@dns-server ~]# cp -a /var/named/named.loopback /var/named/song.loopback
[root@dns-server ~]# ll /var/named/
total 24
drwxrwx--- 2 named named 6 Sep 26 2016 data
drwxrwx--- 2 named named 6 Sep 26 2016 dynamic
-rw-r----- 1 root named 2076 Jan 28 2013 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 6 Sep 26 2016 slaves
-rw-r----- 1 root named 152 Jun 21 2007 song.localhost # 模版文件复制成功
-rw-r----- 1 root named 168 Dec 15 2009 song.loopback
9)修改正向配置文件:
[root@dns-server ~]# vim /var/named/song.localhost
$TTL 1D
@ IN SOA song.com. rname.invalid. ( # 将第二行的@修改为要解析的域+根域(.)
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.song.com. # 写入DNS服务器的域名+根域(.)
dns A 172.25.5.10 # 必须由一个关于自己的解析,解析三级域dns对应的IP为172.25.5.10
www A 172.25.5.15 # 解析web服务器三级域dns对应的IP为172.25.5.15
:wq
10)修改反向解析记录:
[root@dns-server ~]# vim /var/named/song.loopback
$TTL 1D
@ IN SOA song.com. rname.invalid. (# 将第二行的@修改为要解析的域+根域(.)
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.song.com. # 写入DNS服务器的域名+根域(.)
10 PTR dns.song.com. # 反向解析网络位已经写在了区域文件中,所以只用表明主机位和对应的域名+根域(.)
15 PTR www.song.com. # 还有web服务器的主机位和对应的域名+根域(.)
:wq
11)启动dns服务:
[root@dns-server ~]# systemctl start named
12)客户端写入dns服务器的IP:
[root@client1 ~]# nmtui
┌───────────────────────────┤ Edit connection ├───────────────────────────┐
│ ↑│
│ Profile name eth0____________________________________ ▮│
│ Device eth0 (52:54:00:00:05:0B)________________ ▒│
│ ▒│
│ ═ ETHERNET <Show> ▒│
│ ▒│
│ ╤ IPv4 CONFIGURATION <Manual> <Hide> ▒│
│ │ Addresses 172.25.5.2/24____________ <Remove> ▒│
│ │ <Add...> ▒│
│ │ Gateway _________________________ ▒│
│ │ DNS servers 172.25.5.10______________ <Remove> ▒│
│ │ <Add...> ▒│
│ │ Search domains <Add...> ▒│
│ │ ▒│
│ │ Routing (No custom routes) <Edit...> ▒│
│ │ [ ] Never use this network for default route ▒│
│ │ ▒│
│ │ [X] Require IPv4 addressing for this connection ▒│
│ └ ▒│
│ ▒│
│ ═ IPv6 CONFIGURATION <Automatic> <Show> ▒│
│ ▒│
│ [X] Automatically connect ▒│
│ [X] Available to all users ▒│
│ ↓│
└─────────────────────────────────────────────────────────────────────────┘
13)不重启网络进行测试:
[root@client1 ~]# curl www.song.com
curl: (6) Could not resolve host: www.song.com; Unknown error
14)重启网络进行测试:
[root@client1 ~]# systemctl restart network
[root@client1 ~]# curl www.song.com
DNS test. # 测试结果正确
14)正向测试:
[root@client1 ~]# nslookup www.song.com
# DNS的IP与地址
Server: 172.25.5.10
Address: 172.25.5.10#53
# 访问网站的IP
Name: www.song.com
Address: 172.25.5.15
15)反向测试:
[root@client1 ~]# nslookup 172.25.5.15
Server: 172.25.5.10
Address: 172.25.5.10#53
# 反向告诉我们域名成功。
15.5.25.172.in-addr.arpa name = www.song.com.
总结:
- 网页的域名不用保存在网页服务器中,只需要DNS服务器知道就可以了。
- 在主配置文件中不能将
;
忘记。 - 区域配置文件中的反向解析模块IP要反写。
- 正反解析配置文件中域名后都要+根域(.),只要有顶级域出现都要+根域(.);而像正向解析中的三级域就不需要写入。
- 正反解析配置文件中必须含有DNS服务器自己的域名解析。
2.主从DNS服务
通过搭建从DNS服务器,可以减轻主服务器的压力。
实验准备:
- 一台虚拟机master-server,作为主dns服务器
- 一台虚拟机slave-server,作为从dns服务器。
- 一台虚拟机web-server,作为web服务器。
- 一台虚拟机进行测试。
- 关闭防火墙和selinux
1)主服务器修改主配置文件:
[root@master-server ~]# vim /etc/named.conf
options {
listen-on port 53 { 172.25.5.10; }; # 只有这个网卡可以开启53端口接收询问
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";
allow-query { any; };
:wq
2)主服务器修改区域配置文件:
[root@master-server ~]# vim /etc/named.rfc1912.zones
# 删除所有,保留一个正向解析
zone "song.com" IN { # 写入解析的域
type master; # 主服务器
file "song.localhost"; # 正向解析文件
allow-update { 172.25.5.25; }; # 从服务器允许更新,从服务器的IP
};
:wq
3)主服务器修改正向解析文件:
[root@master-server ~]# vim /var/named/song.localhost
$TTL 1D
@ IN SOA song.com. rname.invalid. (
20200820 ; serial # 写一个时间标识,表示自己更新了
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.song.com.
dns A 172.25.5.10
www A 172.25.5.15
4)启动主服务器:
[root@master-server ~]# systemctl restart named
5)从服务器修改主配置文件:
[root@slave-server ~]# vim /etc/named.conf
options {
listen-on port 53 { 172.25.5.25; }; # 通过自己的网卡监听,写入网卡的IP
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";
allow-query { any; }; # 所有用户可询问
:wq
6)从服务器修改区域配置文件:
[root@slave-server ~]# vim /etc/named.rfc1912.zones
# 删除其他只留下,正向模块
zone "song.com" IN { # 修改为与主相同
type slave; # 类型为从
masters { 172.25.5.10; }; # 写入主的IP
file "slaves/song.localhost"; # 正向配置文件名称(所以加上slaves/与主配置文件对应)
allow-update { none; }; # 不用修改,他就是从
};
:wq
- 从服务器正向配置文件默认保存在/var/named/slaves目录下。
7)从服务器查看/var/named/slaves目录为空:
[root@slave-server named]# cd /var/named/slaves
[root@slave-server slaves]# ls
[root@slave-server slaves]#
8)从服务器启动服务:
[root@slave-server slaves]# systemctl start named
[root@slave-server slaves]# pwd
/var/named/slaves
[root@slave-server slaves]# ls
song.localhost # 已经含有主发给他的正向配置文件,二进制文件不能查看
9)在测试接中填写DNS从服务器的ip最为自己的DNS:
[root@client ~]# nmtui
┌───────────────────────────┤ Edit connection ├───────────────────────────┐
│ ↑│
│ Profile name eth0____________________________________ ▮│
│ Device eth0 (52:54:00:00:05:0B)________________ ▒│
│ ▒│
│ ═ ETHERNET <Show> ▒│
│ ▒│
│ ╤ IPv4 CONFIGURATION <Manual> <Hide> ▒│
│ │ Addresses 172.25.5.2/24____________ <Remove> ▒│
│ │ <Add...> ▒│
│ │ Gateway _________________________ ▒│
│ │ DNS servers 172.25.5.25______________ <Remove> ▒│
│ │ <Add...> ▒│
│ │ Search domains <Add...> ▒│
│ │ ▒│
│ │ Routing (No custom routes) <Edit...> ▒│
│ │ [ ] Never use this network for default route ▒│
│ │ ▒│
│ │ [X] Require IPv4 addressing for this connection ▒│
│ └ ▒│
│ ▒│
│ ═ IPv6 CONFIGURATION <Automatic> <Show> ▒│
│ ▒│
│ [X] Automatically connect ▒│
│ [X] Available to all users ▒│
│ ↓│
└─────────────────────────────────────────────────────────────────────────┘
[root@client ~]# systemctl restart network
10)测试网址解析:
[root@client ~]# nslookup www.song.com
# 通过从服务器解析
Server: 172.25.5.25
Address: 172.25.5.25#53
# 网站服务器域名与IP
Name: www.song.com
Address: 172.25.5.15
[root@client ~]# curl www.song.com
Master-DNS test. # 网页内容正确
11)测试如果主服务器停止了:
[root@master-server ~]# systemctl stop named
10)客户端测试网址解析依旧可以工作:
[root@client ~]# curl www.song.com
Master-DNS test.
总结:
- 主服务器简易配置:区域配置文件中,写入从服务器的IP,允许这个从更新服务器;正向解析配置文件中,写入更新标识。
- 从服务器的区域配置文件中:正向解析模版解析域与主相同;类型为从;显示主服务器的ip;以及正向解析配置文件保存位置在slaves下。
- 从服务器不需要配置正向解析配置文件,会有主服务器将文件二进制形式发送过来,也无法修改。
- 主从服务器相对独立,主服务器停止从服务器没有到更新期限之前都可以独立使用。