一文领会DNS服务

linux高级—DNS服务

一、DNS服务介绍

DNS(Domain Name System)域名系统,在TCP/IP网络中有非常重要的地位,能够提供域名与IP地址的解析服务

  • DNS是一个分布式的数据库,命名系统会采用层次的逻辑结构
  • DNS是划分了域名空间
  • 作用:进行域名解析
  • 在这里插入图片描述

二、层级架构

在这里插入图片描述

举例:

对于www.baidu.com这个域名其实是www.baidu.com.
域名的层级架构为
	根		 	.
	顶级域名	com
	二级域名	baidu
	三级域名	www

由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法;任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name);这里,“域”(domain)是名字空间中一个可被管理的划分。

  • 根域:标识为点(.)现如今全球一共投放13个根服务器,可以指挥Firefox或互联网 Explorer这样的Web浏览器和电子邮件程序控制互联网通信
 全世界的这13台根服务器;1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理。
​ 换句话说——攻击整个因特网最有力、最直接,也是最致命的方法恐怕就是攻击根域名服务器了
​ 命名:以英文字母A到M依序命名,格式为“字母.root-servers.net”
  • 顶级域:(Top Level Domain,简称TLD)分为以下三类

    • 国家顶级域名
    .cn.   china
    .hk.   hongkong 香港
    .ko    korea
    .jp    Japan
    .us      美国
    .uk  英国
    .au  澳大利亚
    .tw  台湾
    
    • 通用顶级域名:最常见的通用顶级域名有7个
    com(公司企业、商业机构)
    net(网络服务机构)
    org(非营利组织)
    int(国际组织)
    gov(美国的政府部门)
    mil(美国的军事部门)
    
  • 二级域(注册域):可以由个人或组织申请注册

baidu
qq
aliyun
huawei等
  • 三级域(子域):服务器网站名的代表
www
bbs等
  • 主机名:常用于表示具体的主机
s1.www.baidu.com. 中的s1就是主机名

三、DNS记录类型

(1)A记录(Address)正向解析
A记录是将一个主机名(全称域名FQDN)和一个IP地址关联起来。这也是大多数客户端程序默认的查询类型。

(2)PTR记录(Pointer)反向解析
PTR记录将一个IP地址对应到主机名(全称域名FQDN)。这些记录保存在in-addr.arpa域中。

(3)CNAME记录(Canonical Name)别名
别名记录,也称为规范名字(Canonical Name)。这种记录允许您将多个名字映射到同一台计算机。

(4)MX记录(Mail eXchange)
MX记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据 收信人的地址后缀来定位邮件服务器。MX记录也叫做邮件路由记录,用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操控所有的邮箱设置。
当有多个MX记录(即有多个邮件服务器)时,则需要设置数值来确定其优先级。通过设置优先级数字来指明首选服务器,数字越小表示优先级越高。

(5)NS记录(Name Server)
NS(Name Server)记录是域名服务器记录,也称为授权服务器,用来指定该域名由哪个DNS服务器来进行解析。
将网站的NS记录指向到目标地址,在设置NS记录的同时还需要设置目标网站的指向,否则NS记录将无法正常解析
NS记录优先于A记录。即,如果一个主机地址同时存在NS记录和A记录,则A记录不生效。

四、DNS的测试工具

1、ping

2、host

3、dig

4、nslookup

五、DNS解析过程

在这里插入图片描述

1.浏览器有缓存,查看浏览器缓存里是否有对应的dns域名解析或者本机里是否有dns缓存  --》浏览器缓存和客户机系统缓存,都可以缓存dns域名解析
2.客户机先查看本机的hosts文件是否有对应的域名	
3.如果缓存里都没有,hosts文件里也没有对应的域名解析记录,如果都没有就向本地dns服务器发起域名解析的请求
4.本地域名服务器先查看缓存,如果缓存里有直接给用户,如果没有就会问根域名服务器要,向根域名服务器发起请求
5.根域名服务器获得了本地dns服务器需要查询的域名www.baidu.com后,再告诉本地dns域名服务器下一级的域名服务器.com.的域名服务器的ip地址,然后我们的本地dns服务器就会问.com服务器,查询www.baidu.com域名,.com服务器然后查询出baidu.com这个域名对应的dns服务器,然后告诉本地dns服务器,本地dns服务器又去访问baidu.com.域名服务器,查询www对应的ip,然后本机dns服务器获取到www.baidu.com对应的ip后,马上添加到缓存里,接着告诉客户机www.baidu.com域名的ip地址
6.客户机然后去访问www.baidu.com域名对应的ip地址的服务器
简单来说,一条域名的DNS记录会在本地有两种缓存:浏览器缓存和操作系统(OS)缓存。在浏览器中访问的时候,会优先访问浏览器缓存,如果未命中则访问OS缓存,最后再访问DNS服务器(一般是ISP提供),

DNS记录会有一个ttl值(time to live),单位是秒,意思是这个记录最大有效期是多少。经过实验,OS缓存会参考ttl值,但是不完全等于ttl值,而浏览器DNS缓存的时间跟ttl值无关,每种浏览器都使用一个固定值。

六、搭建dns服务器

案例一:搭建主服务器

1、准备工作:关闭防火墙服务和selinux
[root@nameserver ~]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@nameserver ~]# systemctl disable firewalld
root@nameserver ~]# iptables -L  查看iptables防火墙规则
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 
[root@nameserver ~]# getenforce 
Disabled
2、安装软件bind
[root@nameserver ~]# yum install bind* -y
3、设置named服务开机启动,并且立马启动DNS服务
[root@nameserver ~]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@nameserver ~]# systemctl start named  # 立马启动named进程
[root@nameserver ~]# ps aux|grep named
named    14474  3.6  5.7 168300 57340 ?        Ssl  15:13   0:00 /usr/sbin/named -u named -c /etc/named.conf
root     14481  0.0  0.0 112824   980 pts/0    R+   15:13   0:00 grep --color=auto named
[root@nameserver ~]# netstat -anplut|grep named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      14474/named         
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      14474/named         
tcp6       0      0 ::1:53                  :::*                    LISTEN      14474/named         
tcp6       0      0 ::1:953                 :::*                    LISTEN      14474/named         
udp        0      0 127.0.0.1:53            0.0.0.0:*                           14474/named         
udp6       0      0 ::1:53                  :::*                                14474/named         
[root@nameserver ~]# 
4、修改配置文件/etc/resolv.conf
[root@sanchuang ~]# vim /etc/resolv.conf 
# Generated by NetworkManager
#nameserver 114.114.114.114
nameserver 127.0.0.1
5、测试查询
[root@sanchuang ~]# nslookup 
> www.qq.com
Server:		127.0.0.1 # nice
Address:	127.0.0.1#53

Non-authoritative answer:
www.qq.com	canonical name = ins-r23tsuuf.ias.tencent-cloud.net.
Name:	ins-r23tsuuf.ias.tencent-cloud.net
Address: 121.14.77.201
Name:	ins-r23tsuuf.ias.tencent-cloud.net
Address: 121.14.77.221
Name:	ins-r23tsuuf.ias.tencent-cloud.net
Address: 2402:4e00:1020:1404:0:9227:71a3:83d2
Name:	ins-r23tsuuf.ias.tencent-cloud.net
Address: 2402:4e00:1020:1404:0:9227:71ab:2b74
> www.baidu.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
www.baidu.com	canonical name = www.a.shifen.com.
Name:	www.a.shifen.com
Address: 14.215.177.38
Name:	www.a.shifen.com
Address: 14.215.177.39

案例二:搭建从服务器,主服务器做DNS

主服务器的配置接上

1、修改配置/etc/named.conf
[root@nameserver ~]# vim /etc/named.conf
options {
        listen-on port 53 { any; };  # 修改
        listen-on-v6 port 53 { any; }; # 修改
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; }; # 修改
2、重启named服务
[root@nameserver ~]# service named restart # 重启named服务
Redirecting to /bin/systemctl restart named.service
[root@nameserver ~]# ps aux | grep named
named      2014  0.0  9.7 279472 97176 ?        Ssl  13:49   0:00 /usr/sbin/named -u named -c /etc/named.conf
root       2336  0.0  0.0 112824   980 pts/3    R+   20:36   0:00 grep --color=auto named
[root@nameserver ~]# netstat -anplut | grep named
tcp        0      0 192.168.17.152:53       0.0.0.0:*               LISTEN      2014/named          
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2014/named          
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2014/named          
tcp6       0      0 :::53                   :::*                    LISTEN      2014/named          
tcp6       0      0 ::1:953                 :::*                    LISTEN      2014/named          
udp        0      0 192.168.17.152:53       0.0.0.0:*                           2014/named          
udp        0      0 127.0.0.1:53            0.0.0.0:*                           2014/named          
udp6       0      0 :::53                   :::*                                2014/named          
[root@nameserver ~]# 
3、从服务器的配置
[root@dns-client ~]# vim /etc/resolv.conf # 将dns改为主服务器的IP地址
[root@dns-client ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.17.152
[root@dns-client ~]# 
4、测试查询
[root@dns-client ~]# nslookup www.baidu.com
Server:		192.168.17.152
Address:	192.168.17.152#53

Non-authoritative answer:
www.baidu.com	canonical name = www.a.shifen.com.
Name:	www.a.shifen.com
Address: 14.215.177.38
Name:	www.a.shifen.com
Address: 14.119.104.189

[root@dns-client ~]# 

案例三:搭建主dns服务器,增加解析的域名

1、修改配置文件,告诉named为xiaowei.com提供域名解析

主配置文件: /etc/named.conf
次要配置文件:/etc/named.rfc1912.zones
named.ca 记录13台根域名服务器地址的文件

[root@nameserver named]# vim /etc/named.rfc1912.zones 

zone "xiaowei.com" IN {
        type master;
        file "xiaowei.com.zone";
        allow-update { none; };
};

# 添加上面的配置,建议在localhost的后面
[root@nameserver data]# named-checkconf /etc/named.rfc1912.zones   --》检查配置文件
2、创建xiaowei.com的数据文件

/var/named/ 存放dns域名解析的数据文件

[root@nameserver named]# cp -a named.localhost xiaowei.com.zone
[root@nameserver named]# ll
-rw-r----- 1 root  named  152 621 2007 xiaowei.com.zone
-rw-r----- 1 root  named  152 621 2007 named.localhost
# 之所以要接-a是保证两文件的权限一致,不然后面可能出错
[root@nameserver named]# cat xiaowei.com.zone  # 在配置文件里不能加#号
$TTL 1D
@	IN SOA	@ rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	NS	@
	IN MX  10 mail.xiaowei.com 
	A	192.168.17.152
	AAAA	::1

www IN  A  192.168.17.152  # 做负载均衡
www IN  A  192.168.17.153
www IN  A  192.168.17.154
www IN  A  192.168.17.155

mail  IN  A  192.168.17.152    # 邮件交换记录
vue   IN  A  192.168.17.152
ftp   IN  A  192.168.17.152
tongtong IN  A 192.168.17.152
ztt   IN A  192.168.17.153
tiankai IN  A  112.1.1.1
kaikai  IN CNAME tiankai  # 别名记录
* IN A  192.168.17.152
[root@nameserver named]# named-checkzone xiaowei.com  /var/named/xiaowei.com.zone ---》检查数据文件是否有错误
zone sc.com/IN: loaded serial 0
OK
[root@nameserver named]#
3、刷新named服务
[root@nameserver named]# service named restart
Redirecting to /bin/systemctl restart named.service
[root@nameserver named]# 
4、测试访问(在从服务器上)
[root@dns-client ~]# ping www.xiaowei.com
PING www.xiaowei.com (192.168.17.152) 56(84) bytes of data.
64 bytes from 192.168.17.152 (192.168.17.152): icmp_seq=1 ttl=64 time=0.507 ms
64 bytes from 192.168.17.152 (192.168.17.152): icmp_seq=2 ttl=64 time=0.605 ms
64 bytes from 192.168.17.152 (192.168.17.152): icmp_seq=3 ttl=64 time=0.531 ms
^C
--- www.xiaowei.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2006ms
rtt min/avg/max/mdev = 0.507/0.547/0.605/0.049 ms
[root@dns-client ~]# ping kaikai.xiaowei.com
PING tiankai.xiaowei.com (112.1.1.1) 56(84) bytes of data.
^C
--- tiankai.xiaowei.com ping statistics ---
12 packets transmitted, 0 received, 100% packet loss, time 11023ms

[root@dns-client ~]# ping ftp.xiaowei.com
PING ftp.xiaowei.com (192.168.17.152) 56(84) bytes of data.
64 bytes from 192.168.17.152 (192.168.17.152): icmp_seq=1 ttl=64 time=0.192 ms
64 bytes from 192.168.17.152 (192.168.17.152): icmp_seq=2 ttl=64 time=0.730 ms
64 bytes from 192.168.17.152 (192.168.17.152): icmp_seq=3 ttl=64 time=0.320 ms
^C
--- ftp.xiaowei.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.192/0.414/0.730/0.229 ms
[root@dns-client ~]# 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pod️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值