1 名字解析介绍和 DNS
当前 TCP/IP 网络中的设备之间进行通信,是利用和依赖于 IP 地址实现的。但数字形式的 IP 地址是很难记忆的。当网络设备众多,想要记住每个设备的 IP 地址,可以说是“不可能完成的任务”。那么如何解决这一难题呢?我们可以给每个网络设备起一个友好的名称,如:www.zhangzhuo.ltd,这种由文字组成的名称,显而易见要更容易记忆。但是计算机不会理解这种名称的,我们可以利用一种名字解析服务将名称转化成(解析)成 IP 地址。从而我们就可以利用名称来直接访问网络中设备了。除此之外还有一个重要功能,利用名称解析服务可以实现主机和 IP 的解耦,即:当主机 IP 变化时,只需要修改名称服务即可,用户仍可以通过原有的名称进行访问而不受影响。实现此服务的方法是多样的。如下面所述:
本地名称解析配置文件:hosts
Linux: /etc/hosts
windows: %WINDIR%/system32/drivers/etc/hosts
#格式
122.10.117.2 www.magedu.org.
93.46.8.89 www.google.com.
DNS:Domain Name System 域名系统,应用层协议,是互联网的一项服务。它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于 C/S 架构,服务器端:53/udp, 53/tcpBIND:Bekerley Internet Name Domain,由 ISC (www.isc.org)提供的 DNS 软件实现 DNS 域名结构
- 根域: 全球根服务器节点只有 13 个,10 个在美国,1 个荷兰,1 个瑞典,1 个日本
- 一级域名:Top Level Domain: tld
- 三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
- com, edu, mil, gov, net, org, int,arpa
- 二级域名:zhangzhuo.ltd
- 三级域名:www.zhangzhuo.ltd,zz.zhangzhuo.ltd
- 最多可达到 127 级域名
ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理
1.2 DNS 服务工作原理
根服务器的安全
2004年4月由于顶级域名.ly瘫痪,导致利比亚从互联网消失了3天
雪人计划
在与现有IPv4根服务器体系架构充分兼容基础上,“雪人计划”于2016年在美国、日本、印度、俄罗斯、德
国、法国等全球16个国家完成25台IPv6根服务器架设,其中1台主根和3台辅根部署在中国,事实上形成了13
台原有根加25台IPv6根的新格局
1.3 DNS 查询类型(面试要点)
- 递归查询:一般客户机和本地 DNS 服务器之间属于递归查询,即当客户机向 DNS 服务器发出请求后,若 DNS 服务器本身不能解析,则会向另外的 DNS 服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询
- 迭代查询:一般情况下(有例外)本地的 DNS 服务器向其它 DNS 服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个 DNS 服务器(参考前一个 DNS 服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询
1.4 名称服务器
Name Server,域内负责解析本域内的名称的 DNS 服务器
IPv4 的根名称服务器:全球共 13 个负责解析根域的 DNS 服务器,美国 10 个,荷兰 1,瑞典 1,日本 1
IPv6 的根名称服务器:全球共 25 个,中国 1 主 3 从,美国 1 主 2 从
1.5 解析类型
- FQDN --> IP 正向解析
- IP --> FQDN 反向解析
注意:正反向解析是两个不同的名称空间,是两棵不同的解析树
1.6 完整的查询请求经过的流程
Client -->hosts文件 --> Client DNS Service Local Cache(缓存) --> DNS Server (recursion
递归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS...
范例:
C:\Users\zhangzhuo>ipconfig/displaydns | findstr redhat
C:\Users\zhangzhuo>ping www.redhat.com
正在 Ping e3396.ca2.s.tl88.net [218.58.101.211] 具有 32 字节的数据:
来自 218.58.101.211 的回复: 字节=32 时间=14ms TTL=55
来自 218.58.101.211 的回复: 字节=32 时间=12ms TTL=55
来自 218.58.101.211 的回复: 字节=32 时间=13ms TTL=55
来自 218.58.101.211 的回复: 字节=32 时间=15ms TTL=55
218.58.101.211 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 12ms,最长 = 15ms,平均 = 13ms
C:\Users\zhangzhuo>ipconfig/displaydns | findstr redhat
www.redhat.com
记录名称. . . . . . . : www.redhat.com
CNAME 记录 . . . . . : ds-www.redhat.com.edgekey.net
记录名称. . . . . . . : ds-www.redhat.com.edgekey.net
CNAME 记录 . . . . . : ds-www.redhat.com.edgekey.net.globalredir.akadns.net
记录名称. . . . . . . : ds-www.redhat.com.edgekey.net.globalredir.akadns.net
C:\Users\zhangzhuo>ipconfig/flushdns
Windows IP 配置
已成功刷新 DNS 解析缓存。
C:\Users\zhangzhuo>ipconfig/displaydns | findstr redhat
2 DNS 服务相关概念和技术
2.1 DNS 服务器的类型
- 主 DNS 服务器
- 从 DNS 服务器
- 缓存 DNS 服务器(转发器)
2.1.1 主 DNS 服务器
管理和维护所负责解析的域内解析库的服务器
2.1.2 从 DNS 服务器
从主服务器或从服务器“复制”(区域传输)解析库副本
- 序列号:解析库版本号,主服务器解析库变化时,其序列递增
- 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
- 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
- 过期时长:从服务器联系不到主服务器时,多久后停止服务
- 通知机制:主服务器解析库发生变化时,会主动通知从服务器
2.2 区域传输
- 完全传输:传送整个解析库
- 增量传输:传递解析库变化的那部分内容
2.3 解析形式
- 正向:FQDN( Fully Qualified Domain Name) --> IP
- 反向: IP --> FQDN
2.4 负责本地域名的正向和反向解析库
- 正向区域
- 反向区域
2.5 解析答案
- 肯定答案:存在对应的查询结果
- 否定答案:请求的条目不存在等原因导致无法返回结果
- 权威答案:直接由存有此查询结果的 DNS 服务器(权威服务器)返回的答案
- 非权威答案:由其它非权威服务器返回的查询答案
2.6 各种资源记录(加粗的重点)
区域解析库:由众多资源记录 RR(Resource Record)组成
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
- SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个 SOA 记录,必须位于解析库的第一条记录
- A:internet Address,作用,FQDN --> IP
- AAAA:FQDN --> IPv6
- PTR:PoinTeR,IP --> FQDN
- NS:Name Server,专用于标明当前区域的 DNS 服务器
- CNAME : Canonical Name,别名记录
- MX:Mail eXchanger,邮件交换器
- TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https 验证等,如下示例:
_dnsauth TXT 2012011200000051qgs69bwoh4h6nht4n1h0lr038x
2.6.1 资源记录定义的
name [TTL] IN rr_type value
注意:
- TTL 可从全局继承
- 使用 “@” 符号可用于引用当前区域的名字
- 同一个名字可以通过多条记录定义多个不同的值;此时 DNS 服务器会以轮询方式响应
- 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机
面试题:
我的网站域名需要更改,如何使其更快的生效?
更改TTL值为多少比较合适呢?是如何生效的?
2.6.2 SOA 记录
name: 当前区域的名字,例如“zhangzhuo.org.”
value: 有多部分组成
注意:
- 当前区域的主 DNS 服务器的 FQDN,也可以使用当前区域的名字
- 当前区域管理员的邮箱地址;但地址中不能使用 @ 符号,一般用.替换
- 例如:admin.zhangzhuo.org
- 主从服务区域传输相关定义以及否定的答案的统一的 TTL
- 从节点同步时确定文件是否变化是由序列号来决定的不取决于文件内容,如果修改文件序列号最好也修改
范例:
zhangzhuo.org. 86400 IN SOA ns.zhangzhuo.org. nsadmin.zhangzhuo.org. (
2015042201 ;序列号
2H ;刷新时间,同步拉取时间
10M ;重试时间,同步失败重试时间
1W ;过期时间
1D ;否定答案的TTL值
)
2.6.3 NS 记录
name: 当前区域的名字
value: 当前区域的某 DNS 服务器的名字,例如 ns.zhangzhuo.org.
注意:
- 相邻的两个资源记录的 name 相同时,后续的可省略
- 对 NS 记录而言,任何一个 ns 记录后面的服务器名字,都应该在后续有一个 A 记录
- 一个区域可以有多个 NS 记录
范例:
zhangzhuo.org. IN NS ns1.zhnagzhuo.org.
zhangzhuo.org. IN NS ns2.zhangzhuo.org.
2.6.4 MX 记录
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp 服务器)的主机名
注意:
- 一个区域内,MX 记录可有多个;但每个记录的 value 之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
- 对 MX 记录而言,任何一个 MX 记录后面的服务器名字,都应该在后续有一个 A 记录
范例:
zhangzhuo.org. IN MX 10 mx1.zhanzghuo.org.
IN MX 20 mx2.zhanzghuo.org.
mx1 A 10.0.0.100
mx2 A 10.0.0.200
2.6.5 A 记录
name: 某主机的 FQDN,例如:www.zhangzhuo.org.
value: 主机名对应主机的 IP 地址
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
范例:
www.magedu.org. IN A 1.1.1.1
www.magedu.org. IN A 2.2.2.2
mx1.magedu.org. IN A 3.3.3.3
mx2.magedu.org. IN A 4.4.4.4
$GENERATE 1-254 HOST$ IN A 1.2.3.$
*.magedu.org. IN A 5.5.5.5
magedu.org. IN A 6.6.6.6
范例:阿里云
2.6.6 AAAA 记录
- name: FQDN
- value: IPv6
2.6.7 PTR 记录
name: IP,有特定格式,把 IP 地址反过来写,1.2.3.4,要写作 4.3.2.1;而有特定后缀:in
addr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.
value: FQDN
注意:网络地址及后缀可省略;主机地址依然需要反着写
例如:
4.3.2.1.in-addr.arpa. IN PTR www.zhangzhuo.org.
#如1.2.3为网络地址,可简写成:
4 IN PTR www.zhangzhuo.org.
2.6.8 CNAME 别名记录
name: 别名的 FQDN
value: 真正名字的 FQDN
例如:
www.zhangzhuo.org. IN CNAME websrv.zhangzhuo.org.
2.7 子域授权
每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权,类似根域授权 tld
glue record:粘合记录,父域授权子域的记录
范例:
.com. IN NS ns1.com.
.com. IN NS ns2.com.
ns1.com. IN A 2.2.2.1
ns2.com. IN A 2.2.2.2
#zhangzhuo.org. 在.com的名称服务器上,解析库中添加资源记录
zhangzhuo.org. IN NS ns1.zhangzhuo.org.
zhanzghuo.org. IN NS ns2.zhangzhuo.org.
zhangzhuo.org. IN NS ns3.zhangzhuo.org.
ns1.zhangzhuo.org. IN A 3.3.3.1
ns2.zhangzhuo.org. IN A 3.3.3.2
ns3.zhangzhuo.org. IN A 3.3.3.3
2.8 互联网域名
- 域名注册
代理商:万网, 新网, godaddy
- 注册完成以后,想自己用专用服务来解析
管理后台:把 NS 记录指向的服务器名称,和 A 记录指向的服务器地址
范例:阿里云 DNS 管理后台界面
2.9 whois
范例: whois 查询域名信息,查询的前提是可以 ping 通
[10:13:38 root@centos8 ~]#yum install whois
[10:42:28 root@centos8 ~]#whois zhangzhuo.ltd
Domain Name: zhangzhuo.ltd
Registry Domain ID: 270a5a0c7dca4b70b13610c7769f5943-DONUTS
Registrar WHOIS Server: whois.hichina.com/
Registrar URL: http://www.net.cn/about/
Updated Date: 2020-11-10T08:32:15Z
Creation Date: 2020-11-05T08:31:56Z
Registry Expiry Date: 2021-11-05T08:31:56Z
Registrar: Alibaba Cloud Computing Ltd. d/b/a HiChina (www.net.cn)
Registrar IANA ID: 1599
Registrar Abuse Contact Email: abuse@list.alibaba-inc.com
Registrar Abuse Contact Phone: +86.4006008500
Domain Status: ok https://icann.org/epp#ok
Registry Registrant ID: REDACTED FOR PRIVACY
可以从网站查询信息,查询连接
https://www.toolnb.com/domaininfo/
3 DNS 软件 bind
DNS 服务器软件:bind,powerdns,dnsmasq,unbound,coredns
3.1 BIND 相关程序包
yum list all bind*
- bind:服务器
- bind-libs:相关库
- bind-utils: 客户端
- bind-chroot: 安全包,将 dns 相关文件放至 /var/named/chroot/
范例:安装 bind 软件
[10:54:40 root@centos8 ~]#yum -y install bind bind-utils
3.2 BIND 包相关文件
- BIND 主程序:/usr/sbin/named
- 服务脚本和 Unit 名称:/etc/rc.d/init.d/named,/usr/lib/systemd/system/named.service
- 主配置文件:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key
- 管理工具:/usr/sbin/rndc:remote name domain controller,默认与 bind 安装在同一主机,且只能通过 127.0.0.1 连接 named 进程,提供辅助性的管理功能;953/tcp
- 解析库文件:/var/named/ZONE_NAME.ZONE
- 注意:
- (1) 一台物理服务器可同时为多个区域提供解析
- (2) 必须要有根区域文件;named.ca
- (3) 应该有两个(如果包括 ipv6 的,应该更多)实现 localhost 和本地回环地址的解析库
- 注意:
3.3 主配置文件
- 全局配置:options {};
- 日志子系统配置:logging {};
- 区域定义:本机能够为哪些 zone 进行解析,就要定义哪些 zone
- zone "ZONE_NAME" IN {};
注意:
- 任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的
- IP 地址上
- 缓存名称服务器的配置:监听外部地址即可
- dnssec: 建议关闭 dnssec,设为 no
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于