DNS概念 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。 DNS 的分布式数据库是以域名为索引的,每个域名实际上就是一棵很大的逆向树中路径,这棵逆向树称为域名空间(domain name space)。如图所示树的最大深度不得超过127 层,树中每个节点都有一个可以长达63 个字符的文本标号。
DNS域名解析过程 首先,客户端先在本地缓存查找有没有域名缓存,如果没有,客户端发出DNS请求翻译IP地址或主机名。DNS服务器在收到客户机的请求后: (1)检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息; (2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息; (3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。 (4)若没有找到,则返回错误信息。
DNS的分类 主DNS服务器: 就是一台存储着原始资料的DNS服务器。从DNS服务器: 使用自动更新方式从主DNS服务器同步数据的DNS服务器。也成辅助DNS服务器。缓存服务器: 不负责本地解析,采用递归方式转发客户机查询请求,并返回结果给客户机的DNS服务器。同时缓存查询回来的结果,也叫递归服务器。转发器: 这台DNS发现非本机负责的查询请求时,不再向根域发起请求,而是直接转发给指定的一台或者多台服务器。自身并不缓存查询结果。
查询DNS常用命令dig、nslookup、host的介绍 host命令也是大多数系统、软件库调用的解析命令,比如php中。
1 2 3 4 5 6 7 8 [root@boysec.cn ~]$host www.boysec.cn www.boysec.cn is an alias for my-blogssssss.b0.aicdn.com. my-blogssssss.b0.aicdn.com is an alias for nm.aicdn.com. nm.aicdn.com has address 183.131.200.61 nm.aicdn.com has address 183.131.200.72 nm.aicdn.com has address 183.131.200.74 nm.aicdn.com has address 183.131.200.68 nm.aicdn.com has address 1.81.5.177
nslookup能够反映出是哪个dnsserver返回的结果
1 2 3 4 5 6 7 8 9 [root@boysec.cn ~]$nslookup www.boysec.cn Server: 114.114.114.114 Address: 114.114.114.114#53 Non-authoritative answer: www.boysec.cn canonical name = my-blogssssss.b0.aicdn.com. my-blogssssss.b0.aicdn.com canonical name = nm.aicdn.com. Name: nm.aicdn.com Address: 183.131.200.72
dig返回整个解析过程的详细路径,类似traceroute
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [root@boysec.cn ~]$dig www.boysec.cn ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.2 <<>> www.boysec.cn ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25244 ;; flags: qr rd ra; QUERY: 1, ANSWER: 10, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;www.boysec.cn. IN A ;; ANSWER SECTION: www.boysec.cn. 437 IN CNAME my-blogssssss.b0.aicdn.com. my-blogssssss.b0.aicdn.com. 137 IN CNAME nm.aicdn.com. [root@boysec.cn ~]$dig www.boysec.cn +short my-blogssssss.b0.aicdn.com. nm.aicdn.com. 1.81.5.177 183.131.200.61 1.81.5.178 1.81.5.179 183.131.200.68 183.131.200.69 183.131.200.72 183.131.200.74
学习部署bind9 Bind是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain它是目前世界上使用最为广泛的DNS
环境准备 1 2 3 4 [root@k8s-dns ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@k8s-dns ~]# uname -a Linux k8s-dns.host.com 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
安装bind9 配置yum源 使用centos6自带的yum源即可,同时确保机器可以解析外网域名,并能连接公网
1 yum install -y bind-utils bind bind-devel bind-chroot
bind9主配置文件 1 2 3 4 5 6 7 8 9 10 options{ //全局选项 } zone "zone name" { //定义区域 } logging{ //日志文件 } include:加载别的文件
主配置文件的配置注意事项
语法严格,分号,空格 文件的权限,属主:root,属组:named,640 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [root@k8s-dns ~]# cat /etc/named.conf options { listen-on port 53 { 10.1.1.250; }; # 监听地址和端口 directory "/var/named/chroot/etc/"; #区域数据文件的存放位置 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服务的网段 empty-zones-enable no; forwarders {114.114.114.114;8.8.8.8; }; recursion yes; dnssec-enable no; dnssec-validation no; bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "/var/named/data/named.run"; severity dynamic; }; }; include "/etc/named.rfc1912.zones"; #加载自定义区域文件 include "/etc/named.root.key";
检查配置文件 1 # named-checkconf -z /etc/named.conf
没有报错就属于正常
启动bind9服务
1 2 3 # systemctl start named # systemctl enable named # netstat -lnpt
验证解析 配置DNS服务器指向 在/etc/resole里配置DNS服务器的ip地址为我们部署的主机ip
1 2 3 4 [root@k8s-dns ~]# cat /etc/resolv.conf # Generated by NetworkManager search host.com nameserver 10.1.1.250
验证解析 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@k8s-dns ~]# ping www.boysec.cn PING nm.aicdn.com (223.85.20.154) 56(84) bytes of data. 64 bytes from 223.85.20.154 (223.85.20.154): icmp_seq=1 ttl=128 time=43.4 ms [root@k8s-dns ~]# nslookup www.boysec.cn Server: 10.1.1.250 Address: 10.1.1.250#53 Non-authoritative answer: www.boysec.cn canonical name = my-blogssssss.b0.aicdn.com. my-blogssssss.b0.aicdn.com canonical name = nm.aicdn.com. Name: nm.aicdn.com Address: 183.240.60.117 Name: nm.aicdn.com Address: 223.85.20.154