在dns服务器中,把ip地址解析为域名,使用什么域

在dns服务器中,把ip地址解析为域名,使用什么域,第1张

域名系统,在TCP/IP 网络中有非常重要的地位,能够提供域名与IP地址的解析服务,而不用去记住能够被机器直接读取的IP数串。

通过域名,最终得到该域名对应的IP地址的过程叫做域名解析。

DNS协议运行在UDP协议之上,使用端口53号

DNS域名空间中,树的最大深度不得超过127层,树种每个节点最长可以存储63个字符。

2、域和域名

DNS树的每一个完全合格域名(FQDN)标识。FQDN能准确表示出其对于DNS域树根的位置,也就是节点到DNS树根的完整表述方式。

例如:google为com域的子域,其表示方法为googgle.com,而www为google域中的子域,可以使用www.google.com表示。

注意:FQDN有严格的命名限制,长度不能超过256字节,只允许使用字符a-z,0-9,A-Z和减号(-)。

.号只允许在域名标志之间和域名结尾使用。

域名不区分大小写,从最顶层到下层,可以分成:根域、顶级域、二级域、子域。

互联网的域名空间最顶层的是根域(root),记录这Interne的重要DNS信息,有Internet域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给链接到Internet的各个组织。

全球有13个根域服务器

1个为主根域服务器,在美国;其余12个为辅助根域服务器,

其中9个在美国;欧洲2个,分别在英国和瑞迪;亚洲一个,在日本。

3、域名的分类和等级

域名可以分为3中类型的顶级域分别是:

组织域:采用3个字符表示,表示组织的主要功能和活动,比如com为商业机构组织,edu为教育机构组织,gov为政府机构组织,mil为军事机构组织,net为网络机构组织,org为非盈利机构组织,int为国际机构组织。

地址域:采用两个字符的国家或地区代号,如cn表示中国,jp表示日本、hk表示香港,kr表示韩国,us表示美国。

反向域:特殊域,名字为in-addr.arpa,用于将IP地址映射到名字(反向查询)

二、DNS相关概念

1、DNS服务器

运行DNS服务器程序的计算机,存储DNS数据库信息。

2、DNS缓存

DNS服务器在解析客户机的域名请求时,如果本地没有该域名的记录,则会询问其它DNS服务器,当其它域名将解析结果返回给DNS服务器是,DNS将对应的记录保存在本地,生成DNS缓存,当下一次客户机再次请求是,DNS服务器则可以直接使用缓存中的DNS记录。

3、DNS查询方式:递归查询和迭代查询

递归查询:当客户机向DNS服务器发起域名解析请求时,DNS服务器首先查看自己本机的DNS记录,如果没有则会想其它DNS服务器发起解析请求。

迭代查询:当客户机向DNS服务器发起域名解析请求是,DNS服务器不会给客户机解析地址,而是告诉客户机另外一台DNS服务器,客户即再向这台服务器发起地址解析请求。

4、正向解析和反向解析

正向解析:指域名解析到IP地址的解析过程。

反向解析:指IP地址解析到域名的解析过程。

5、DNS资源记录

1)SOA资源记录

每个区在区的开始都包含了一个起始授权记录(Start of Authority Record),简称SOA记录

SOA定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA记录。

2)NS资源记录

NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析,每个区在区根处至少包含一个NS记录。

3)A资源记录

地址(A)资源记录把FQDN映射到IP地址。因为有次记录,所以DNS服务器能解析FQDN域名对应的IP地址。

4)PTR资源记录

相对于A记录,指针(PTR)记录把IP地址映射到FQDN。用于反向查询,通过IP地址,找到域名。

5)CNAME资源记录

别名记录(CNAME)资源记录创建特定FQDN的别名。用户可以使用CNAME记录来隐藏用户网络的实现细节,使链接的客户机无法知道真正的域名。

6)MX资源记录

邮件交换(MX)资源记录,为DNS域名指定邮件交换服务器。

三、DNS服务器安装及相关配置文件

1、安装DNS

BIND 简介:

BIND 全称为Berkeley Internet Name Domain(伯克利因特网名称域系统),BIND 主要有三个版本:BIND4、BIND8、BIND9。

BIND8版本:融合了许多提高效率、稳定性和安全性的技术,而BIND9 增加了一些超前的理念:IPv6支持、密钥加密、多处理器支持、线程安全操作、增量区传送等等。

安装命令:

[root@xuegod ~]# yum -y install bind bind-chroot bind-utils

安装包的作用:

bind.x86_64 32:9.9.4-73.el7_6 #DNS服务的主程序包

bind-chroot.x86_64 32:9.9.4-73.el7_6 #提高安全性

#bind-chroot是bind的一个功能,使bind可以在一个chroot 的模式下运行,也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已,这样做的目的是为了提高安全性,因为在chroot的模式下,bind可以访问的范围仅限于这个子目录的范围里,无法进一步提升,进入到系统的其他目录中。

bind-utils-9.9.4-50.el7.x86_64.rpm #该包为客户端工具,系统默认已经安装的了,它用于搜索域名指令。

2、DNS服务器相关配置文件

[root@xuegod ~]# ls /etc/named.conf -l

-rw-r----- 1 root named 1808 1月 30 01:23 /etc/named.conf

named.conf是BIND的核心配置文件,它包含了BIND的基本配置,但其并不包括区域数据

/var/name/目录为DNS数据库文件存放目录,每一个域文件都放在这里

3、启动服务器

[root@xuegod ~]# systemctl start named

[root@xuegod ~]# systemctl enable named

Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.

[root@xuegod ~]# netstat -antup | grep 53

tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 3501/named

4、服务的使用方法

在客户端上配置好DNS服务器地址

[root@xuegod140 ~]# vim /etc/resolv.conf

[root@xuegod140 ~]# cat /etc/resolv.conf

Generated by NetworkManager

nameserver 192.168.1.130

resolv.conf文件,添加DNS,此文件的生效范围是全局的,即是所有网卡都可以生效。

修改网卡添加的DNS,此方法添加DNS仅对当前网卡生效。

DNS1=192.168.1.130

5、配置文件详解

要求:配置DNS服务器解析:xuegod.cn

[root@xuegod etc]# cp /etc/named.conf /etc/named.conf.bak

DNS配置文件整体分为三段:

options:对全局生效

zone:针对某个区域生效

type:指定区域类型

type主要分为六种

Master:主DNS服务器,拥有区域数据文件,并对此区域提供管理梳理

Slave:辅助DNS服务器,拥有主DNS服务器的区域数据文件的副本,辅助DNS服务器会从主DNS服务器同步所有区域数据

Stub:stub区域和slave类似,但其只复制主DNS服务器上的NS记录,而不像slave复制DNS服务器的所有数据

Forward:一个forward zone是每个区域的配置转发的主要部分。一个zone语句中的type forward可以包括一个forward和/或forwarders子句,它会在区域名称给定的域中查询。如果没有forwarders语句或者forwarder是空表,那么这个域就不会转发,消除了options语句中有关转发的配置

Hint:根域名服务器的初始化组指定使用线索区域hint zone,当服务器启动时,它使用跟线索来查找根域名服务器,并找到最近的根域名服务器列表

四、实战-为公司搭建一个DNS服务器

1、配置正向解析区域

修改配置文件,授权DNS服务器管理xuegod.cn区域,并把该区域的区域文件命名为xuegod.cn

options {

listen-on port 53 { any}#把原来的127.0.0.1改为any。

listen-on-v6 port 53 { any}#把原来的::1,改为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”

allow-query { any}#把原来的localhost,改为any。

recursion yes

dnssec-enable yes

dnssec-validation yes

dnssec-lookaside auto #加入此项。

1

2

3

4

5

1

2

3

4

5

zone “xuegod.cn” IN { #把原来的 . 改为xuegod.cn。

type master#把原来的hint,改为master。

file “xuegod.cn.zone”#把原来的named.ca,改为xuegod.cn.zone。

}

include “/etc/named.rfc1912.zones”

include “/etc/named.root.key”

2、创建zone文件

[root@xuegod etc]# cd /var/named #进入zone工作目录

[root@xuegod named]# ll -d named.localhost

-rw-r----- 1 root named 152 6月 21 2007 named.localhost

[root@xuegod named]# cp -a named.localhost xuegod.cn.zone

#-a参数,复制后的文件保留源文件权限

[root@xuegod named]# ll -d xuegod.cn.zone

-rw-r----- 1 root named 152 6月 21 2007 xuegod.cn.zone

[root@xuegod named]# vim xuegod.cn.zone

[root@xuegod named]# cat xuegod.cn.zone

$TTL 1D

xuegod.cn. IN SOA dns.xuegod.cn. root.xuegod.cn. (

0 serial #系列

1D refresh #刷新

1H retry #重试

1W expire #到期

3H ) minimum #最低限度

xuegod.cn. NS dns.xuegod.cn. #NS资源记录

dns.xuegod.cn. A 192.168.1.130 #A资源记录

www.xuegod.cn. A 192.168.1.130 #A资源记录

www1.xeugod.cn. CNAME www.xuegod.cn. #CNAME记录

3、重启DNS服务:

[root@xuegod named]# systemctl restart named

4、修改客户机的DNS记录

[root@xuegod140 ~]# vim /etc/resolv.conf

[root@xuegod140 ~]# cat /etc/resolv.conf

Generated by NetworkManager

nameserver 192.168.1.130

5、删除网卡配置文件的DNS记录

[root@xuegod140 ~]# cd /etc

[root@xuegod140 etc]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

[root@xuegod140 etc]# cat !$ | grep DNS1 #删除DNS1的行

cat /etc/sysconfig/network-scripts/ifcfg-ens33 | grep DNS1

6、测试结果:

[root@xuegod140 etc]# ping www.xuegod.cn

PING www.xuegod.cn (192.168.1.130) 56(84) bytes of data.

64 bytes from 192.168.1.130 (192.168.1.130): icmp_seq=1 ttl=64 time=0.216 ms

64 bytes from 192.168.1.130 (192.168.1.130): icmp_seq=2 ttl=64 time=0.359 ms

[root@xuegod140 etc]# ping www1.xuegod.cn

PING www.xuegod.cn (192.168.1.130) 56(84) bytes of data.

64 bytes from 192.168.1.130 (192.168.1.130): icmp_seq=1 ttl=64 time=0.216 ms

64 bytes from 192.168.1.130 (192.168.1.130): icmp_seq=2 ttl=64 time=0.255 ms

[root@xuegod140 etc]# ping dns.xuegod.cn

PING dns.xuegod.cn (192.168.1.130) 56(84) bytes of data.

64 bytes from 192.168.1.130 (192.168.1.130): icmp_seq=1 ttl=64 time=0.170 ms

64 bytes from 192.168.1.130 (192.168.1.130): icmp_seq=2 ttl=64 time=0.294 ms

总结:实验容易错误点

1)区文件的权限,需要注意,这里直接使用cp -a参数拷贝,保留文件的权限和属组、属主

2)服务端的防火墙必须要关闭,如果不关闭,就要放通DNS53号端口

3)客户端指定DNS地址时,resolv文件需要表示全局生效,本地网卡修改表示当前网卡生效

4)可以的话最好关闭NetworkManager

7、zone配置文件的参数说明

$TTL 1D:设置有效地址解析记录的默认缓存时间,默认为1天也就是1D。

xuegod.cn. IN SOA dns. xuegod.cn. root. xuegod.cn.

#原来的@表示当前的域xuegod.cn.,为方便大家记忆,在此直接写成xuegod.cn.

#设置SOA记录为:dns.xuegod.cn.

#在此配置文件中写域名时,都把根 . 也需要写上。

#域管理邮箱root.xuegod.cn. 由于@有其他含义,所以用“.”代替@。

0 :更新序列号,用于标示数据库的变换,可以在10位以内,如果存在辅助DNS区域,建议每次更新完数据库,手动加1。

1D :刷新时间,从域名服务器更新该地址数据库文件的间隔时间,默认为1天。

1H :重试延时,从域名服务器更新地址数据库失败以后,等待多长时间,默认为1小时。

1W :到期,失效时间,超过该时间仍无法更新地址数据库,则不再尝试,默认为一周。

3H :设置无效地址解析记录(该数据库中不存在的地址)默认缓存时间。设置无效记录,最少缓存时间为3小时。

NS @ :域名服务器记录,用于设置当前域的DNS服务器的域名地址,

A 127.0.0.1: 设置域名服务器的A记录,地址为ipv4的地址127.0.0.1,可以设置成192.168.100.102

AAAA ::1:设置域名服务器的A记录,地址为ipv6的地址。

资源记录参数详解:

CNAME 资源记录

别名(CNAME)资源记录用于为某个主机指定一个别名

CNAME 资源记录语法格式:

别名 CNAME 主机名

www1.xuegod.cn. CNAME www.xuegod.cn.

MX 资源记录

MX(邮件交换器)资源记录提供邮件传递信息。该记录会指定区域内的邮件服务器名称。

MX 资源记录语法格式:

mail A 192.168.1.63

MX 192.168.1.63

PTR 资源记录

指针(PTR)资源记录。该记录与A 记录相反,用于查询IP 地址与主机名的对应关系。

根区域是一个较为特殊的区域,记录列出全球根域名服务器信息,域名通常用“.”表示,如表 5-1 所示。

在这里插入图片描述

五、实战-DNS递归查询和搭建DNS转发服务器

1、使用DNS递归查询

修改配置文件:

[root@xuegod130 etc]# vim /etc/named.conf #修改DNS配置文件,修改如下内容。

options {

listen-on port 53 { any }#把原来的127.0.0.1改为any。

listen-on-v6 port 53 { any}#把原来的::1,改为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”

allow-query { any}#把原来的localhost,改为any。

recursion yes#默认是支持递归查询。

#dnssec-enable yes

#dnssec-validation yes

#dnssec-lookaside auto

只需要把以上三条内容注释了,其它内容不用改,这样客户端才能通过这个DNS进行递归查询,把dns加密通讯功能关闭,才可以和根服务器时行迭代查询。:

2、重启DNS服务,使配置文件生效:

[root@xuegod63 ~]# systemctl restart named

3、在xuego140主机上进行测试:

[root@localhost network-scripts]# ping www.baidu.com

PING www.a.shifen.com (61.135.169.105) 56(84) bytes of data.

64 bytes from 61.135.169.105: icmp_seq=1 ttl=55 time=318 ms

64 bytes from 61.135.169.105: icmp_seq=3 ttl=55 time=147 ms

4、 搭建DNS转发服务器

[root@xuegod130 ~]# vim /etc/named.conf

options {

listen-on port 53 { any}#把原来的127.0.0.1改为any。

listen-on-v6 port 53 { any}#把原来的::1,改为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”

allow-query { any}#把原来的localhost,改为any。

recursion yes#允许递归查询

#dnssec-enable yes#注释以下三行。

#dnssec-validation yes

#dnssec-lookaside auto

zone “xuegod.cn” IN {

#type master#注释此项

type forward#添加此项,类型为转发。

#file “xuegod.cn.zone”#注释此项

forward only #仅执行转发操作,only:仅转发,first:先查找本地zone,再转发。

forwarders { 8.8.8.8}#指定转发查询请求的DNS服务器列表。

}

重启DNS服务,使配置文件生效:

[root@xuegod63 ~]# systemctl restart named

在xuegod140主机上进行测试:

[root@localhost network-scripts]# ping www.baidu.com

PING www.a.shifen.com (61.135.169.105) 56(84) bytes of data.

64 bytes from 61.135.169.105: icmp_seq=1 ttl=55 time=318 ms

64 bytes from 61.135.169.105: icmp_seq=3 ttl=55 time=147 ms

六、实战-搭建DNS主从服务器

1、搭建一个主DNS服务器A,配置内容如下

[root@xuegod63 ~]# vim /etc/named.conf

options {

listen-on port 53 { any}#把原来的127.0.0.1改为any。

listen-on-v6 port 53 { any}#把原来的::1,改为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”

allow-query { any}#把原来的localhost,改为any。

recursion yes

#dnssec-enable yes

#dnssec-validation yes

#dnssec-lookaside auto

zone “xuegod.cn” IN {

type master#指定类型为master。

file “xuegod.cn.zone”#指定为xuegod.cn.zone。

allow-transfer { 192.168.1.0/24}#指定允许哪个网段的从DNS服务器,可以同步主DNS服务器zone文件,不写默认为所有。

}

include “/etc/named.rfc1912.zones”

重启DNS服务,使配置文件生效:

[root@xuegod63 ~]# systemctl restart named

2、从DNS服务器的配置

要求:主从系统时间一定要保持一致。

在配置DNS主从服务器同步的时候,bind服务默认是允许任何人进行同步的,但是这样容易造成安全隐患。bind服务支持通过限制IP和key认证两种方式来对同步的来源Ip进行限制,限制IP的方法已经在此前的文章中演示多次,因此本文着重描述如何使用key认证来限制从服务器的来源。

本次实验我使用了两台虚拟机进行测试,分别是:

相关的主从服务器的配置此处不多细说,可参考我此前的文章; https://www.jianshu.com/p/e8b5866802d1

在DNS主服务器上生成认证key:

编辑/etc/named.conf文件:

编辑/etc/named.rfc1912.zones文件:

随后分别创建/var/named/handwell.com.zone和/var/named/188.88.88.zone文件:

随后检查相关的配置文件,如无报错后,重新加载named服务即可:

此时没通过key认证的服务器尝试来同步相关的区域数据时,通过systemctl status named 或查看 /var/log/messages日志可看到以下的拒绝报错:

或者如果从服务器的认证key不正确,也会出现以下报错:

编辑从服务器的/etc/named.conf 文件:

编辑/etc/named.rfc1912.zones文件:

配置完成后,验证检查相应的配置文件后重启服务即可:

此时查看对应的日志文件应能看到相应的同步信息如:

DNS的internet类中有非常多的资源记录类型。常用的是SOA记录、NS记录、A记录(IPV6则为AAAA记录)、PTR记录、CNAME记录、MX记录等。

SOA记录:start of authority,起始授权机构。该记录存储了一系列数据,若不明白SOA记录,请结合下面的NS记录,SOA更多的信息见"子域"部分的内容。

格式如下:

alibaba.com. IN SOA dnsserver.alibaba.com.mail.alibaba.com. (

1

3h

1h

1w

1h )

第四列指定了"dnsserver.alibaba.com."为该域的master DNS服务器。

第五列是该域的管理员邮箱地址,但注意不能使用@格式的邮箱,而是要将@符号替换为点".",正如上面的例子" mail.alibaba.com .",其实际表示的是" mail@alibaba.com "。

第六列使用括号将几个值包围起来。第一个值是区域数据文件的序列编号serial,每次修改此区域数据文件都需要修改该编号值以便让slave dns服务器同步该区域数据文件。第二个值是刷新refresh时间间隔,表示slave dns服务器找master dns服务器更新区域数据文件的时间间隔。第三个值是重试retry时间间隔,表示slave dns服务器找master dns服务器更新区域数据文件时,如果联系不上master,则等待多久再重试联系,该值一般比refresh时间短,否则该值表示的重试就失去了意义。第四个值是过期expire时间值,表示slave dns服务器上的区域数据文件多久过期。第五个值是negative ttl,表示客户端找dns服务器解析时,否定答案的缓存时间长度。这几个值可以分行写,也可以直接写在同一行中使用空格分开,所以,上面的SOA记录可以写成如下格式:

alibaba.com. IN SOA dnsserver.alibaba.com. mail.alibaba.com. ( 1 3h 1h 1w 1h )

前三列是声明性的语句,表示"alibaba.com."这个域内的起始授权机构为第四列的值"dnsserver.alibaba.com."所表示的主机。第五列和第六列是SOA的附加属性数据。

每个区域数据文件中都有且仅能有一个SOA记录,且一般都定义为区域数据文件中的资源记录。

注意,资源记录的作用之一是存储域相关的对应数据,所以第4、5、6列表示的是该SOA记录所存储的相关值。

NS记录:name server,存储的是该域内的dns服务器相关信息。即NS记录标识了哪台服务器是DNS服务器。格式如下:

alibaba.com.IN NS dnsserver.alibaba.com.

前三列仍然是声明性语句,表示"alibaba.com."域内的DNS服务器(name server)为第四列值所表示的"dnsserver.alibaba.com."主机。

如果一个域内有多个dns服务器,则必然有主次之分,即master和slave之分。但在NS记录上并不能体现主次关系。例如:

alibaba.com.IN NS dnsserver1.alibaba.com.

alibaba.com.IN NS dnsserver2.alibaba.com.

表示主机"dnsserver1.alibaba.com."和主机"dnsserver2.alibaba.com."都是域"alibaba.com."内的dns服务器,但没有区分出主次dns服务器。

不少朋友搞不懂SOA记录,也很容易混淆SOA和NS记录。其实,仅就它们的主要作用而言,NS记录仅仅只是声明该域内哪台主机是dns服务器,用来提供名称解析服务,NS记录不会区分哪台dns服务器是master哪台dns服务器是slave。而SOA记录则用于指定哪个NS记录对应的主机是master dns服务器,也就是从多个dns服务器中挑选一台任命其为该域内的master dns服务器,其他的都是slave,都需要从master上获取域相关数据。由此,SOA的名称"起始授权机构"所表示的意思也就容易理解了。

A记录:address,存储的是域内主机名所对应的ip地址。格式如下:

dnsserver.alibaba.com.IN A 172.16.10.15

客户端之所以能够解析到主机名对应的ip地址,就是因为dns服务器中的有A记录存储了主机名和ip的对应关系。

AAAA记录存储的是主机名和ipv6地址的对应关系。

PTR记录:pointer,和A记录相反,存储的是ip地址对应的主机名,该记录只存在于反向解析的区域数据文件中(并非一定)。格式如下:

16.10.16.172.in-addr.arpa . IN PTR www.alibaba.com .

表示解析172.16.10.16地址时得到主机名" www.alibaba.com ."的结果。

CNAME记录:canonical name,表示规范名的意思,其所代表的记录常称为别名记录。之所以如此称呼,就是因为为规范名起了一个别名。什么是规范名?可以简单认为是fqdn。格式如下:

www1.alibaba.com . IN CNAME www.alibaba.com .

最后一列就是规范名,而第一列是规范名即最后一列的别名。当查询" www1.alibaba.com .",dns服务器会找到它的规范名" www.alibaba.com .",然后再查询规范名的A记录,也就获得了对应的IP地址并返回给客户端。

CNAME记录非常重要,很多时候使用CNAME可以解决很复杂的问题。而且目前常用的CDN技术有一个步骤就是在dns服务器上设置CNAME记录,将客户端对资源的请求引导到与它同网络环境(电信、网通)以及地理位置近的缓存服务器上。

MX记录:mail exchanger,邮件交换记录。负责转发或处理该域名内的邮件。和邮件服务器有关,且话题较大,所以不多做叙述,如有深入的必要,请查看《dns &bind》中"Chapter 5. DNS and Electronic Mail"。

关于资源记录,最需要明确的概念就是它不仅仅用来区分和标识区域数据的类型,还用来存储对应的域数据。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/230137.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-09
下一篇2023-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存