一、BIND域名服务基础
根据域名查找出IP地址的流程:
- 先使用主机本地的hosts文件查找相关记录
- 再使用DNS服务进行解析
域名结构是一种树形结构,以 根域. 为起点
主机名.子域.[二级域].顶级域.
根域
DNS域名的功能:
- 正向解析:根据域名查找对应的IP地址
- 反向解析:根据IP地址查找对应的域名
DNS的端口: TCP/53(连接DNS服务器) UDP/53(解析DNS)
DNS域名解析工作原理:
客户端会先将DNS解析请求发送给本地缓存域名服务器,如果本地缓存域名服务器有相关记录则直接返回给客户端,否则会将DNS解析请求发送给根域名服务器进行解析,根域名服务器会根据域名的顶级域再将DNS解析请求委派给相对应的顶级域名服务器进行解析,顶级域名服务器也会根据域名的二级域或子域再将DNS解析请求委派给相对应的二级域名或子域名服务器进行解析,最后子域名服务器会根据域名的主机名解析出相对应的IP地址,再返回给本地缓存域名服务器和客户端。
DNS域名解析查询方式:
递归查询:(简单来说就是将DNS解析请求一探到底,再逐层返回)
本地域名服务器先将DNS解析请求发送给根域名服务器,根域名服务器再将解析请求转发给相对应的顶级域名服务器,顶级域名服务器再将解析请求转发给相对应的二级域名或子域名服务器,最后子域名服务器会根据域名的主机名解析出相对应的IP地址后,再逐层返回给本地域名服务器。
迭代查询:(简单来说就是每次DNS解析请求都会用相对应的响应回复)
本地域名服务器先将DNS解析请求发送给根域名服务器,根域名服务器会返回响应消息给本地域名服务器并告知去找相对应的顶级域名服务器;
本地域名服务器再将DNS解析请求发送给相对应的顶级域名服务器,顶级域名服务器会返回响应消息给本地域名服务器并告知去找相对应的二级域名或子域名服务器
最后本地域名服务器将DNS解析请求发送给相对应的子域名服务器,子域名服务器会根据域名的主机名解析出相对应的IP地址后,直接返回给本地域名服务器
二、使用BIND构建域名服务器
搭建本地DNS服务器
1)初始化系统
2)安装 bind 软件包
3)修改主配置 /etc/named.conf
listen-on port 53 { any; }; #设置监听IP地址和端口
allow-query { any; }; #设置允许访问DNS服务器的客户端
4)修改区域配置文件 /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";
};
5)修改区域数据文件 /var/named/xy101.com.zone
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地址与域名的反向解析记录
5)重启named服务
6)客户端设置DNS服务器地址 /etc/resolv.conf ,并验证 nslookup host dig
搭建主从域名服务器
#主服务器配置
vim /etc/named.rfc1912.zones
zone "xy101.com" IN {
type master;
file "xy101.com.zone";
allow-transfer { 192.168.80.30; }; #允许从服务器同步数据文件
};
#从服务器配置(不需要配置区域数据文件)
vim /etc/named.rfc1912.zones
zone "xy101.com" IN {
type slave; #设置为从服务器类型
masters { 192.168.80.20; }; #指定主服务器地址
file "slaves/xy101.com.zone"; #设置同步的数据文件保存路径
};