一、DNS的定义
DNS是“域名系统”的英文缩写。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
DNS服务使用TCP和UDP的53端口,TCP的53端口用于连接DNS服务器,UDP的53端口用于解析DNS
每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符
二、DNS系统的作用
- 正向解析:根据域名查找对应的IP地址
- 反向解析:根据IP地址查找对应的域名
- DNS系统的分布分布式数据结构
- 域名结构:
http://主机名.子域.二级域.顶级域 根域/
根域 | 位于域名空间最顶层,一般用一个 “.” 表示 |
顶级域 | 一般代表一种类型的组织机构或国家地区 |
二级域 | 用来标明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家网络部门统一管理 |
子域 | 二级域下所创建的各级域统称为子域,各个组织或用户可以自由申请注册自己的域名 |
主机 | 主机位于域名空间最下层,就是一台具体的计算机 |
- 根据域名查找出IP地址的流程
先使用主机本地的hosts文件查找相关记录
再使用DNS服务进行解析
三、DNS域名解析工作原理
客户端会先将DNS解析请求发送给本地缓存域名服务器,如果本地缓存域名服务器有相关记录则直接返回给客户端,否则会将DNS解析请求发送给根域服务器进行解析,根域服务器会根据域名的顶级域再将DNS解析请求委派给相对应的顶级域服务器进行解析,顶级域服务器也会根据域名的二级域或子域再将DNS解析请求委派给相对应的二级域或子域服务器进行解析,最后子域服务器会根据域名的主机名解析出相对应的IP地址,再返回给本地缓存域名服务器和客户端
四、DNS域名解析查询方式
-
递归查询(DNS解析请求一探到底,在逐层返回):
本地域名服务器先将DNS解析请求发送给根域名服务器,根域名服务器再将解析请求转发给顶级域名服务器,顶级域名服务器再将解析请求转发给相对应的二级域名或子域名服务器,最后子域名服务器根据域名的主机名解析出相对应的IP地址后,再逐层返回给本地域名服务器
-
迭代查询(DNS解析请求每次都会有相对应的响应):
本地域名服务器先将DNS解析请求发送给根域名服务器,根域名服务器会返回响应消息给本地域名服务器并告知去找相对应的顶级域名服务器
本地域名服务器再将DNS解析请求发送给相对应的顶级域名服务器,顶级域名服务器会返回响应消息给本地域名服务器并告知去找对应的二级域名或子域名服务器
最后本地域名服务器将DNS解析请求发送给相对应的子域名服务器,子域名服务器会根据域名的主机名解析出相对应的IP地址后,直接返回给本地域名服务器
四、DNS系统类型
-
缓存域名服务器
也称为DNS高速缓存服务器
通过向其他域名服务器查询获得域名→IP地址记录
将域名查询结果缓存到本地,提高重复查询时的速度
-
主域名服务器
特定DNS区域的权威服务器,具有唯一性
负责维护该区域所有域名→IP地址的映射记录
需要自行建立所负责区域的地址数据文件
-
从域名服务器
也称为辅助域名服务器,是对主域名服务器的热备份
其维护的域名→IP地址记录来源于主域名服务器
需要从主域名服务器自动同步区域地址数据库
五、BIND服务
-
BIND服务器端程序
主要执行程序:/usr/sbin/named
默认监听口:53
主配置文件
/etc/named.conf
保存DNS解析记录的数据文件位于
/var/named/
-
BIND服务控制
systemctl [status|start|stop|restart] named.service
六、搭建本地DNS服务器
- 初始化系统
vim /etc/selinux/config
- 安装bind软件包
- 修改主配置 /etc/named.conf
listen-on port 53 { any; }; #设置监听IP地址和端口
allow-query { any; }; #设置允许访问DNS服务器的客户端
- 修改区域配置文件 /etc/named.rfc1912.zones
zone "xy101.com" IN { #正向解析配置
type master;
file "xy101.com.zone"; #设置区域数据文件名称
};
zone "80.168.192.in-addr.arpa" IN { #反向解析配置,地址倒写
type master;
file "xy101.com.zone.local";
};
- 修改区域数据文件 /var/named/xy101.com.zone和/var/named/xy101.com.zone.local
cd /var/named
cp -p named.localhost xy101.com.zone #保持原属性复制(反向解析相同,仅需目的文件)
vim xy101.com.zone
....
NS xy101.com. #设置当前区域名称
A 192.168.80.20 #设置DNS服务器IP地址
www IN A 192.168.80.30 #设置正向解析的主机名与IP地址的映射记录
xxx IN CNAME www #设置主机名 xxx 是 www 的别名
vim xy101.com.zone.local
....
30 IN PTR www.xy101.com. #设置IP地址与域名的反向解析记录
- 重启named服务
systemctl restart named
若重启出错则
tail -f /var/log/messages
- 客户端设置DNS服务器地址 /etc/resolv.conf ,并验证
vi /etc/resolv.conf
nslookup
或host
或dig
若为Windows
七、搭建主从域名服务器
- 两台主机初始化系统
- 安装bind软件包
- 修改主配置 /etc/named.conf
- 修改区域配置文件 /etc/named.rfc1912.zones
主服务器的正向
反向
- 修改区域数据文件 /var/named/xy101.com.zone和/var/named/xy101.com.zone.local
主服务器的正向解析
反向
从服务器得正反向解析
- 重启named服务
systemctl restart named
遵照先主后从的顺序
- 客户端设置DNS服务器地址 /etc/resolv.conf,并验证
nslookup
或host
或dig