linux之DNS

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,即为成功

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值