name space: 命名空间,如何给互联网上的主机命名的
权威名称服务器: 存储并提供某区域 ( 整个 DNS 域或 DNS 域的一部分 ) 的实际数据。
非权威名称服务器/递归DNS服务器:(不)存储某个区域的实际数据( 转发DNS服务器都是非权威名称服务器)
Caching only: 仅缓存DNS服务器,虽然可以提供查询,但查询的内容不具有权威性,根提示域或
正向解析: 从主机名查询到IP的流程。
反向解析: 从IP反解析到主机名的流程。
zone : 要解析的域名(domain),就成为一个区域(zone)比如:baidu.com / sina.com 等。
DNS数据库: 记录要解析的区域中的所有信息。
如果DNS服务器对于请求的信息具有权威性,会将(权威答案)发送到客户端权威答案
否则(不具有权威性),如果DNS服务器在其缓存中有请求信息,则将(非权威答案)发送到客户端
如果缓存中没有该查询信息,DNS服务器将搜索权威DNS服务器以查找信息:
从根区域开始,按照DNS层次结构向下搜索,直至对于信息具有权威的名称服务器,为客户端获取答案
DNS服务器将信息传递给客户端,并在自己的缓存中保留一个副本,以备以后查找
显示来自 DNS 查找的详细信息 , 其中包括为什么查询失败 :
– NOERROR : 查询成功
– NXDOMAIN : DNS 服务器提示不存在这样的名称
– SERVFAIL : DNS 服务器停机或 DNSSEC 响应验证失败
– REFUSED : DNS 服务器拒绝回答 ( 也许是出于访问控制原因 )
dns:域名解析,name resolve,
解析: username – uid; httpd – 80; 主机名 – ip;
数据库存放域名和IP的对应关系
/etc/nsswitch.conf :为实现解析提供一个平台,真正实现名称解析的是/etc/hosts(libnss_file.so)和dns服务器(libnss_dns.so)
管理DNS的组织机构:
管理域名与IP的发展:
1). 组织将hosts放在ftp服务器上,使用时下载到本地;
2). 生成一个周期性任务(crontab),指定多久自动下载hosts文件;
3). 选择一个专门的服务器去管理域名与ip的关系,服务器不止一个;
4). 分布式管理dns
怎么去分布式管理域名与IP的关系?
www.qq.com.
1). 最大域为根域,在全球仅有13台根域服务器,{a…m}.rootserver.com;
2).顶级域(TLD):组织域(.com,.org,.net),国家域(.cn,.us,.iq,.jp),反向域
寻找域名对应ip关系的方法:分为两段式
递归:a -> b -> c c -> b -> a
迭代:a -> b a ->c c -> a
FQDN(full qulified domain name) ##正式域名
ZONE NAME TTL IN SOA 主dns的FQDN mail(
serials number ;2017010703
refresh ;刷新
retry ;未获得答案时多久再次请求
expire ;过期
na ttl ;无答案时的有效期
)
NS dns.westos.org.
hello A 172.25.254.136
music AAAA 2000::1
bbs CNAME www.westos.org
www A 172.25.254.100
www A 172.25.254.200
12 PTR www.westos.org.
westos.org. MX 10 mail.westos.org.
mail A 172.25.254.136
特别说明: 高速缓存DNS解析速度快,内部访问,不占用传输带宽。
<1>虚拟机Desktop IP:172.25.254.105
虚拟机Server IP:172.25.254.205
<2>yum源
- 服务器:172.25.254.105
<1>安装并开启DNS服务功能软件bind
[root@localhost ~]# yum install bind -y
[root@localhost ~]# systemctl start named ##敲击键盘,添加加密字符
[root@localhost ~]# systemctl stop firewalld ##关闭防火墙
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# netstat -antlupe | grep named ##查看named服务监听的端口为53
示图:查看服务端口53,此时端口只开启在lo回环接口,127.0.0.1代表回环接口ip
<2>查找并修改配置文件
[root@localhost ~]# rpm -qc bind ##查找配置文件
[root@localhost ~]# vim /etc/named.conf
11 listen-on port 53 { any; }; ##端口53开启在所有网卡接口
17 allow-query { any; }; ##允许连接访问的客户主机
18 forwarders { 172.25.254.250; }; ##转发请求到172.25.254.250主机
[root@localhost ~]# systemctl restart named
示图:此时端口53开启在所有网卡上,包括eth0网卡,IP=172.25.254.105
- 客户端:172.25.254.205
[root@server ~]# vim /etc/resolv.conf
nameserver 172.25.254.105
客户机测试:dig 域名
<1>dig www.qq.com
<2>第一次dig耗时131ms
<3>第二次dig耗时0ms
正向解析(A,MX,CNAME,负载均衡):域名——>IP
服务器&客户端:IP=172.25.254.105
<1>修改主配置文件
[root@localhost ~]# vim /etc/named.conf ##注释上次实验添加的forwarders
18 //forwarders { 172.25.254.250; }; ##注释原因:服务器自己充当DNS
[root@localhost named]# vim /etc/named.rfc1912.zones
25 zone "westos.com" IN { ##域westos.com
26 type master; ##主域名
27 file "westos.com.zone"; ##正向解析域名文件
28 allow-update { none; }; ##远程不可写
29 };
<3>配置westos.com.zone文件
[root@localhost ~]# cd /var/named
[root@localhost named]# cp -p named.localhost westos.com.zone ##复制文件内容(连同属性)到westos.com.zone,westos.com.zone本不存在,自行建立
[root@localhost named]# vim westos.com.zone ## @=westos.com @使所有不以'.'结尾的文件后加上'westos.com',以'.'结尾文件结束
$TTL 1D
@ IN SOA dns.westos.com root.westos.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
dns A 172.25.254.105 ##地址解析服务端
www A 172.25.254.205 ##指定域名解析,管理员随意写
bbs A 172.25.254.206
[root@localhost named]# systemctl restart named ##重新开启服务
客户端测试:
<1>设置客户端的dns服务器为172.25.254.105(即dns服务器ip)
vim /etc/resolv.conf
nameserver 172.25.254.105
<2>查看不同域名对应的ip
dig dns.westos.com
dig bbs.westos.com
反向解析(P解析): IP——>域名
服务器&客户端:IP=172.25.254.105
<1>修改named的配置文件(添加域)
[root@localhost named]# vim /etc/named.rfc1912.zones
46 zone "254.25.172.in-addr.arpa" IN {
47 type master;
48 file "westos.com.ptr"; ##反向解析域名文件
49 allow-update { none; };
50 };
[root@localhost named]# cd /var/named/
[root@localhost named]# cp -p named.loopback westos.com.ptr
[root@localhost named]# vim westos.com.ptr
$TTL 1D
@ IN SOA dns.westos.com. root.westos.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
dns A 172.25.254.105
205 PTR www.westos.com. ##访问172.25.254.205 对应域名
206 PTR hao.westos.com. ##访问172.25.254.206 对应域名
[root@localhost named]# systemctl restart named
客户端测试:
反向解析,测试dig -x ip
<1>设置客户端的dns服务器为172.25.254.105(即dns服务器ip)
vim /etc/resolv.conf
nameserver 172.25.254.105
<2>查看不同ip对应的域名
[root@localhost named]# dig -x 172.25.254.205
服务器&客户端:IP=172.25.254.105
注意: 此实验基于正向解析实验的基础之上
<1>修改主配置文件
[root@server named]# vim westos.com.zone
$TTL 1D
@ IN SOA dns.westos.com root.westos.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
dns A 172.25.254.105
hello CNAME www
www A 172.25.254.205 ##轮询服务器1
www A 172.25.254.206 ##轮询服务器2
<2>重启服务
[root@server named]# systemctl restart named
客户端测试:
示图:首次访问域名
示图:再次访问域名,出现轮询式访问
实验环境:
主DNS:172.25.254.106 副DNS:172.25.254.206 客户端:172.25.254.6
(1)主master-dns操作
<1>修改named的配置文件
[root@server named]# vim /etc/named.rfc1912.zones
25 zone "westos.com" IN {
26 type master; //该服务为主DNS
27 file "westos.com.zone";
28 allow-update { none; };
29 allow-transfer { 172.25.254.206; }; //允许传输区域信息某服务器上
30 also-notify { 172.25.254.206; }; //当主dns变化时自动通知某主机
31 };
[root@server named]# systemctl restart named
(2)从slave-dns操作
注意:此为新开虚拟机,需安装并重启dns服务
yum install bind -y
<1>主配置文件的修改
[root@localhost ~]# vim /etc/named.conf
13 listen-on port 53 { any; };
19 allow-query { any; };
[root@localhost ~]# vim /etc/named.rfc1912.zones
25 zone "westos.com" IN {
26 type slave; //指定为辅dns
27 masters { 172.25.254.106; }; //主dns的ip
28 file "slaves/westos.com.zone"; //主dns传输的内容存放位置
29 allow-update { none; };
30 };
[root@localhost ~]# systemctl restart named
客户端测试
测试一:
<1>修改dns为辅dns的ip
[root@foundation20 ~]# vim /etc/resolv.conf
<2>客户端查询域名对应的ip
测试二:
修改dns-master端对应的ip,并修改序列号,重启服务后自动更新到slave端,客户端检测域名对应的ip变化.
<1>修改dns-master端对应的ip并重启服务
[root@server named]# vim westos.com.zone
示图:原IP及序列号
示图:修改后的IP及序列号
<2>客户端查询域名对应的ip
DNS双向解析指内网与外网解析分离
内网:172.25.254.105 www.westos.com---172.25.254.xx
外网:any www.westos.com---192.25.254.xx
服务器:172.25.254.105
<1>修改主配置文件/etc/named.conf,实现内网与外网分离
/*
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
*/
view localnet {
match-clients { 172.25.254.105; }; ##内网访问为172网段
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
};
view Anynet {
match-clients { any; }; ##外网访问为192网段
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.inter";
};
<2>分别为内网与外网写配置文件
[root@localhost named]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inter ##外网配置文件
[root@localhost named]# vim /etc/named.rfc1912.inter
25 zone "westos.com" IN {
26 type master;
27 file "westos.com.inter";
28 allow-update { none; };
29 };
<3>分别为内网与外网域名文件
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p westos.com.zone westos.com.inter
[root@localhost named]# vim westos.com.inter ##外网域名文件
示图:通过%s/172/192/g 批量替换
<4>设置服务端(内网)的dns服务器为172.25.254.105(即dns服务器ip)
[root@localhost named]# vim /etc/resolv.conf
nameserver 172.25.254.105
客户端:any ip
<4>设置客户端(外网)的dns服务器为172.25.254.105(即dns服务器ip)
[root@server ~]# vim /etc/resolv.conf
nameserver 172.25.254.105
测试:
内网主机:172.25.254.105
[root@localhost named]# dig www.westos.com
外网主机:any ip
[root@server named]# dig www.westos.com
实验环境:
<1>Selinux状态:Disabled
<2>/etc/named.conf 配置文件删除上一实验的配置,恢复原态
实验内容:
服务器:172.25.254.205
[root@localhost Desktop]# vim /etc/named.rfc1912.zones
25 zone "westos.com" IN {
26 type master;
27 file "westos.com.zone";
28 allow-update { 172.25.254.205; }; ##允许该主机远程动态更新dns
};
[root@localhost Desktop]# cd /var/named/
[root@localhost named]# cp -p westos.com.zone /mnt ##备份
[root@localhost named]# chmod g+w /var/named/ ##组添加权限
注意:
1)添加权限前:
[root@localhost named]# ls -ld /var/named/
drwxr-x--- 5 root named 4096 Apr 26 01:37 /var/named/
2)添加权限后:
[root@localhost named]# ls -ld /var/named/
drwxrwx--- 5 root named 4096 Apr 26 01:37 /var/named/
[root@localhost named]# systemctl restart named
客户端测试:172.25.254.205
注意: nsupdate是一个动态DNS更新工具.可以向DNS服务器提交更新记录的请求.它可以从区文件中添加或删除资源记录.而不需要手动进行编辑区文件.
[root@server ~]# nsupdate
> server 172.25.254.105
> update delete hello.westos.com ##删除
> send
> update add hello.westos.com 86400 A 172.25.254.222 ##添加
> send
> quit
实验环境:
在上一实验基础上,执行如下操作
[root@localhost named]# rm -fr westos.com.zone*
[root@localhost named]# cp -p /mnt/westos.com.zone .
服务器:172.25.254.105
[root@localhost named]# cd /mnt
[root@localhost mnt]# ls
westos.com.zone
[root@localhost mnt]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westos ##//生成对称加密文件,-a指定加密算法,-n,nametype,-b,加密字符数
[root@localhost mnt]# cp -p /etc/rndc.key /etc/westos.key
[root@localhost mnt]# vim /etc/westos.key
[root@localhost mnt]# vim /etc/named.conf ##主配置文件指明密码文件
42 include "/etc/westos.key"; ##密码文件
**注意:**该配置放在logging模块前面,配置是按顺序读取的;
[root@localhost mnt]# vim /etc/named.rfc1912.zones
25 zone "westos.com" IN {
26 type master;
27 file "westos.com.zone";
28 allow-update { key westos; }; //只允许有钥匙的主机对该dns进行动态更新;
29 allow-transfer { 172.25.254.205; };
30 also-notify { 172.25.254.205; };
31 };
[root@localhost mnt]# systemctl restart named
[root@localhost mnt]# scp Kwestos.+157+20421.* [email protected]:/mnt/ //发送钥匙给允许动态更新该dns的主机;
客户端测试:172.25.254.205
[root@server mnt]# nsupdate Kwestos.+157+20421.private
> server 172.25.254.105
> update add music.westos.com 86400 A 172.25.254.222
> send
> quit
准备工作: 该实验是基于实验7的基础上操作的,要确保基于key认证远程更新dns成功。
实验环境:
在上一实验基础上,执行如下操作
[root@localhost named]# rm -fr westos.com.zone*
[root@localhost named]# cp -p /mnt/westos.com.zone .
[root@localhost named]# systemctl restart named
服务器:IP=172.25.254.105
<1>安装并配置dhcp服务
[root@localhost ~]# yum install dhcp -y
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcp.conf
[root@localhost ~]# vim /etc/dhcp/dhcp.conf
7 option domain-name "westos.com";
8 option domain-name-servers 172.25.254.105;
14 ddns-update-style interim;
30 subnet 172.25.254.0 netmask 255.255.255.0 {
31 range 172.25.254.95 172.25.254.99; ##dhcp自动分配ip范围
32 option routers 172.25.254.105;
34 key westos {
35 algorithm hmac-md5;
36 secret 8yt5zpZhgUhBH/Lw6J6o1A==; ##key认证密码
37 };
38 zone westos.com. {
39 primary 127.0.0.1; ##回环接口即可,内部网络
40 key westos;
41 }
<2>重启服务
[root@localhost ~]# systemctl restart named
[root@localhost ~]# systemctl restart dhcpd
[root@localhost ~]# systemctl stop firewalld.service ##关闭防火墙
客户端测试:ip=172.25.254.205
注意:拔网线
<1>设置客户端获取ip的方式为dhcp获取;
<2>当server端的dhcp配置成功后,重启网络,查看ip,更改主机名为xxx.westos.com,dig 主机名,看是否解析出对应的ip;
[root@localhost ~]# hostnamectl set-hostname hehe.westos.com ##更改主机名
<3>修改server端dhcp分配的区域,重复<2>操作,如果dig 主机名的结果随着ip的改变而改变,说明实验成功。
示图:dig主机名的ip为主机dhcp动态获取的ip,则实验成功.