DNS
- dns分为根域(.)
- 顶级域(.com,.cn,.org等等)
通用域和国家域 - 主域(二级域名)(aliyun.com)
- 子域(三级域名)(www.aliyun.com ,123.aliyun.com,abc.aliyun.com)
DNS的记录类型
- A记录
域名指向ip,正向解析 - PTR
ip查找域名,反向解析 - CNAME
域名指向域名,由指向的域名做A记录查找ip换回 - NS
客户通过查询dns记录,如当前的dns无法提供权威解析,则返回一条ns记录,客户端再通过ns记录提供的dns权威服务器进行解析。
DNS的两个查询原理
- 递归查询
当dns服务器收到用户的请求时,必须返还用户一个准确的查询结果。(如果是企业内部使用可以关闭,但是如果需要解析公网的,建议打开,但是打开一定要做限制)。 - 迭代查询
当dns服务器收到用户的请求时,并不直接回复查询结果,而是告诉另一台dns服务器的地址,用户再去请求这台的,依次反复,最后拿到结果。
自建DNS
BIND:
域名解析服务
权威域名解析
DNS调试工具
- 下载bind
bind bind-utils - 启动并设置开机自启
systemctl enable named
systamctl start named - 查看端口
netstat -lntp 默认监听在53的端口 - 修改配置文件/etc/named.conf,图一可以改为localhost,也可以改为any(任何),建议改为localhost。
- 检查语法 named-checkconf
重启 systemctl restart named
rndc status ,远程的方式管理named
rndc reload 全程重启 - 将其他服务器的dns改为 安装bind的服务器ip地址。尝试ping 外网网站,看是否能通。
配置自定义区域
A记录设置
- vim /etc/named.conf 添加一个新的区域
//默认可以对任何域名提供解析服务;因为named.ca中存储的是全球根域服务器;
zone "oldxu.com" IN {
type hint;
file "oldxu.com.zone";
区域配置文件名称
相对路径,因为默认调用的是 /var/named/ 下的文件
};
- vim /var/named/oldxu.com.zone (邮箱右面可以不用带点)
$TTL 600
oldxu.com. IN SOA ns.oldxu.com. qq.oldxu.com. (
#区域名称 #IN SOA起始授权 #ns.dldxu.com是固定写法 #邮箱
20210518 (序列号。通常用时间戳表示)
10800 (刷新时间)
900 (重试时间)
604800 (过期时间)
86400 (缓存dns服务器可以缓存多久)
)
oldxu.com. IN NS ns1.oldxu.com.
指定域名的权威解析服务器(NS一定要写)
ns1.oldxu.com. IN A 172.16.1.91
设定权威服务器所在ip
设定域名解析(什么域名匹配哪个ip)
www.oldxu.com. IN A 1.1.1.1
ttt.oldxu.com. IN A 2.2.2.2
- named-checkconf(检查配置文件)
named-checkzone oldxu.com /var/named/oldxu.com.zone (检查zone文件) - rndc reload
CNAME
和 A记录没什么差别, 就是 域名 和在/var/named/下的文件中,将域名解析配置,由域名指向域名即可。
PTR
先配置zone文件,反向解析配置:如果 你的ip是 10.0.0.100,那么在配置文件中就要倒过来写 “0.0.10.in-addr.arpa” ,建议同时配置正向解析。
$TTL 600
@ IN SOA 1.16.172.in-addr.arpa. qq.oldxu.com. (
20210518
10800
900
604800
86400
)
设置反向解析的ip地址。
@ IN NS ns1.oldxu.com.
91 IN PTR ns1.oldxu.com.
设定ip对应的域名
5 IN PTR lb01.oldxu.com.
6 IN PTR lb02.oldxu.com.
限制递归查询的网段
/etc/named.conf,再递归查询的后面 写入:allow-recursion { 网段+掩码;};(大括号里最后的分号不要忘了写)
dns主辅同步
master
在/etc/named.conf 配置文件中options下写入以下两行进行配置。
写在options下是全局配置。也可以写在单独的zone下面。
//允许哪个地址能同步master配置信息
allow-transfer {172.16.1.92;};
//主动通知辅助dns域名变更
also-notify {172.16.1.92;};
主辅同步,必须修改时间。在master上修改
backup
- 先修改监听地址(localhost),其次修改访问限制(允许谁来查询any)。
- 在 options 下 添加 masterfile-format text;。
- 添加区域配置文件
zone "oldxu.com" IN {
type slave;(类型)
file "slaves/oldxu.com.zone";
masters { 172.16.1.91; };
};
- 检查语法 named-checkconf
- 重启服务 systemctl restart named (rndc reload)
配置dns高可用
在/etc/resolv.conf,配置两个dns即可
nameserver 172.16.1.91
nameserver 172.16.1.92
dns父域和子域的配置
因为backup和master是同步的,所以只需要配置master即可。
二级域名 oldxu.com
三级域名 www.oldxu.com
子域是 三级域名的 附属域, 比如 ttt.www.oldxu.com
首先在父域授权子域,添加子域解析
ops.oldxu.com. IN NS ns1.ops.oldxu.com
ns1.ops.oldxu.com. IN A 172.16.1.93
- 在子域服务器添加 zone的配置(/etc/named.conf),以及配置文件(/var/named/ops.oldxu.com.zone)。
zone "ops.oldxu.com" IN {
type master; (类型写master)
file "ops.oldxu.com.zone";
};
配置文件
$TTL 7200
ops.oldxu.com. IN SOA ns.ops.oldxu.com. qq.oldxu.com. (
2021041516
10800
900
604800
86400
)
;配置域名解析的指向(由172.1.6.1.3来解析4级域名)
ops.oldxu.com. IN NS ns1.ops.oldxu.com.
ns1.ops.oldxu.com. IN A 172.16.1.93
;配置四级域名
www.ops.oldxu.com. IN A 5.5.5.5
ttt.ops.oldxu.com. IN A 4.4.4.4
子域和父域的区别
子域和父域各自负责各自的区域,彼此没有联系,父域可以查到子域的,但是子域查不到父域的,如果想解决,就需要做dns转发
dns转发
转发就是将查询请求转至某一台服务器进行解析(被转发的服务器必须开启递归查询)。
转发分为两类:
- 区域转发:仅转发特定的区域
- 全局转发:来者不拒
转的 type的类型是 forward。
区域转发 写在 zone下面
zone "ZONE_NAME" IN {
type forward;
forward { first | only };
forwarders { SERVER_IP; };
};
全局转发 写在options下面