DNS服务
DNS服务器的类型
- 主DNS服务器
- 从DNS服务器
- 缓存DNS服务器(转发器)
主DNS服务器: Master - 管理和维护所负责解析的域内解析库的服务器
从DNS服务器: Slave
从主服务器或从服务器“复制”(区域传输)解析库副本- 序列号:解析库版本号,主服务器解析库变化时,其序列递增
- 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
- 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
- 过期时长:从服务器联系不到主服务器时,多久后停止服务
- 通知机制:主服务器解析库发生变化时,会主动通知从服务器
本地解析配置文件:
[root@centos8~]#cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
DNS:Domain Name System 域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
基于C/S架构,服务器端口号:53/udp, 53/tcp
DNS查询类型
- 递归查询:得到的是最终结果,负责到底
- 迭代查询:得到的是最好结果,不负责到底
解析类型
- FQDN --> IP
- IP --> FQDN
注意:正反向解析是两个不同的名称空间,是两棵不同的解析树
完整的查询请求经过的流程
Client -->hosts文件 --> Clinet DNS Service Local Cache --> DNS Server (recursion) --> Server Cache -->iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…
DNS软件bind
DNS服务器软件:bind,powerdns,unbound
BIND相关程序包
- yum list all bind*
- bind:服务器 #需要安装
- bind-libs:相关库
- bind-utils: 客户端 #需要安装
- bind-chroot: 安全包,将dns相关文件放至 /var/named/chroot/
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和本地回环地址的解析库
主配置文件
- 全局配置:options {};
- 日志子系统配置:logging {};
- 区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
zone “ZONE_NAME” IN {};
注意: - 任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上
- 缓存名称服务器的配置:监听外部地址即可
- dnssec: 建议关闭dnssec,设为no
语法检查命令:
[root@centos8|~]#named-checkconf
[root@centos8|~]#named-checkzone magedu.org /var/named/magedu.org.zone
服务器端配置
[root@centos8~]#yum install -y bind bind-utils
[root@centos8~]#systemctl start named
[root@centos8~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=none
IPADDR=10.0.0.8
PREFIX=24
GATEWAY=10.0.0.2
DNS1=127.0.0.1
ONBOOT=yes
[root@centos8named]#nmcli connection reload
[root@centos8named]#nmcli connection up eth0
[root@centos8named]#cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 127.0.0.1
rndc 命令
利用rndc工具可以实现管理DNS功能
rndc 监听端口: 953/tcp
命令格式
rndc COMMAND
COMMAND:
status: 查看状态
reload: 重载主配置文件和区域解析库文件
reload zonename: 重载区域解析库文件
retransfer zonename: 手动启动区域传送,而不管序列号是否增加 notify zonename: 重新对区域传送发通知
reconfig: 重载主配置文件
querylog: 开启或关闭查询日志文件/var/log/message
trace: 递增debug一个级别
trace LEVEL: 指定使用的级别
notrace:将调试级别设置为 0
flush:清空DNS服务器的所有缓存记录
三种测试方式
[root@centos8named]#host www.magedu.com 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
www.magedu.com has address 101.200.188.230
[root@centos8named]#ping www.magedu.com
PING www.magedu.com (101.200.188.230) 56(84) bytes of data.
64 bytes from 101.200.188.230 (101.200.188.230): icmp_seq=1 ttl=128 time=7.38 ms
64 bytes from 101.200.188.230 (101.200.188.230): icmp_seq=2 ttl=128 time=6.76 ms
64 bytes from 101.200.188.230 (101.200.188.230): icmp_seq=3 ttl=128 time=7.01 ms
^C
--- www.magedu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 62ms
rtt min/avg/max/mdev = 6.764/7.048/7.375/0.260 ms
[root@centos8named]#dig www.magedu.com @127.0.0.1
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> www.magedu.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15783
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 19
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: c7713f09a0b3c5890ab366315e43708f104ee161d3271b78 (good)
;; QUESTION SECTION: #问题:要查询的内容IP
;www.magedu.com. IN A
;; ANSWER SECTION: #回答:返回的结果IP
www.magedu.com. 471 IN A 101.200.188.230
;; AUTHORITY SECTION: #验证:由哪几台DNS服务器提供的答案
magedu.com. 172668 IN NS ns1.alidns.com. #默认保留时间172668
magedu.com. 172668 IN NS ns2.alidns.com.
;; ADDITIONAL SECTION:
ns1.alidns.com. 172668 IN A 106.11.141.111
ns1.alidns.com. 172668 IN A 106.11.141.121
ns1.alidns.com. 172668 IN A 106.11.211.51
ns1.alidns.com. 172668 IN A 106.11.211.61
ns1.alidns.com. 172668 IN A 140.205.41.11
ns1.alidns.com. 172668 IN A 140.205.41.21
ns1.alidns.com. 172668 IN A 140.205.81.11
ns1.alidns.com. 172668 IN A 140.205.81.21
ns2.alidns.com. 172668 IN A 106.11.211.52
ns2.alidns.com. 172668 IN A 106.11.211.62
ns2.alidns.com. 172668 IN A 140.205.41.12
ns2.alidns.com. 172668 IN A 140.205.41.22
ns2.alidns.com. 172668 IN A 140.205.81.12
ns2.alidns.com. 172668 IN A 140.205.81.22
ns2.alidns.com. 172668 IN A 106.11.141.112
ns2.alidns.com. 172668 IN A 106.11.141.122
ns1.alidns.com. 172668 IN AAAA 2400:3200:2000:54::1
ns2.alidns.com. 172668 IN AAAA 2400:3200:2000:55::1
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: 三 2月 12 11:27:11 CST 2020
;; MSG SIZE rcvd: 442
[root@centos8~]#nslookup
> server 127.0.0.1
Default server: 127.0.0.1
Address: 127.0.0.1#53
> www.magedu.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: www.magedu.com
Address: 101.200.188.230
修改配置文件
[root@centos8|~]#rpm -qc bind 查找配置文件
/etc/logrotate.d/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
[root@centos8|~]#vim /etc/named.conf
options {
listen-on port 53 {
localhost; }; --需要修改
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";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query {
any; }; --需要修改
[root@centos8~]#named-checkconf 检查语法是否错误
[root@centos8~]#rndc reload 重启服务
server reload successful
客户端配置
[root@centos7|~]#veth0
DEVICE=eth0
NAME=eth0
BOOTPROTO