DNS域名解析服务
一、BIND概述
1.1BIND 域名服务基础
- DNS系统的作用及类型
- BIND的安装和配置
1.2 使用BIND构建域名服务器
- 构建缓存域名服务器
- 构建主、从域名服务器
1.3 BIND软件安装
BIND软件是应用最广泛的DNS服务程序,官方站点:https://www.isc.org/
1.4 BIND服务
主要执行程序:/usr/sbin/named
默认监听端口:53
主配置文件:/etc/named.conf
保存DNS解析记录的数据文件位于:/var/named/
1.5 BIND服务控制
systemctl [ status|start|stop|restart ] named.service
二、DNS概述
2.1 DNS概述
把域名翻译成IP地址的软件称为域名系统,即DNS。它是一种管理名字的方法。
(1)域名系统(Domain Name System缩写DNS,Domain Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
(2)DNS功能:它允许用户在查找网络资源的时候使用层次化的对用户友好的IP地址。
2.2 DNS系统作用
正向解析:根据域名查找对应的IP地址
反向解析:根据IP地址查找对应的域名
2.3 DNS系统的分布式数据结构
域命名结构:
A根域 世界上总共有13台根服务器
B顶级域 分类方式:1.类型 2.区域
C二级域
D主机名/三级域
E区域(是由DNS名称空间中的单个区域或由具有上下隶属关系的紧密相邻的多个子域组成的一个管理单位.在DNS服务器中必须先建立区域, 然后再根据需要在区域中建立子域以及在区域或子域 中添加资源记录,才能完成其解析工作. )
a主要区域:负责在新区域的计算机上管理和维护本区域的资源记录。
b辅助区域:辅助DNS区域上的区域数据无法修改,所有数据都是复制主DNS服务器的记录。
c存根区域:只是此区域的权威名称服务器相关信息的来源。
F子域
G资源记录(资源记录是一个域名到值的绑定,它包括以下字段:域名、值、类型、分类和生命期。)
2.4 DNS系统类型分类
2.4.1.缓存域名服务器
- 也称为DNS高速缓存服务器
- 通过向其他域名服务器查询获得域名->IP地址记录
- 将域名查询结果缓存到本地,提高重复查询时的速度
2.4.2.主域名服务器
- 特定DNS区域的权威服务器,具有唯一性
- 负责维护该区域内所有的域名->IP地址的映射记录
- 需要自行建立所负责区域的地址数据文件
2.4.3.从域名服务器
- 也称为辅助域名服务器,是对主域名服务器的热备份
- 其维护的域名->IP地址记录来源于主域名服务器
- 需要从主域名服务器自动同步区域地址数据库
三、配置文件
1:主配置文件 负责 DNS全局功能 例如:日志文件位置,访问权限等
2:区域配置文件 负责构建解析区域 例如:多域名解析
3:区域数据配置文件 负责管理主机解析记录 例如:解析映射
4./etc/resolv.conf它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。它的格式很简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数。
resolv.conf的关键字主要有四个,分别是:
nameserver #定义DNS服务器的IP地址
domain #定义本地域名
search #定义域名的搜索列表
sortlist #对返回的域名进行排序
四、实验
实验环境
centos7.6操作系统,VMware虚拟机
实验目的
了解正向解析、方向解析、主从DNS服务器、以及分离解析
实验步骤
正向解析
1.关闭核心防护,清空防火墙缓存
2.安装BIND软件包
3.查看软件安装目录
4.修改主配置文件,保存退出
5.修改区域配置文件,保存并退出
6.修改区域数据配置文件,保存退出
注意:locakhost文件的属主和属组不一样
7.将本机IP放入DNS客户机配置文件
8.启动服务
9.解析地址
9.查看端口服务信息
10、查看udp端口信息
正向解析
setenforce 0
iptables -F
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "kgc.com" IN {
type master;
file "kgc.com.zone";
allow-update { none; };
};
[root@localhost named]# cd /var/named/
[root@localhost named]# ls
data kgc.com.local named.ca named.localhost slaves
dynamic kgc.com.zone named.empty named.loopback
[root@localhost named]# cp -p named.localhost kgc.com.zone
[root@localhost named]# vim kgc.com.zone
IN MX 5 mail.kgc.com
mail IN A 192.168.88.88
www IN A 192.168.66.66
smtp IN CNAME mail
* IN A 6.6.6.6
:wq
[root@localhost named]#systemctl start named
[root@localhost named]#echo "nameserver 192.168.220.110" > /etc/resolv.conf
host www.kgc.com
host mail.kgc.com
host smtp.kgc.com
host abc.kgc.com
反向解析
vim /etc/named.conf
options {
listen-on port 53 { any; };
allow-query { any; };
vim /etc/named.rfc1912.zones
zone "66.168.192.in-addr.arpa" IN {
type master;
file "kgc.com.local";
allow-update { none; };
};
cd /var/named
cp -p kgc.com.zone kgc.com.local
vim kgc.com.local
vim kgc.com.local
$TTL 1D
@ IN SOA kgc.com. admin.kgc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS kgc.com.
A 127.0.0.1
66 IN PTR www.kgc.com.
~
[root@promote named]# host 192.168.66.66
66.66.168.192.in-addr.arpa domain name pointer www.kgc.com.
主从DNS服务器
主服务器192.168.220.110
[root@promote named]# vim /etc/named.rfc1912.zones
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "kgc.com" IN {
type master;
file "kgc.com.zone";
allow-tansfer { 192.168.220.100; };
};
:wq
从服务器192.168.220.100
[root@localhost ~]# ping 192.168.220.110
PING 192.168.220.110 (192.168.220.110) 56(84) bytes of data.
64 bytes from 192.168.220.110: icmp_seq=1 ttl=64 time=1.04 ms
64 bytes from 192.168.220.110: icmp_seq=2 ttl=64 time=0.506 ms
[root@localhost named]# iptables -F
[root@localhost named]# setenforce 0
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]# ls slaves/
slaves文件夹是空的,当配置好主从服务器时,那么slaves文件夹里面会自动备份文件
[root@localhost named]# 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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
:wq
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "kgc.com" IN {
type slave;
file "slaves/kgc.com.zone";
masters { 192.168.220.110; };
};
:wq
[root@localhost named]# systemctl start named
[root@localhost named]# ls slaves/
kgc.com.zone
[root@localhost named]# echo "nameserver 192.168.220.100" > /etc/resolv.conf
[root@localhost named]# host www.kgc.com
www.kgc.com has address 192.168.66.66
[root@localhost named]# host mail.kgc.com
mail.kgc.com has address 192.168.88.88
[root@localhost named]# host.smtp.kgc.com
[root@localhost named]# host smtp.kgc.com
smtp.kgc.com is an alias for mail.kgc.com.
mail.kgc.com has address 192.168.88.88
[root@localhost named]# host aaa.kgc.com
aaa.kgc.com has address 6.6.6.6
主
[root@promote named]# vim kgc.com.zone
ftp IN A 192.168.77.77 加了一个ftp
[root@promote named]# systemctl restart named
[root@promote named]# host ftp.kgc.com
ftp.kgc.com has address 192.168.77.77
从
[root@localhost named]# systemctl reload named.service
[root@localhost named]# host ftp.kgc.com
ftp.kgc.com has address 6.6.6.6 不会自动刷新slaves里面的文件,只有删掉slaves里面文件才会自动备份新的主服务器的文件
[root@localhost named]# ls slaves/
kgc.com.zone
[root@localhost named]# rm -rf slaves/kgc.com.zone
[root@localhost named]# ls slaves/
[root@localhost named]# systemctl restart named
[root@localhost named]# ls slaves/
kgc.com.zone
[root@localhost named]# host ftp.kgc.com
ftp.kgc.com has address 192.168.77.77
要先进行删除原文件,再进行重载自动备份
分离解析
#表示分步
服务器1
[root@promote ~]# yum install bind -y 安装bind
添加网卡然后改为仅主机模式
[root@promote ~]# ifconfig
#
[root@promote ~]# cd /etc/sysconfig/network-scripts/
[root@promote network-scripts]# vim ifcfg-ens33
IPADDR=12.0.0.1
NETMASK=255.255.255.0
:wq
#
[root@promote network-scripts]# cp ifcfg-ens33 ifcfg-ens36
#
[root@promote network-scripts]# vim ifcfg-ens36
NAME=ens36
DEVICE=ens36
IPADDR=192.168.100.1
NETMASK=255.255.255.0
:wq
#
[root@promote network-scripts]# service network restart
Restarting network (via systemctl): [ 确定 ]
#
[root@promote network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 12.0.0.1 netmask 255.255.255.0 broadcast 12.0.0.255
inet6 fe80::7fc5:140b:bf58:bfb8 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:60:ee:f7 txqueuelen 1000 (Ethernet)
RX packets 7288 bytes 10271965 (9.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1547 bytes 111202 (108.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.1 netmask 255.255.255.0 broadcast 192.168.100.255
inet6 fe80::ccd0:5ade:28c5:20c3 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:60:ee:01 txqueuelen 1000 (Ethernet)
RX packets 58 bytes 5896 (5.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 117 bytes 18167 (17.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#
改win10仅主机,配置ip地址和子网掩码网关,dns
12.0.0.12
255.0.0.1
12.0.0.1
12.0.0.1
ping 12.0.0.1
C:\Users\zhouwei>ping 12.0.0.1
正在 Ping 12.0.0.1 具有 32 字节的数据:
来自 12.0.0.1 的回复: 字节=32 时间<1ms TTL=64
来自 12.0.0.1 的回复: 字节=32 时间<1ms TTL=64
#
第二台Linux主机设置为仅主机模式
[root@promote ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.100.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
DNS1=192.168.100.1
:wq
#
[root@promote ~]# service network restart
Restarting network (via systemctl): [ 确定 ]
#
[root@promote ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.100 netmask 255.255.255.0 broadcast 192.168.100.255
#
[root@promote ~]# ping 192.168.100.1
PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data.
64 bytes from 192.168.100.1: icmp_seq=1 ttl=64 time=0.508 ms
64 bytes from 192.168.100.1: icmp_seq=2 ttl=64 time=0.308 ms
#
第一台Linux主机配置路由表
[root@promote network-scripts]# vim /etc/sysctl.conf
net.ipv4.ip_forwald=1 开启路由功能
:wq
[root@localhost ~]# sysctl -p 使它立即生效
net.ipv4.ip_forward = 1
#
win10
C:\Users\zhouwei>ping 192.168.100.1
正在 Ping 192.168.100.1 具有 32 字节的数据:
来自 192.168.100.1 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.100.1 的回复: 字节=32 时间<1ms TTL=64
#
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
12.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.100.0 0.0.0.0 255.255.255.0 U 101 0 0 ens36
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
#
[root@localhost network-scripts]# vim /etc/named.conf
options {
listen-on port 53 { any; };
allow-query { any; };
:wq
#
[root@localhost network-scripts]# vim /etc/named.rfc1912.zones
view "lan" {
match-clients { 192.168.100.0/24; };
zone "kgc.com" IN {
type master;
file "kgc.com.lan";
};
zone "." IN {
type hint;
file "named.ca";
};
};
view "wan" {
match-clients { 12.0.0.0/24; };
zone "kgc.com" IN {
type master;
file "kgc.com.wan";
};
:wq
#
[root@localhost network-scripts]# cd /var/named/
[root@localhost named]# ls
ata dynamic named.ca named.empty named.localhost named.loopback slaves
#
[root@localhost named]# cp -p named.localhost kgc.com.lan
[root@localhost named]# vim kgc.com.lan
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.100.1
www IN A 192.168.88.88
#
[root@localhost named]# cp -p kgc.com.lan kgc.com.wan
[root@localhost named]# vim kgc.com.wan
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 12.0.0.1
www IN A 12.0.0.1
#
[root@localhost named]# systemctl start named
#
[root@localhost named]# echo "nameserver 12.0.0.1" > /etc/resolv.conf
[root@localhost named]# host www.kgc.com
www.kgc.com has address 12.0.0.1
[root@localhost named]# echo "nameserver 192.168.100.1" > /etc/resolv.conf
[root@localhost named]# host www.kgc.com
www.kgc.com has address 192.168.88.88
#
[root@localhost named]# systemctl stop firewalld.service关闭防火墙,win10才会识别到DNS解析地址,如果不关识别不到
#
win10 C:\Users\zhouwei>nslookup www.kgc.com
C:\Users\zhouwei>nslookup www.kgc.com
服务器: UnKnown
Address: 12.0.0.1
名称: www.kgc.com
Address: 12.0.0.1
总结:要打开第一台计算机的named服务,然后关闭防火墙,一定要关闭防火墙,不然外部PC访问不到该服务器的DNS。