DNS(domain name system 域名系统):基于C/S模式的域名解析服务,监听在53/udp,53/tcp端口,其中tcp用来区域传送,udp用来解析,其实是一个数据库,用于TCP/IP程序的分布式数据库,同时也是一种重要的网络协议,DNS储存了网络中的IP地址与对应主机的信息,邮件路由信息,还有其他网络应用方面的信息,它所提供的服务是用来将主机名和域名转换为IP,就像一个翻译官
dns的解析分为两种类型
递归查询:
客户端向本地设置的DNS服务器发起请求,然后DNS服务器响应该请求,如果本地缓存记录中有该查询记录,则直接返回,如果没有,DNS服务器则会向中介或者代理一样依次去向根名称服务器、顶级名称服务器,权威名称服务器发出请求,例如,DNS服务器向根名称服务器发出请求,询问该域名所对应的IP地址,根名称服务器会查询本地是否有记录,有则直接返回给DNS服务器,然后DNS服务器则告诉客户端所查找的IP地址,如果根也不知道,则继续由DNS服务器发出请求,依次询问,一直到找到该域名对应的IP地址,最后返回给客户端的一个过程
迭代查询:
和递归查询最大的差别是,所有的询问过程都由客户端自己完成,没有中间商赚差价,直接自己去向根服务器,顶级服务器。。。。等依次询问,直到有一个结果。
1 | sudo apt install bind9 bind9utils bind9-doc |
---|
修改主配置文件named.conf
1 2 3 4 | include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones"; include "/etc/bind/named.conf.log”; #增加日志记录 |
---|
修改named.conf.local文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #添加一个zone,配置写法可以参考zones.rfc1918,我们这里指定义一条正向解析 $ cat named.conf.local // // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; zone "tianchiapi.com” { #指定域名 type master; file "/etc/bind/zone-internal-tianchiapi/db.dns”; #创建zone-internal-tianchiapi目录,指定区域记录文件位置 forwarders {}; }; //如果是有多个域名需要解析,则依次往下写 zone "tianchitest1.com" { type master; file "/etc/bind/zone-internal-tianchiapi/test.dns"; forwarders {}; }; |
---|
修改named.conf.options文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #该文件是DNS服务器的全局配置 $ cat named.conf.options options { directory "/var/cache/bind”; #数据文件位置 forwarders { #设置转发请求的递归名称服务器的IP地址 114.114.114.114; 8.8.8.8; }; allow-query { any;}; recursion yes; #启用递归寻址 allow-transfer { any; }; dnssec-enable no; dnssec-validation no; auth-nxdomain no; #符合RFC1035 }; |
---|
修改named.conf.log文件
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | $ cat named.conf.log logging { channel query_log { file "query.log" versions 3 size 1g; #versions表示允许同时存在多少个版本的该文件 severity info; #日志级别 print-time yes; #在日志中写入时间 print-severity yes; #设定在日志中是否写入消息级别 print-category yes; #设定在日志中是否需要写入日志类别 }; category queries { query_log; }; channel update_log { file "update.log" versions 3 size 1g; severity debug; print-time yes; print-category yes; }; category update { update_log; }; channel client_log { file "client.log" versions 3 size 1g; severity debug; print-time yes; print-category yes; }; category client { client_log; }; channel network_log { file "network.log" versions 3 size 1g; severity debug; print-time yes; print-category yes; }; category network { network_log; }; channel resolver_log { file "resolver.log" versions 3 size 1g; severity debug; print-time yes; print-category yes; }; category resolver { resolver_log; }; channel lame-servers_log { file "lame-servers.log" versions 3 size 1g; severity debug; print-time yes; print-category yes; }; category lame-servers { lame-servers_log; }; }; |
---|
创建目录并设置解析
```
sudo mkdir zone-internal-tianchiapi vim zone-internal-tianchiapi/db.dns $TTL 600 @ IN SOA ns1 root ( 3 ; Serial 3600 ; Refresh 86400 ; Retry 86400 ; Expire 86400 ) ; Negative Cache TTL
; @ IN NS ns1 @ IN NS ns2 ns1 IN A 10.1.1.11 test1-live IN A 10.1.1.61 test1-storage IN A 10.1.1.61 test1-admin IN A 10.1.1.61 test1-gateway IN A 10.1.1.61 test1-turbine IN A 10.1.1.61 test1-zipkin IN A 10.1.1.61 test1-eureka IN A 10.1.1.61 test1-video IN A 10.1.1.61 test1-file IN A 10.1.1.61 test1-image IN A 10.1.1.61 test1-kibana IN A 10.1.1.61 test1-live IN A 10.1.1.61
1 2 3 4 5 6 | ## 重启服务 |
---|
sudo systemctl restart bind9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ## 验证 在另一台服务器上指定DNS服务器为我们刚创建好的IP地址,例如: ``` cat /etc/resolv.conf nameserver 10.1.1.13 search tianchiapi.com |
---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $ dig test1-gateway.tianchiapi.com ; <<>> DiG 9.10.3-P4-Ubuntu <<>> test1-gateway.tianchiapi.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62031 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;test1-gateway.tianchiapi.com. IN A ;; ANSWER SECTION: test1-gateway.tianchiapi.com. 600 IN A 10.1.1.61 ;; AUTHORITY SECTION: tianchiapi.com. 600 IN NS 10.1.1.11. ;; Query time: 1 msec ;; SERVER: 10.1.1.13#53(10.1.1.13) ;; WHEN: Sun Nov 25 14:57:28 CST 2018 ;; MSG SIZE rcvd: 96 |
---|
通过dig我们可以看到A,NS等记录,我们也可以使用dig +trace来看下查询过程
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 33 34 35 36 37 38 | $ dig +trace www.devilf.cc ; <<>> DiG 9.10.3-P4-Ubuntu <<>> +trace www.devilf.cc ;; global options: +cmd . 18143 IN NS e.root-servers.net. . 18143 IN NS g.root-servers.net. . 18143 IN NS k.root-servers.net. . 18143 IN NS m.root-servers.net. . 18143 IN NS d.root-servers.net. . 18143 IN NS i.root-servers.net. . 18143 IN NS c.root-servers.net. . 18143 IN NS h.root-servers.net. . 18143 IN NS l.root-servers.net. . 18143 IN NS f.root-servers.net. . 18143 IN NS b.root-servers.net. . 18143 IN NS a.root-servers.net. . 18143 IN NS j.root-servers.net. ;; Received 850 bytes from 10.1.1.13#53(10.1.1.13) in 1 ms cc. 172800 IN NS ac1.nstld.com. cc. 172800 IN NS ac2.nstld.com. cc. 172800 IN NS ac3.nstld.com. cc. 172800 IN NS ac4.nstld.com. cc. 86400 IN DS 519 8 1 7285EF05E1B4E679D4F072EEA9B00953E01F3AE2 cc. 86400 IN DS 519 8 2 E1EC6495ABD34562E6F433DEE201E6C6A52CB10AF69C04D675DA692D 2D566897 cc. 86400 IN RRSIG DS 8 1 86400 20181208050000 20181125040000 2134 . K30W90xWPofSP+kgBIBCMDncJ7ewr9k504cL+nrFrq/A0VjLAGTxGHRe M+K0hG1xBV+0ZhLpaAVy++rZECpn9XEOpoqf7EXJtbT2R27X36IrzvvB z4Hsp/AEMYaMmU665PkEftdk3RgA5u156UH8LeG0gGuhTn9AmaYEuYiY gg54FSa1nw/7e2fho0KWxGzZIE8gEPnXVuk30s+0tbJ2qi/Gu4x75pmV 49Rro/xNRNZUtrXfvWNOneKwiK1S0TndbGlGydibBjRKETyg1Iob6uu6 tlTDu20NhsWHEFyAW0e4xC+7A+NdxZLn6PbCmB1MCM6Wxj2oug8Tq8QL WxjC3A== ;; Received 670 bytes from 198.97.190.53#53(h.root-servers.net) in 271 ms devilf.cc. 172800 IN NS dns29.hichina.com. devilf.cc. 172800 IN NS dns30.hichina.com. RQGAP5UF6Q1NGVCKFNO8RANVDN5ILRIN.cc. 86400 IN NSEC3 1 1 0 - RR9VRBALT8EOD9SAK335LVITNSQII5FL NS SOA RRSIG DNSKEY NSEC3PARAM RQGAP5UF6Q1NGVCKFNO8RANVDN5ILRIN.cc. 86400 IN RRSIG NSEC3 8 2 86400 20181201140301 20181124140301 349 cc. slpKbVNxyTgp7EM1F0hkdSW53W3pul2lgxj55a4mixDncbST6kWyDrIo NWPzFl1zrFbq7HKXFfWZcCiZyJ9ZGw74oAeUSWUAfph44UUYY5CSXdlU 2ItzDNvv5mJV9Klu9IF5UqO8ebTQzeY9V835OoCTnx7rt5fs2iAc7xFE pcE= BL6MKB1NQG0IVOHTRSFV88164C1K8BPB.cc. 86400 IN NSEC3 1 1 0 - BLDPDNVR5GT167DKC1R82138PE3U59QI NS DS RRSIG BL6MKB1NQG0IVOHTRSFV88164C1K8BPB.cc. 86400 IN RRSIG NSEC3 8 2 86400 20181201083817 20181124083817 349 cc. N8wcEys1fVypSVlZnQGh7fpcvYLKwC0x7RFiHm9XXZ/aFkJkWhl6hiT3 GnLeKIGNf3C7odEUz2fLsY6+0nJwkoW16zSbKtvcyLv5xK7VJteSKRyo AzD1LP8BgA3bs1hjGuUeDo9aNAG6dJjpoTO1jPpiFEKbVSB/JgrN6OcL Zss= ;; Received 576 bytes from 192.42.176.30#53(ac4.nstld.com) in 284 ms www.devilf.cc. 600 IN CNAME www.devilf.cc.w.kunlunar.com. ;; Received 84 bytes from 140.205.81.19#53(dns29.hichina.com) in 29 ms |
---|
可以看到,先去找13个根服务器,然后根服务器告诉10.1.1.13让它去问.com顶级域名服务器,然后再去问权威域名服务器tianchiapi.com.,最后返回对应的IP。
查看bind的服务日志方法
1 2 3 4 5 6 7 8 9 10 11 12 | $ cd /var/cache/bind $ ll -h -rw-r--r-- 1 bind bind 528 Nov 25 10:23 client.log -rw-r--r-- 1 bind bind 1.7K Nov 25 15:01 lame-servers.log -rw-r--r-- 1 bind bind 221 Jul 17 15:31 managed-keys.bind -rw-r--r-- 1 bind bind 609 Nov 25 14:04 network.log -rw-r--r-- 1 bind bind 830M Nov 25 15:10 query.log -rw-r--r-- 1 bind bind 1.1G Nov 25 15:02 query.log.0 -rw-r--r-- 1 bind bind 1.1G Nov 25 14:53 query.log.1 -rw-r--r-- 1 bind bind 1.1G Nov 25 14:45 query.log.2 -rw-r--r-- 1 bind bind 3.6M Nov 25 15:10 resolver.log -rw-r--r-- 1 bind bind 0 Nov 25 10:04 update.log |
---|
1 | sudo systemctl -u bind9 -b debug -f |
---|
注:
```
BIND 9 中可用的类别名(category_name)有: 类别 说明 client 处理客户端请求。 config 配置文件分析和处理。 database 同BIND内部数据库相关的消息,用来存储区数据和缓存记录。 default 匹配所有未明确指定通道的类别。 dnssec 处理 DNSSEC 签名的响应。 general 包括所有未明确分类的 BIND 消息。 lame-servers 发现错误授权,即残缺服务器。 network 网络操作。 notify 区更新通知消息。 queries 查询日志 resolver 名字解析,包括对来自解析器的递归查询信息。 security 批准/非批准的请求。 update 动态更新事件。 xfer-in 从远程名字服务器到本地名字服务器的区传送。 xfer-out 从本地名字服务器到远程名字服务器的区传送。
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 33 | <p> </p> |
---|