欢迎大家来到IT世界,在知识的湖畔探索吧!
大家好,我是宁静知行者,一个安静写代码,勤奋写文章的技术人. 点击”关注”,每天为你分享【技术文章】、【问题总结】
在计算机的世界里,计算机的沟通都是通过ip进行通信,现在的ip是32位,如类似 210.11.22.43(只是举例ip),这样的ip是很难被记住的,那有没有一个比较好的记忆方式来和这个ip进行对应呢?域名,如 www.baidu.com,那它是怎么和对应的ip进行绑定的呢?那就要通过 DNS来进行管理了。
历程
- 单一文件 /etc/hosts
最早是通过在本地文件中,指定主机名和IP的映射关系,但是这个无法感知主机名的ip变更,且如果ip数量大,这个文件会很大
- dns 系统
单一文件 /etc/hosts 如果是在内网或是ip数量比较少时,是一个不错的选择,但如果是要进行外网连接时,就会出现ip数量大的问题了,后面就发展出 域名管理系统(DNS),通过dns ,不需要知道ip,只要知道主机名,就可以正常连接上主机了
DNS主机名与IP的查询流程
DNS目录结构
整个DNS系统最上方一定是一个点(.), 称为 root,以下是顶层域名,会有以下两种
- 一般顶级域名(gTLD),如.com、.gov、.org 等
- 国家顶级域名(ccTLD),如.cn .us 等
名称 |
说明 |
com |
公司、行业 |
org |
组织、机构 |
edu |
教育组织 |
gov |
政府单位 |
net |
网络、通讯 |
DNS的结构大概如下:
查询
从上面的DNS 的目标结构图可知,每种后缀类型的域名,都有不同的服务器进行管理的,当要进行对一个域名进行查询时,都是从顶级开始往下进行查询,每一个服务器只记录底下那一层的主要域名的信息,如查询 demo.com.cn 时,大致流程如下:
那是不是每次都是要经过这样的流程呢?每次查到后,都在dns系统中进行缓存,当下次进行访问时,会先确认本地缓存中是否有值,如果有的话会直接返回给客户端,同时这个缓存会有一个过期时间(TTL),超过这个时间之后,发起的流程就要重新来一遍。
示例: 查看以访问www.baidu.com为例
dig +trace www.baidu.com
[root@localhost named]# dig +trace www.baidu.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.13 <<>> +trace www.baidu.com
;; global options: +cmd
. 511832 IN NS j.root-servers.net.
. 511832 IN NS e.root-servers.net.
# 上面的部分是请求 . 服务器
;; Received 1097 bytes from 192.168.136.130#53(192.168.136.130) in 3 ms
com. 172800 IN NS e.gtld-servers.net.
# 上面是在请求 .com.服务器
;; Received 1173 bytes from 192.58.128.30#53(j.root-servers.net) in 219 ms
baidu.com. 172800 IN NS ns2.baidu.com.
# 上面是请求 .baidu.com.服务器
;; Received 849 bytes from 192.33.14.30#53(b.gtld-servers.net) in 152 ms
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
# 查询到 www.baidu.com. 是 CNAME记录 ,指向到 www.a.shifen.com.
# 返回对应的ip地址
;; Received 72 bytes from 180.76.76.92#53(ns7.baidu.com) in 23 ms
欢迎大家来到IT世界,在知识的湖畔探索吧!
名词解释
正解
由主机名查询得到IP的流程即正解。通常要有如下的几种标志:
SOA ,NS, A
反解
由ip找到主机名,记录信息比较重要的是:
PTR: 后面记录的数据就是反解的主机名
hint zone
当DNS服务器,在自己的数据库找不到对应的信息时,就会去 hint类型记录的zone里进行查找,默认是查找 name.ca里记录的内容
DNS服务安装
以 demo.com 域名为例,只作测试用,在本地进行dns测试
欢迎大家来到IT世界,在知识的湖畔探索吧!yum install -y bind bind-chroot bind-utils
- 配置文件,目录在 /etc/named.conf
- 配置cache-only DNS服务器,需要转发到其他服务器,只作缓存
options {
listen-on port 53 { 127.0.0.1;192.168.136.130; }; # 可以绑定指定的ip
listen-on-v6 port 53 { ::1; };
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; }; // 设置谁可以对当前dns服务器进行访问
forward only; // 这个设定可以使dns服务仅进行forward,即使有 .这个zone file也不会使用
forwarders {
192.168.136.2; // 转发到哪台后端的dns服务器
};
recursion yes;
};
- 配置 demo.com 域名的解析
欢迎大家来到IT世界,在知识的湖畔探索吧!options {
listen-on port 53 { 127.0.0.1;192.168.136.130; };
listen-on-v6 port 53 { ::1; };
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; };
allow-transfer {none;};
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
// hint类型的,未找到对应的zone时,会从这里来找
zone "." IN {
type hint;
file "named.ca";
};
// 对应的 demo.com的配置
zone "demo.com" IN {
type master;
file "named.demo.com";
};
// 对应的反解的配置
zone "136.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.136";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
- 增加正解(named.demo.com)和反解配置文件(named.192.168.136)
// named.demo.com 配置文件
$TTL 600
;SOA 如果有多部dns 服务器管理同一个域名时,进行zone file的传输管理
;参数有七个
;1. 是master DNS服务器
;2. 是管理员email,因为 @有特殊意义 demo@demo.com -> demo.demo.com
;3. 注意前面有 ( )序列号,序号越大代表越新,当slave 要判断是否主动下载时新的数据时,就以序列号比slave上的还要新来判断,故在变更数据时,要将这个数值增大
;4. 更新频率(Refresh),slave多久更新的判断,单位秒
;5. 失败重试时间,如果某些因素导致失败,salve 多久时间内,需要重新联机到master上,单位秒
;6. 失效时间(Expire),如果一直失败在尝试时间内,达到这个值,slave将会不再尝试,并将下载的zone file文件删除
;7. 如果这个zone file中的每笔记录都没有设置 TTL,那就以这个值为主
;Refresh >= Retry *2
;Refresh + Retry < Expire
;Expire >= Rrtry * 10
;Expire >= 7Days
@ IN SOA ns1.demo.com. demo.demo.com. (
2022080404
28800
14400
3600000
86400
)
@ IN NS ns1.demo.com.
@ IN NS ns2.demo.com.
;设置邮件的email server
;10 代表后面会有10台这样的服务器,以数字较小的那部优先
@ IN MX 10 mail.demo.com.
ns2.demo.com. IN A 192.168.136.130
ns1.demo.com. IN A 192.168.136.130
master.demo.com. IN A 192.168.136.130
www.demo.com. IN A 192.168.136.130
mail.demo.com. IN A 192.168.136.126
slave.demo.com. IN A 192.168.136.127
;设置p.demo.com的别名为 www.demo.com
p.demo.com. IN CNAME www.demo.com.
; named.192.168.136配置文件
; 以 www.demo.com 为例,越右代表网域越大,.(root)>com>demo ,因此是由小到大
; 但ip 不同,如 192.168.136.2 ,192 > 168 > 136 > 2,左边的网域越大,与dns的右到左不同,为了解决该问题,需要将ip返过来,在结尾加上 .in-addr.arpa字样
$TTL 600
@ IN SOA ns1.demo.com. demo.demo.com. (
2022080401
28800
14400
3600000
86400
)
@ IN NS ns1.demo.com.
128 IN PTR master.demo.com.
133 IN PTR p.demo.com.
127 IN PTR slave.demo.com.
- 启动 named
service named start
- 配置 /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.136.130 # 增加自建的dns服务
- 测试,出现以下的内容,说明配置成功
通过 dig命令查看各个类型的数据
查看 A 记录
[root@localhost etc]# dig -t A master.demo.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.13 <<>> -t A master.demo.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55780
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; 发起的查询的数据
;; QUESTION SECTION:
;master.demo.com. IN A
; 返回的数据
;; ANSWER SECTION:
master.demo.com. 600 IN A 192.168.136.130
;; AUTHORITY SECTION:
demo.com. 600 IN NS ns2.demo.com.
demo.com. 600 IN NS ns1.demo.com.
;; ADDITIONAL SECTION:
ns1.demo.com. 600 IN A 192.168.136.130
ns2.demo.com. 600 IN A 192.168.136.130
查看 SOA 数据
[root@localhost etc]# dig -t SOA demo.com
;; ANSWER SECTION:
demo.com. 600 IN SOA ns1.demo.com. demo.demo.com. 2022080404 28800 14400 3600000 86400
查看 NS记录
[root@localhost etc]# dig -t NS demo.com
;; ANSWER SECTION:
demo.com. 600 IN NS ns2.demo.com.
demo.com. 600 IN NS ns1.demo.com.
查看 PTR
[root@localhost etc]# dig -x 192.168.136.133
;; ANSWER SECTION:
133.136.168.192.in-addr.arpa. 600 IN PTR p.demo.com.
往期回顾
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/12511.html