DNS简介:
DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。
功能:每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议的功能。
主机名到IP地址的映射有两种方式:
1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。
注意:如果dig出不来结果,注意查看解析/etc/resolv.conf
实验环境:
rhel7.3 , selinux均为关闭状态,server的firewalld关闭
foundation150: 172.25.254.44
server: 172.25.254.144
server2: 172.25.254.250
server3: 172.25.254.3
操作步骤:
1.搭建DNS
yum install -y bind ##安装服务
rpm -lq bind ##可查看dns配置文件
systemctl start named
ll /etc/rndc.key
2.高速缓存
DNS服务器可以高速缓存从其他DNS服务器收到的记录,将最近查询的信息保存在本地,第二次查询此信息的时候,会从本地拿取数据,缩短访问时间,提高工作效率(本实验中第一次访问www.taobao.com时,因为本地不知道这域名,故数据信息是从114.114.114.114中拿取的,因为本地无缓存,访问过后,数据就被存放在172.25.254.144了,所以第二次是从本地拿取的)
保证服务器可以上网(真机44可以上网,要开火墙,要伪装地址,要写nameserver 114.114.114.114)
(vim /etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=172.25.254.44 ##写网关,能连接外网
DNS1=144.144.144.144 ##写dns,能解析不知道的域名,114.114.114.114相当于什么于明都知道的一台机器ip
systemctl restart network
ping www.baidu.com (能ping通)
vim /etc/named.conf
13 listen-on port 53 { any; }; ##服务器开启的网段
19 allow-query { any; }; ##服务器允许访问的网段
20 forwarders { 114.114.114.114; }; ##服务器在解析不出的时候访问别的网段
30 dnssec-validation no; ##不进行dnssec确认
vim /etc/resolv.conf
nameserver 172.25.254.144 ##ip是要申请的服务器的ip
测试:让客户端能dig www.taobao.com
第一遍dig发现耗时比较长
第二遍dig www.taobao.com 第二遍dig发现速度很快,这是因为第一遍idg之后有了本地缓存
**注意:火墙的设置(关闭火墙或设置服务允许)
firewall-cmd --list-all ##列出火墙信息
firewall-cmd --permanent -add-service=dns ##添加dns允许通过火墙,修改了配置文件
firewall-cmd --reload ##重新加载配置文件
3.正向解析
通过DNS将域名解析成ip地址
vim /etc/named.rfc1912.zones ##对应要维护的域westos.com的配置文件为westos.com.zone
25 zone"westos.com" IN {
26 type master;
27 file "westos.com.zone";
28 allow-update { none; };
29 };
cd /var/named
cp -p named.localhost westos.com.zone
vim /var/named/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.144 ##从172.25.254.144处得到解析
www A 172.25.254.111 ##解析www.westos.com之后的ip ,随意设定一个ip即可
“@”符表示在子配置文件中所设定的那个域名(westos.com),该文件中所有的域名如dns.westos.com的结尾都需要添加一个“.”,否则会被该@符读取
第一行的TTL是一种设定,后面的1D表示该记录文件里面的各项记录的预设TTL值为86400秒,即一天
IN定义出目前的记录类型是属于internet class的
SOA表示目前区域的授权记录开始,其后面的值为区域授权主机和管理信箱
serial表示修改的时间及次数,当自己在修改记录文件时需要更改serial的值,否则修改无法被slave识别;
refresh表示数据多久进行一次更新
retry表示如果slave的对数据更新失败后,多久后进行重试
expire记录逾期时间,即超过该时间slave未与master进行联系,系统会放弃retry并标记该数据标识为过期
minimum最小预设TTL的值,如果在文件开头没有设置TTL的值,将以此处的值为准
vim /etc/resolv.conf
nameserver 172.25.254.144
systemctl restart named
测试:dig www.westos.com
***CNAME解析轮循
CNAME 被称为规范名字。这种记录允许您将多个名字映射到同一台计算机。 通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“r0WSPFSx58.”(A记录)。 它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。
同样的方法可以用于当您拥有多个域名需要指向同一服务器IP,此时您就可以将一个域名做A记录指向服务器IP,然后将其他的域名做别名(即CNAME)到A记录的域名上;那么当您的服务器IP地址变更时,您就可以不必对一个一个域名做更改指向了,只需要更改A记录的那个域名到服务器新IP上,其他做别名(即CNAME)的那些域名的指向将自动更改到新的IP地址上(以上操作均需要在DNS处执行)
比如这个实验,若www.westos.com有两个ip地址,但是解析服务器都要是172.25.254.144,则此时就可以用CNAME解析轮循,将www.westos.com设置别名bbs.westos.com
以此处的westos.com为例,这次我们加入不一样的CNAME
两次dig,发现是172.25..254.144解析,但是有两个地址,并且是轮循的
4.反向解析
通过DNS将ip地址解析成为域名
去掉或注释掉正向解析,修改配置文件,在最后添加以下内容
vim /etc/named.rfc1912.zones
49 zone "254.25.172.in-addr.arpa" IN {
50 type master;
51 file"westos.com.ptr";
52 allow-update { none; };
53 };
拷贝一份反向解析westos.com.ptr的文件,并编辑
cp -p named.loopback westos.com.ptr
vim /var/named/westos.com.ptr
$TTL 1D
@ IN SOA dns.westos.com. root.westos.com. (
0 ;serial
1D ;refresh
1H ;retry
1W ;expire
3H ) ;minimum
dns A 172.25.254.144
111 PTR bbs.westos.com
110 PTR www.westos.com
vim /etc/resolv.conf
nameserver 172.25.254.144
systemctl restart named
测试:dig -x 172.25.254.111
dig -x 172.25.254.110
***DNS中的mail
vim /var/named/westos.com.zone
dns A 172.25.254.144
www A 172.25.254.144
bbs CNAME linux
linux A 172.25.254.111
linux A 172.25.254.222
westos.com. MX 1 172.25.254.250
mail root@westos.com
Subect: cwavvard
dsdv
vdsv
.
EOF
mailq
测试:
dig -t mx westos.com
5.双向解析
实现内网主机和外网主机访问同一网站域名,定义到不同服务器
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inter
vim /etc/named.rfc1912.inter
vim /etc/named.rfc1912.zones
cd /var/named/
cp -p westos.com.zone westos.com.inter
vim westos.com.zone
vim westos.com.inter ##配置好内网和外网
vim /etc/named.conf
注释之后,往后面添加
61 view localnet { ##本地网
62 match-clients { 172.25.254.250; }; ##匹配17225.254.250
63 zone "." IN {
64 type hint;
65 file "named.ca";
66 };
67 include "/etc/named.rfc1912.localnet";
68 };
69
70 view internet { ##外网
71 match-clients { any; }; ##匹配网外所有
72 zone "." IN {
73 type hint;
74 file "named.ca";
75 };
76 include "/etc/named.rfc1912.zones";
77 };
在172.25.254.250做解析
vim /etc/resolv.conf
nameserver 172.25.254.144
测试:dig www.westos.com ##出现的是内网解析的结果
在另一客户端172.25.254.3
vim /etc/resolv.conf
nameserver 172.25.254.144
dig www.westos.com ##出现的是外网解析的结果,即dns.westos.com 为192.25.254.144,CNAME轮循为192的两个ip
6.DNS的主从解析配置
DNS服务器一般在用的时候,为了缓解服务器的压力,多使用一个主DNS服务器,多个副DNS服务器,这些DNS服务器就组成了一个DNS集群。
注释掉之前在/etc/named.conf中加的内容,将注释掉的内容加回来
这里开启一个新的主机,server3
安装bind
编辑配置文件/etc/named.conf
编辑子配置文件/etc/named.rfc1912.zones
开启服务,此主机的firewalld为关闭状态
若主DNS服务器的内容改变了,那么辅助DNS服务器并不能同步更新,这样实验会出现错误,所以我们需要在主DNS服务器上改写文件,以便辅助服务器能同步更新,将辅助服务器ip加到文件中去
注意:在两台DNS服务器同步数据时,系统不是直接读取整个文件的内容,而是比较两边‘serial’前面的数字是否一致,因为这样比较节约时间,如果两台DNS服务器‘serial’前面的数字相同,那么就不用同步,如果不同,则需要同步。所以每次修改一次文件内容,都要修改‘serial‘前面的数字,最长十位数,为了测试方便也顺便把/var/named/westos.com/zone中的CNAME部分去掉了,这里就修改主DNS的/var/named/westos.com.zone
测试,在主DNS中dig www.westos.com
在辅助DNS中dig www.westos.com
结果一样,说明已经同步过来了
7.DNS更新
在主DNS上
vim /etc/named.rfc1912.zones ##允许172.25.254.3同步更新
提前cp一份westos.com.zone,以备需要之时
chmod g+w /var/named ##添加权限
cd /var/named
setsebool -P named_write_master_zones on ##设置其他用户可以读写的权限,此前getenforce必须为enforcing状态
在辅助DNS上面更新推送
重启主DNS服务,查看westos.com.zone是否推送更新
在主DNS服务器dig test.westos.com
在辅助DNS服务器dig test.westos.com
如果删除test.westos.com,主DNS会dig不到
在辅助DNS服务器上update delete test.westos.com那么主DNS的文件里也会同步删除test.westos.com,此时主DNS服务器就不能dig到了
8.DNS加密更新
在做此类型更新之前需要保持主dns的/var/named目录以及辅dns的/var/named/slaves目录的“纯净“
rm -fr /var/named/westos.com.zone.inter /var/named/westos.com.zone.jnl
cp -p /etc/rndc.key /etc/westos.key ##生成一份westos.key文件
cd /mnt ##在/mnt下生成钥匙
dnssec-keygen -a HAMC-MD5 -b 128 -n HOST westos ##生成密码和钥匙
-a表示加密模式,-b表示加密字节,-n HOST表示类型是HOST,名称是westos
注意:如果生成钥匙期间卡住了,此时重新开一个终端,随机输入字符即可
查看密钥是否跟文件一致,若不一致就编辑文件
编辑/etc/named.conf文件,加入/etc/westos.key
编辑子配置文件,设置允许更新为key westos
重启服务
远程拷贝钥匙给辅助DNS服务器
辅助DNS收到私钥后进行测试:
nsupdate -k Kwestos.+157+19548.private
server 172.25.254.144
update add hello.westos.com 86400 A 172.25.254.222
send
在主DNS重启服务,查看文件是否已经更新
测试:dig hello.westos.com
9.DNS动态域名解析(DDNS)
域名解析是把域名指向网站空间ip,让人们通过注册的域名可以方便的访问到网站的一种服务。
动态域名解析是将用户的动态ip地址映射到一个固定的域名解析服务上。DDNS捕获用户每次变化的ip地址,然后将其与主机的域名对应,这样域名就可以解析到非固定ip的服务器上了。简单来说,就是不管用户什么时候上网,以什么方式上网,得到一个什么样的ip地址,ip地址是否发生变化,它都能保证通过一个固定的域名就能访问到用户的计算机。
意义:这意味着在动态DNS服务下的计算机就好像具有了固定的ip地址可以充当互联网服务器了。对于广大互联网用户和中小型企业来说这会是一个很有吸引力的服务了。
在主DNS中要有一个“干净”的环境
rm -fr /var/named/westos.com.inter /var/named/westos.com.inter.jnl
rm -fr /var/named/westos.com.zone
cp -p /mnt/westos.com.zone /var/named/westos.com.zone ##删除之前实验改的westos.com.zone,再重新拷贝一份/mnt下的过来
编辑/var/naemd/westos.com.zone如下
安装dhcp服务
拷贝文件,编辑文件
开启dhcp服务
将server3的主机名修改为hello.westos.com,并且设置ip方式为dhcp,重启网络
查看到动态获取的ip
在主机dig hello.westos.com,如果得到ip为dhcp分配的ip,即为成功