DNS服务搭建
一、DNS基础
域名系统(DNS)是一个层次化得分布式数据库。存储用于互联网主机名与IP地址相映射的信息,邮件路由信息,及其它互联网应用所用到的数据。DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
客户端通过调用一个解析器库来在DNS 中查找信息,解析器向一个或多个名字服务器发出请求并解释响应。BIND 9软件分发包中包括一个名字服务器,named,和一个解析器库,liblwres。旧的libbind解析器库也可以作为一个单独的下载包从ISC得到。
二、DNS功能
每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。
主机名到IP地址的映射有两种方式:
1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。
三、域名结构
通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名。 Internet 的顶级域名由 Internet网络协会域名注册查询负责网络地址分配的委员会进行登记和管理,它还为 Internet的每一台主机分配唯一的 IP 地址。全世界现有三个大的网络信息中心: 位于美国的 Inter-NIC,负责美国及其他地区; 位于荷兰的RIPE-NIC,负责欧洲地区;位于日本的APNIC ,负责亚太地区。
四、搭建DNS服务器
环境:CentOS Linux release 7.4.1708 (Core)
关闭iptables和selinux
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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 | 1 )安装(bind主要软件,bind-util提供测试工具,bind-chroot提供一个伪装的根目录以增强安全性(将“/var/named/chroot/”文件夹作为BIND的根目录) [root@controller ~]# yum -y install bind bind-chroot bind-util bind-libs 2 )DNS配置 #备份 [root@controller ~]# cp /etc/named.conf{,.bak} #修改配置 [root@controller ~]# vim /etc/named.conf // // named.conf // #options 控制全局服务配置和为其它语句设置缺省参数。 options { listen-on port 53 { any; }; #监听端口 53 ,默认监听 127.0 . 0.1 ,修改为any允许任意主机,注意{}一定要空格 listen-on-v 6 port 53 { :: 1 ; }; #监听ipv 6 的IP地址选项 directory "/var/named" ; #DNS的根目录,由于安装了bind-chroot的所致,因此服务的实际工作目录为/var/named/chroot/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" ; allow-query { any; }; #允许查询的主机,默认为localhost,这里修改为any recursion yes; #开启递归查询 dnssec-enable yes; dnssec-validation yes; /* Path to ISC DLV key */ 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 指定服务器纪录哪些日志,和在哪里纪录日志消息 logging { channel default_debug { file "data/named.run" ; severity dynamic; }; }; #zone 定义一个区 zone "." IN { type hint; file "named.ca" ; }; include "/etc/named.rfc1912.zones" ; include "/etc/named.root.key" ; #授权 [root@controller var]# chmod 770 /var/named/ #启动服务 [root@controller var]# service named start [root@controller var]# ss -lnt|grep 53 LISTEN 0 10 172.17 . 0.1: 53 *:* 3 )客户机测试 修改resolve.conf文件添加dns服务器ip [root@lvs_m ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 192.168 . 128.169 [root@lvs_m ~]# nslookup > www.baidu.com Server: 192.168 . 128.169 Address: 192.168 . 128.169 # 53 Non-authoritative answer: www.baidu.com canonical name = www.a.shifen.com. Name: www.a.shifen.com Address: 14.215 . 177.38 Name: www.a.shifen.com Address: 14.215 . 177.39 4 )添加自定义域名 1 、修改/etc/named.conf文件添加如下内容 ... zone "www.baidu.com" IN { #正向解析,指定区域 type master; #服务器类型,master为主域名 file "www.baidu.com_zone" ; #正向解析区域文件名www.baidu.com_zone,在/var/named目录下创建 allow-transfer { 192.168 . 128.171 ;}; #从DNS服务器地址 }; zone "128.168.192.in-addr.arpa" IN { #反向解析,ip段为 192.168 . 128.0 / 24 反写 type master; file "192.168.128.zone" ; #反向解析文件名 allow-transfer { 192.168 . 128.171 ;}; }; #检查语法这点很重要,不然服务会出错。 [root@controller ~]# named-checkconf #创建域文件 $TTL 180 @ IN SOA yxb.qq.com. root.www.baidu.com. ( ; 0 ; serial 1 D ; refresh 1 H ; retry 1 W ; expire 44 H ) ; minimum @ IN NS ns 1 .www.baidu.com. ; ns 1 .www.baidu.com. IN A 192.168 . 128.169 www.baidu.com. IN A 192.168 . 128.211 #添加A纪录可以是多个地址 www.baidu.com. IN A 192.168 . 128.212 #创建反向解析域文件 [root@controller ~]# cat /var/named/ 192.168 . 128 .zone $TTL 180 @ IN SOA yxb.qq.com. root.www.baidu.com. ( ; 0 ; serial 1 D ; refresh 1 H ; retry 1 W ; expire 44 H ) ; minimum @ IN NS ns 1 .www.baidu.com. 169 IN PTR ns 1 .www.baidu.com. 211 IN PTR www.baidu.com. 212 IN PTR www.baidu.com. #检查语法 [root@controller ~]# named-checkzone www.baidu.com /var/named/www.baidu.com_zone zone www.baidu.com/IN: loaded serial 0 OK #重启dns服务 [root@controller ~]# service named restart #客户机测试 [root@lvs_m ~]# dig www.baidu.com ; <<>> DiG 9.8 . 2 rc 1 -RedHat -9.8 . 2 -0.62 .rc 1 .el 6 <<>> www.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64633 ;; flags: qr aa rd ra; QUERY: 1 , ANSWER: 2 , AUTHORITY: 1 , ADDITIONAL: 1 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 180 IN A 192.168 . 128.212 www.baidu.com. 180 IN A 192.168 . 128.211 ;; AUTHORITY SECTION: www.baidu.com. 180 IN NS ns 1 .www.baidu.com. ;; ADDITIONAL SECTION: ns 1 .www.baidu.com. 180 IN A 192.168 . 128.169 ;; Query time: 1 msec ;; SERVER: 192.168 . 128.169 # 53 ( 192.168 . 128.169 ) ;; WHEN: Thu Nov 23 00: 52: 38 2017 ;; MSG SIZE rcvd: 97 5 )DNS从服务器配置,只需配置/etc/named.conf文件不需要添加域文件 软件安装: [root@lvs_m ~]# yum -y install bind bind-chroot bind-util bind-libs #修改配置文件 [root@lvs_m ~]# vim /etc/named.conf options { listen-on port 53 { any; }; listen-on-v 6 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" ; allow-query { any; }; recursion yes; dnssec-enable yes; dnssec-validation yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key" ; managed-keys-directory "/var/named/dynamic" ; }; logging { channel default_debug { file "data/named.run" ; severity dynamic; }; }; zone "." IN { type hint; file "named.ca" ; }; zone "www.baidu.com" IN { type slave; #类型设置为slave file "www.baidu.com_zone" ; masters { 192.168 . 128.169 ; }; #主服务器ip }; zone "128.168.192.in-addr.arpa" IN { type slave; file "192.168.128.zone" ; masters { 192.168 . 128.169 ; }; }; include "/etc/named.rfc1912.zones" ; include "/etc/named.root.key" ; [root@lvs_m ~]# chmod 770 /var/named/ [root@lvs_m ~]# ll /var/named/ -d drwxrwx---. 6 root named 4096 Nov 23 01: 07 /var/named/ [root@lvs_m ~]# named-checkconf [root@lvs_m ~]# service named restart #测试 [root@controller ~]# dig www.baidu.com @ 192.168 . 128.171 ; <<>> DiG 9.9 . 4 -RedHat -9.9 . 4 -51 .el 7 <<>> www.baidu.com @ 192.168 . 128.171 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23616 ;; flags: qr aa rd ra; QUERY: 1 , ANSWER: 2 , AUTHORITY: 1 , ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0 , flags:; udp: 4096 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 180 IN A 192.168 . 128.211 www.baidu.com. 180 IN A 192.168 . 128.212 ;; AUTHORITY SECTION: www.baidu.com. 180 IN NS ns 1 .www.baidu.com. ;; ADDITIONAL SECTION: ns 1 .www.baidu.com. 180 IN A 192.168 . 128.169 ;; Query time: 226 msec ;; SERVER: 192.168 . 128.171 # 53 ( 192.168 . 128.171 ) //成功 ;; WHEN: Thu Nov 23 04: 36: 22 EST 2017 ;; MSG SIZE rcvd: 108 |
如对您有帮助,支持下呗!
微信

支付宝

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类