DNS服务
- DNS的简介:
域名系统(Domain Name System缩写DNS,Domain Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串
目的 : 为了减少主服务器的压力
- 域的分类
顶级域:顶级域(Top Level Domain,简称TLD)分为三类
通用顶级域:诸如 .com(商业机构) .org(非营利性组织) .net(网络服务机构)等
国家顶级域:诸如 .cn(中国) .uk(英国) .us(美国) .jp(日本)
反向域(基础建设顶级域):.arpa,即从IP到FQDN的反向解析
- 解析过程:
- DNS服务器类型:
主DNS服务器:负责解析至少一个域。
辅助(从)DNS服务器:负责解析至少一个,是主DNS服务器的辅助。
缓存DNS服务器:不负责解析域,只是缓存域名解析结果。
DNS返回的结果类型:
肯定答案:查询的域存在,会被缓存下来。
否定答案:不存在查询的域名,因此不存在与其查询的域名对应的IP;会被缓存下来。
权威答案:所查询的域名的结果是由负责解析这个域的DNS服务器所返回的答案。
非权威答案:在缓存中查询的结果。
-
简单搭建 DNS服务:
环境配置
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# vim /etc/selinux//config SELINUX=enforcing 改为 SELINUX=disabled [root@localhost ~]# reboot
1.安装相关软件
[root@localhost ~]# yum -y install bind bind-chroot bind-utils caching-nameserver
2.配置文件
[root@localhost ~]# rpm -ql bind
/etc/logrotate.d/named
/etc/named # 区域文件 存放目录
/etc/named.conf # 主配置文件
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
3开启named 服务 并设置开机自启
[root@localhost ~]# systemctl start named
[root@localhost ~]# netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4446/named
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 905/sshd
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 4446/named
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 982/master
tcp 0 0 192.168.9.8:22 192.168.9.1:54421 ESTABLISHED 1035/sshd: root@not
tcp 0 0 192.168.9.8:47749 199.9.14.201:53 FIN_WAIT2 -
tcp 0 48 192.168.9.8:22 192.168.9.1:54416 ESTABLISHED 1033/sshd: root@pts
tcp6 0 0 ::1:53 :::* LISTEN 4446/named
tcp6 0 0 :::22 :::* LISTEN 905/sshd
tcp6 0 0 ::1:953 :::* LISTEN 4446/named
tcp6 0 0 ::1:25 :::* LISTEN 982/master
[root@localhost ~]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
配置文件
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { any; }; # 设置监听的 IP 修改为 any 或者 注释掉 解释允许所有IP
listen-on-v6 port 53 { ::1; }; # ipv6的监听地址
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; }; #只允许本地主机localhost,any或者注释掉就是允许所有主机查询
recursion yes; #递归查询
编辑配置文件 vim /etc/named.rfc1912.zones
zone "hello.com" IN {
type master;
file "hello.com.zone";
allow-update {none; };
};
zone "9.168.192.in-addr.arpa" IN {
type master;
file "hello.com.local";
allow-update {none; };
};
$TTL 86400 #有效解析记录的生存周期
@ IN SOA dfzr.com. admin.dfzr.com.( #SOA 标记、域名、管理邮箱
2011030501 #更新序列号,可以是10 位以内的整数
3H #刷新时间,重新下载地址数据的间隔
15M #重试延时,下载失败后的重试间隔
1W #失效时间,超过该时间仍无法下载则放弃
1D #无效解析记录的生存周期
)
正向解析文件
[root@localhost named]# cat hello.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.9.8
www IN A 192.168.9.8
ftp IN A 192.168.9.8
AAAA ::1
反向解析文件
[root@localhost named]# cat hello.com.local
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.9.8
8 IN PTR www.hellow.com
配置
[root@localhost named]# cat /etc/resolv.conf
# Generated by NetworkManager
search hello.com
nameserver 192.168.9.8
检查语法是否错误
[root@localhost ~]#named-checkconf
重启DNFS服务
[root@localhost ~]#service named restart
使用dig测试
[root@localhost named]# dig www.hello.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> www.hello.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57847
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.hello.com. IN A
;; ANSWER SECTION:
www.hello.com. 86400 IN A 192.168.9.8
;; AUTHORITY SECTION:
hello.com. 86400 IN NS hello.com.
;; ADDITIONAL SECTION:
hello.com. 86400 IN A 192.168.9.8
;; Query time: 0 msec
;; SERVER: 192.168.9.8#53(192.168.9.8)
;; WHEN: Wed Jul 15 22:18:00 EDT 2020
;; MSG SIZE rcvd: 88
[root@localhost named]# dig 192.168.9.8
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> 192.168.9.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 32085
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;192.168.9.8. IN A
;; AUTHORITY SECTION:
. 10393 IN SOA a.root-servers.net. nstld.verisign- grs.com. 2020071501 1800 900 604800 86400
;; Query time: 0 msec
;; SERVER: 192.168.9.8#53(192.168.9.8)
;; WHEN: Wed Jul 15 22:18:24 EDT 2020
;; MSG SIZE rcvd: 115
SERVFALL DNS服务端处理请求出错
NXDOMAIN 没有请求查询的记录
REFUSED DNS服务端拒绝客户端的解析请求
NOERROR