· DNS服务基础
· 特殊解析
· DNS子域授权
· DNS主从架构
DNS服务基础
DNS 域名---->IP地址
DNS解析的作用
· 为什么需要DNS系统
- www.baidu.com 与192.168.5.5,哪个更好记?
- 互联网中的114查号台/导航员
· DNS服务器的功能
- 正向解析: 根据注册的域名查找其对应的IP地址
- 反向解析: 根据IP地址查找对应的注册域名,不常用
www.qq.com. 浏览器会默认给域名的最后加上.
www.baidu.com. 浏览器会默认给域名的最后加上.
com后面的.就是根域名
· DNS服务器的分类:
根域名服务器(一共13台) 一级DNS服务器 二级DNS服务器 三级DNS服务器
· DNS的分布式结构
根域名: .
一级域名: .cn(中国) .us(美国) .tw(台湾) .hk(香港) .com
二级域名: .net.cn(中国运营商) .com.cn(中国商业组织) .edu.cn(中国教育机构)
三级域名: .haha.com.cn .sb.com.cn
完全合格的主机名(FQDN): 站点名 + 注册的域名
www.haha.com.cn
DNS域名管理
· IANA,互联网数字分配机构
- Internet Assigned Numbers Authority
- 整个域名系统的最高权威机构
- 主管DNS根、.int、.arpa等国际化域名资源
· CANNIC,中国互联网网络信息中心
- China Internet Network Infirmation Center
- 主管国家顶级域 .cn
BIND域名服务
· BIND(Berkeley Internet Name Daemon)
- 伯克利 Internet 域名服务
- 官方站点:
httpts ://www.isc.org/
· BIND服务端程序
- 主要执行程序:
/usr/sbin/named
- 系统服务:
named
- 默认端口:
TPC/UDP 53
- 运行时的虚拟根环境:
/var/named/chroot/
· 主配置文件:/etc/named.conf
(设置负责解析的域名)
· 地址库文件:/var/named/...
(设置完全合格的域名和IP地址对应关系)
虚拟机A来创建服务
1. 安装软件包
yum -y install bind-chroot bind
rpm -qa bind* 查看所有已经安装的软件包
2.修改主配置文件
vim /etc/named.conf
配置文件修改完成的完整内容:
options {
directory "/var/named"; # 定义地址库存放路径
};
zone "tedu.cn" IN { # 定义负责解析tedu.cn域名
type master; # 类型:master(主服务器),salve(从服务器)
file "tedu.cn.zone"; # 地址库下的文件名称
};
建立地址库文件
- 保证named用户对地址库文件的读权限
- 所有的域名必须以点结尾
- 如果没有以点作为结尾,那么默认会补全本地址库所负责的域名
ls /var/named
# chroot data dynamic named.ca named.empty named.localhost named.loopback slaves
创建地址库文件
考虑到完全问题,dns的服务所有的运行都会以named这个身份进行运行!!!!
如果直接用cp命令复制,不加-p选项,那么复制的所属主和所属组都是root,named对复制的文件是没有可读权限的。
cp -p /var/named/named.localhost /var/named/tedu.cn.zone (-p)保持文件权限不变进行拷贝
ls -l /var/named/tedu.cn.zone
# -rw-r----- 1 root named 152 Jun 21 2007 /var/named/tedu.cn.zone
vim /var/named/tedu.cn.zone
tedu.cn. NS svr7 # 声明DNS服务器为svr7
svr7 A 192.168.4.7 # svr7解析结果为192.168.4.7
www A 1.1.1.1 # 解析记录 完整写法(www.tedu.cn.)
vip A 2.2.2.2 # 解析记录 完整写法(vip.tedu.cn.)
3. 启动NSD服务
systemctl start named
虚拟机B来解析服务
/etc/resolv.conf
添加一些解析主机的记录
echo namserver 192.168.4.7 > /etc/resolv.conf 添加虚拟机A的主机域名解析记录
# 我们在寻找www.tedu.cn域名的时候,虚拟机B会自动去这个文件目录下的去寻找DNS(虚拟机A)的服务器IP地址
nslookup vip.tedu.cn nslookup解析工具
# Server: 192.168.4.7 DNS的服务器的域名解析
# Address: 192.168.4.7#53 DNS服务器的IP地址
# Name: vip.tedu.cn
# Address: 2.2.2.2
nslookup www.tedu.cn 解析www.tedu.cn域名
# Server: 192.168.4.7
# Address: 192.168.4.7#53
# Name: www.tedu.cn
# Address: 1.1.1.1
多域名解析
在虚拟机A已经搭建好DNS服务的基础之上再搭建一个新的域名解析
2.修改主配置文件
vim /etc/named.conf
配置文件修改完成的完整内容:
options {
directory "/var/named"; # 定义地址库存放路径
};
zone "tedu.cn" IN { # 定义负责解析tedu.cn域名
type master; # 类型:master(主服务器),salve(从服务器)
file "tedu.cn.zone"; # 地址库下的文件名称
};
zone "lol.cn" IN { # 定义负责解析tedu.cn域名
type master; # 类型:master(主服务器),salve(从服务器)
file "lol.cn.zone"; # 地址库下的文件名称
};
建立地址库文件
cp -p /var/named/named.localhost /var/named/lol.cn.zone (-p)保持文件权限不变进行拷贝
vim /var/named/lol.cn.zone
tedu.cn. NS host # 声明DNS服务器为svr7
host A 192.168.4.7 # svr7解析结果为192.168.4.7
nana A 1.1.1.1 # 解析记录 完整写法(nana.tedu.cn.)
dada A 2.2.2.2 # 解析记录 完整写法(dada.tedu.cn.)
3. 启动NSD服务
systemctl restart named
虚拟机B已经添加虚拟机A的主机域名解析记录,直接做测试就可以了
nslookup nana.lol.cn
# Server: 192.168.4.7
# Address: 192.168.4.7#53
# Name: nana.lol.cn
# Address: 1.1.1.1
nslookup www.tedu.cn
# Server: 192.168.4.7
# Address: 192.168.4.7#53
# Name: www.tedu.cn
# Address: 1.1.1.1
这时候我们发现,域名解析器可以同时解析.lol.cn和.tedu.cn结尾的域名了
- 特殊解析 (地址库文件中记录的特殊写法)
- DNS轮询
在虚拟机A的地址库文件在添加三条新的域名记录
vim /var/named/lol.cn.zone
lol.cn. NS host
host A 192.168.4.7
www A 3.3.3.3
www A 4.4.4.4
www A 5.5.5.5
systemctl restart named
在虚拟机B中做测试
nslookup www.lol.cn
# Server: 192.168.4.7
# Address: 192.168.4.7#53
# Name: www.lol.cn
# Address: 3.3.3.3
# Name: www.lol.cn
# Address: 4.4.4.4
# Name: www.lol.cn
# Address: 5.5.5.5
- 泛域名解析
泛域名解析记录的优先级是最低的。如果有专门的匹配记录,那就按匹配的记录进行匹配。
如果没有专门匹配到的站点,那就按泛域名进行解析。
在虚拟机A的地址库文件添加通配符*
vim /var/named/lol.cn.zone
lol.cn. NS host
host A 192.168.4.7
nana A 1.1.1.1
* A 6.6.6.6 # 通配符*的优先级是最低的
systemctl restart named
在虚拟机B中做测试
nslookup wwhahaha.lol.cn
# Server: 192.168.4.7
# Address: 192.168.4.7#53
# Name: wwhahaha.lol.cn
# Address: 6.6.6.6
我们虚拟机B中输入任意站点且以.lol.cn结尾的域名,DNS服务器都会返回为6.6.6.6的IP地址
- 设置解析记录的别名
在虚拟机A的地址库文件添加mail--->nana
vim /var/named/lol.cn.zone
lol.cn. NS host
host A 192.168.4.7
nana A 1.1.1.1
mail CNAME nana # 给站点名nana添加一个mail的别名
systemctl restart named
虚拟机B中做测试
nslookup mail.lol.cn
# Server: 192.168.4.7
# Address: 192.168.4.7#53
# mail.lol.cn canonical name = nana.lol.cn.
# Name: nana.lol.cn
# Address: 1.1.1.1
DNS主从架构搭建
- 从服务器可以提供域名解析。
- 从服务器要备份主服务器DNS数据。
DNS服务器常见的资源解析记录类型都有哪些?
NS : 声明域名服务器
A : 正向解析记录
CNAME : 别名解析记录
。。。。。。
虚拟机 A 主DNS服务器 lol.cn
虚拟机 B 从DNS服务器 lol.cn
- 虚拟机 A设为主服务器
1. 修改主配置文件,指定从服务器的IP地址
vim /etc/named.conf
options {
directory "/var/named"; # 定义地址库的存放路径
allow-transfer { 192.168.4.207; }; # 指定从服务器的IP地址
};
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
zone "lol.cn" IN {
type master;
file "lol.cn.zone";
};
named-checkconf /etc/named.conf 检查主配置文件是否有误
2. 在虚拟机A的地址库文件中声明从DNS服务器的IP地址
vim /var/named/lol.cn.zone
lol.cn. NS host
host A 192.168.4.7
lol.cn NS pc207
pc207 A 192.168.4.207
nana A 1.1.1.1
dada A 2.2.2.2
www A 3.3.3.3
www A 4.4.4.4
www A 5.5.5.5
* A 6.6.6.6
mail CNAME nana
named-checkzone lol.cn /var/named/lol.cn.zone 检查地址库配置文件是否有误
# zone lol.cn/IN: loaded serial 0
# OK
systemctl restart named
- 虚拟机B设为从服务器
firewall-cmd --set-default-zone=trusted 关闭防火墙
setenforce 0 关闭selinux
1.装包
yum -y install bind bind-chroot
2.修改配置文件
vim /etc/named.conf
options {
directory "/var/named"; 指定地址库的存放路径
};
zone "lol.cn" IN {
type slave; 该服务器的类型是从服务器
file "/var/named/slaves/lol.cn.slave"; 指定主服务器传输的地址库文件的存放路径
masters { 192.168.4.7; }; 指定主服务器的IP地址
masterfile-format text; 地址库文件以明文的方式存储
};
# ls -ld /var/named/slaves 指定主服务器传输给从服务器的地址库文件的存放路径
# drwxrwx--- 2 named named 6 Oct 13 23:54 /var/named/slaves
# 我们在设置虚拟机B接收虚拟机A的传输的地址库文件的内容时,文件的父目录是要具备读写权限的
# 所以我们可以将虚拟机A传输的地址库文件内容保持到虚拟机B的/var/named/slaves/lol.cn.salv目录下
cat /var/named/slaves/lol.cn.slave 查看虚拟机A的地址库文件内容
# $ORIGIN .
# $TTL 86400 ; 1 day
# lol.cn IN SOA lol.cn. rname.invalid. (
# 0 ; serial
# 86400 ; refresh (1 day)
# 3600 ; retry (1 hour)
# 604800 ; expire (1 week)
# 10800 ; minimum (3 hours)
# )
# NS host.lol.cn.
# $ORIGIN lol.cn.
# * A 6.6.6.6
# lol.cn NS pc207
# dada A 2.2.2.2
# host A 192.168.4.7
# mail CNAME nana
# nana A 1.1.1.1
# pc207 A 192.168.4.207
# www A 3.3.3.3
# A 4.4.4.4
# A 5.5.5.5
echo nameserver 192.168.4.207 >> /etc/resolv.con 将虚拟机B的DNS服务器添加到虚拟机B的域名解析记录中
systemctl restart named
DNS主从数据同步
虚拟机A
vim /var/named/lol.cn.zone
。。。。。。。
dada A 10.10.10.10 我们把主服务器虚拟机A的域名dada.lol.cn.的IP地址更改为10.10.10.10
。。。。。。。
systemctl restart named 重启主服务器虚拟机A后,我们再做一次测试
虚拟机B
nslookup dada.lol.cn 192.168.4.207 使用从服务器解析域名====》2.2.2.2
# Server: 192.168.4.207
# Address: 192.168.4.207#53
# Name: dada.lol.cn
# Address: 2.2.2.2
nslookup dada.lol.cn 192.168.4.7 使用主服务器解析域名====》10.10.10.10
# Server: 192.168.4.7
# Address: 192.168.4.7#53
# Name: dada.lol.cn
# Address: 10.10.10.10
我们发现主NDS服务器虚拟机A的域名数据更改之后,从DNS服务器虚拟机B的域名数据是没有同步进行更新的。
那么我们有什么解决办法呢?
$TTL 1D # TTL 数据的生命生存周期为1天(发送数据如果没人接收,那么1天之后,就把数据自动销毁)
@ IN SOA @ rname.invalid. ( # IN:互联网 SOA:授权信息 @:当前区域的域名lol.cn.
0 ; serial # 数据的版本号
1D ; refresh # 多长时间进行数据的获取
1H ; retry # 传送数据失败的时间间隔
1W ; expire # 真正数据接收之后失效的时间
3H ) ; minimum # 失效记录的记录时间
lol.cn. NS host
host A 192.168.4.7
。。。。。。。
cat /var/named/slaves/lol.cn.slave 查看从服务器虚拟机B中已经存在的版本号
虚拟机B测试
nslookup dada.lol.cn 192.168.4.207 刷新成功
# Server: 192.168.4.207
# Address: 192.168.4.207#53
# Name: dada.lol.cn
# Address: 25.25.25.25
nslookup dada.lol.cn 192.168.4.7 刷新成功
# Server: 192.168.4.7
# Address: 192.168.4.7#53
# Name: dada.lol.cn
# Address: 25.25.25.25
DNS子域授权
递归解析
-
递归查询 :客户端发送请求给首选DNS服务器,首选DNS服务器与其他DNS服务器交互,最终将解析结果带回来过程。
-
迭代查询 : 客户端发送请求给首选DNS服务器,首选DNS服务器告知下一个DNS服务器地址
浏览器DNS查找顺序
-
浏览器DNS缓存–>本地系统DNS缓存–>本地计算机HOSTS文件–>ISP(互联网供应商) DNS缓存—>递归or迭代搜索
-
/etc/hosts
文件存放的是IP地址与域名之间的对应关系
服务器DNS查找顺序
ping www.baidu.com
# PING www.wshifen.com (45.113.192.101) 56(84) bytes of data.
# 64 bytes from 45.113.192.101 (45.113.192.101): icmp_seq=1 ttl=128 time=236 ms
# 64 bytes from 45.113.192.101 (45.113.192.101): icmp_seq=2 ttl=128 time=235 ms
1. 先查找系统缓存
2. 再查找/etc/hosts文件
3. 最后再查找/etc/resolv.conf文件 指定运营商的DNS地址
DNS查询的工作方式