DNS
概念
域名系统(英文:Domain Name System,缩写:DNS),使用应用层协议,是互联网的一项服务。 它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。 当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
默认端口:
- 连接DNS服务器,使用TCP协议的53端口。
- DNS服务器进行解析,使用UDP协议的53端口。
DNS系统类型
主域名服务器
- 特定DNS区域的权威服务器,具有唯一性
- 负责维护该区域内所有域名-->IP地址的映射记录
- 需要自行建立所负责区域的地址数据文件
从域名服务器
- 也称为辅助域名服务器,是对主域名服务器的热备份
- 其维护的域名-->IP地址记录来源于主域名服务器
- 需要从主域名服务器自动同步区域地址数据库
缓存域名服务器
- 也称为DNS高速缓存服务器
- 通过向其他域名服务器查询获得域名-->IP地址记录
- 将域名查询结果缓存到本地,提高重复查询时的速度
转发域名服务器
windows系统查询DNS缓存的命令:ipconfig/displaydns
windows系统清理DNS缓存的命令:ipconfig/flushdns
Linux系统清理DNS缓存需要安装nscd软件,启动、执行“nscd -i hosts”命令
DNS的查询方式(递归查询和迭代查询)
递归查询
- 主机向本地域名服务器的查询一般都是采用递归查询。
- 如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。在域名服务器查询期间,客户机将完全处于等待状态。
- 因此,递归查询只会返回两种信息:要么是所要查询的IP地址,要么是查询失败。
迭代查询
- 本地域名服务器向根域名服务器的查询是迭代查询。
- 当根域名服务器收到本地域名服务器发出的迭代查询请求报文后,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。下一个服务器收到请求后也是如此,要么返回IP,要么告诉本地域名服务器下一步去找谁。 即本地域名服务器按照提示的指引依次查询, 直到返回查询的结果为止 。
实验思路:
- 安装bind软件包
- 修改主配置文件
- 修改区域配置文件,添加正向区域配置
- 配置正向区域数据文件
- 启动服务,关闭防火墙
- 在客户端的域名解析配置文件中添加DNS服务器地址
- 测试DNS解析,验证实验是否成功。
实验步骤:
步骤一:
安装bind软件包
yum install -y bind //安装bind软件包
[root@localhost ~]# rpm -qc bind //查询bind软件配置文件所在路径
/etc/logrotate.d/named
/etc/named.conf //主配置文件
/etc/named.iscdlv.key
/etc/named.rfc1912.zones //区域配置文件
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost //区域数据配置文件
/var/named/named.loopback
步骤二:
修改主配置文件
options {
listen-on port 53 { any; }; //允许DNS服务器监听所有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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; //允许所有客户端查询
步骤三:
修改区域配置文件,添加正向区域配置
vim /etc/named.rfc1912.zones //编辑区域配置文件
zone "pp.com" IN { //定义正向DNS区域
type master; //定义区域类型为master
file "pp.com。zone"; //设置对应的正向解析数据库文件
allow-update { none; }; //
};
步骤四:
配置正向区域数据文件
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]# cp -p named.localhost pp.com.zone
[root@localhost named]# vim pp.com.zone
$TTL 1D
@ IN SOA pp.com. admin.pp.com.zone. (
0 ; serial //更新序列号,可以是 10 位以内的整数
1D ; refresh //刷新时间,重新下载地址数据的间隔
1H ; retry //重试延时,下载失败后的重试间隔
1W ; expire //失效时间,超过该时间仍无法下载则放弃
3H ) ; minimum //无效解析记录的生存周期
NS pp.com.
A 192.168.19.20
www IN A 192.168.19.21
mail IN A 192.168.19.22
ftp IN A 192.168.19.23
* IN A 192.168.19.24
- “@”这里是一个变量,当前DNS区域名
- SOA记录中的更新序列号用于同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。
- “pp.com.”此为完全合格域名(FQDN),后面有个“.”不能漏掉
- “admin.pp.com.”表示管理员邮箱,这里的“@”符号已有其他含义,所以用“.”代替
步骤五:
启动服务,关闭防火墙
[root@localhost named]# systemctl start named
[root@localhost named]# systemctl stop firewalld
[root@localhost named]# setenforce 0
步骤六:
在客户端的域名解析配置文件中添加DNS服务器地址
方法一:
[root@localhost named]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.19.20
#nameserver 114.114.114.114
#修改完立即生效
方法二:
[root@localhost named]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=34aeac22-1154-4c4b-a76c-55c5e7b81429
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.19.20
NETMASK=255.255.255.0
GATEWAY=192.168.19.2
DNS1=192.168,19,20
#DNS2=114.114.114.114
[root@localhost named]# systemctl restart network
#修改完后需要重启网卡
步骤七:
测试DNS解析,验证实验是否成功。
[root@localhost named]# host www.pp.com
www.pp.com has address 192.168.19.21
[root@localhost named]# host ftp.pp.com
ftp.pp.com has address 192.168.19.23
反向解析
实验要求:
要求为以下IP地址做反向解析工作。
192.168.19.200 www.chc.com
192.168.72.201 ftp.chc.com
实验思路:
- 修改区域配置文件,添加反向区域配置
- 配置反向区域数据文件
- 重启服务进行测试
实验步骤:
步骤一:
修改区域配置文件,添加反向区域配置
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "19.168.192.in-addr.arpa" IN { //反向解析的地址倒过来写,代表解析192.168.19段的地址
type master;
file "chc.com.zone"; //指定区域数据文件为chc.com.zone
allow-update { none; };
};
步骤二:
配置反向区域数据文件
[root@localhost named]# cp -p named.localhost chc.com.zone
[root@localhost named]# vim chc.com.zone
$TTL 1D
@ IN SOA chc.com. admin.chc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS chc.com.
A 192.168.19.20
200 IN PTR www.chc.com
201 IN PTR mail.chc.com
#PTR为反向指针
步骤三:
重启服务进行测试
[root@localhost named]# host 192.168.19.200
200.19.168.192.in-addr.arpa domain name pointer www.chc.com.19.168.192.in-addr.arpa.
[root@localhost named]# nslookup 192.168.19.201
201.19.168.192.in-addr.arpa name = mail.chc.com.19.168.192.in-addr.arpa.