Linux下DNS简单部署(主从域名服务器)
一、DNS简介
DNS(Domain Name System),域名系统,因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。DNS服务器的作用就是就好比生活中的电话簿、114查号台一样,为各种网络程序找到对应目标主机的IP地址或对应的主机域名。
二、DNS功能
每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。
主机名到IP地址的映射有两种方式:
1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。
正向解析:根据主机名称(域名)查找对应的IP地址(实际应用中最多的)
反向解析:根据IP地址查找对应的主机域名(不常用,一般用于搭建邮件服务器时。)
根据服务器与所提供域名解析记录的关系,将DNS服务器分为不同的角色:
1)缓存域名服务器,也称为 唯高速缓存服务器
通过向其他域名服务器查询获得域名->IP地址记录
将域名查询结果缓存到本地,提高重复查询时的速度
2)主域名服务器
特定DNS区域的官方服务器,具有唯一性
负责维护该区域内所有域名->IP地址的映射记录
3)从域名服务器(通俗一点就是用于备份DNS服务器的)
也称为 辅助域名服务器
其维护的 域名->IP地址记录 来源于主域名服务器
搭建DNS服务应用的软件为:BIND(Berkeley Internet Name Daemon)
三、DNS服务环境部署记录
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 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 | 1)安装DNS服务所需要的软件包 [root@ test ~] # yum -y install bind bind-chroot bind-util bind-libs ------------------------------------------------------------------------------------------------ 解释: bind 提供了域名服务的主要程序及相关文件 bind-utils 提供了对DNS服务器的测试工具程序(如 nslookup 、 dig 等) bind-chroot 为bind提供一个伪装的根目录以增强安全性(将“ /var/named/chroot/ ”文件夹作为BIND的根目录) ------------------------------------------------------------------------------------------------ 2)DNS服务器的配置(服务端要能联网) [root@ test ~] # cp /etc/named.conf /etc/named.conf.bak [root@ test ~] # vim /etc/named.conf options { listen-on port 53 { any; }; #使用53端口监听,默认监听的是127.0.0.1,这里修改为any(或者直接修改为服务端的ip地址,如服务器ip为192.168.1.24) listen-on-v6 port 53 { ::1; }; #监听ipv6的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 ; dnssec-lookaside auto; bindkeys- file "/etc/named.iscdlv.key" ; managed-keys-directory "/var/named/dynamic" ; }; logging { #named服务的日志文件信息 channel default_debug { file "data/named.run" ; severity dynamic; }; }; zone "." IN { #根(.)域的配置及信息(也可以通过其它上级域名转发功能来配置缓存域名服务器,可以去了解下) type hint; file "named.ca" ; }; [root@ test ~] # chmod 770 /var/named/ [root@ test ~] # ls -lh /etc/named.conf -rw-r-----. 1 root named 984 Nov 20 2015 /etc/named .conf [root@ test ~] # /etc/init.d/named start Generating /etc/rndc .key: [ OK ] Starting named: [ OK ] [root@ test ~] # ps -ef|grep name named 1592 1 0 15:03 ? 00:00:00 /usr/sbin/named -u named -t /var/named/chroot root 1614 32378 0 15:03 pts /0 00:00:00 grep name [root@ test ~] # netstat -tunlp|grep named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1592 /named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 1592 /named tcp 0 0 ::1:53 :::* LISTEN 1592 /named tcp 0 0 ::1:953 :::* LISTEN 1592 /named udp 0 0 127.0.0.1:53 0.0.0.0:* 1592 /named udp 0 0 ::1:53 :::* 1592 /named 3)客户端测试 将上面服务器的ip地址添加到客户端的 /etc/resolv .conf文件里 [root@test2 ~] # cat /etc/resolv.conf nameserver 192.168.1.24 // 此处的192.168.1.24是上面DNS服务器的ip地址 [root@test2 ~] # ping www.baidu.com PING www.a.shifen.com (119.75.213.51) 56(84) bytes of data. 64 bytes from 119.75.213.51: icmp_seq=1 ttl=55 time =2.58 ms 64 bytes from 119.75.213.51: icmp_seq=2 ttl=55 time =2.29 ms ....... [root@test2 ~] # dig www.baidu.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> www.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id : 55147 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 5 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 1100 IN CNAME www.a.shifen.com. www.a.shifen.com. 200 IN A 119.75.213.50 www.a.shifen.com. 200 IN A 119.75.213.51 ;; AUTHORITY SECTION: a.shifen.com. 1100 IN NS ns4.a.shifen.com. a.shifen.com. 1100 IN NS ns2.a.shifen.com. a.shifen.com. 1100 IN NS ns3.a.shifen.com. a.shifen.com. 1100 IN NS ns1.a.shifen.com. a.shifen.com. 1100 IN NS ns5.a.shifen.com. ;; ADDITIONAL SECTION: ns5.a.shifen.com. 1100 IN A 119.75.222.17 ns3.a.shifen.com. 1100 IN A 61.135.162.215 ns4.a.shifen.com. 1100 IN A 115.239.210.176 ns1.a.shifen.com. 1100 IN A 61.135.165.224 ns2.a.shifen.com. 1100 IN A 180.149.133.241 ;; Query time : 1 msec ;; SERVER: 192.168.1.233 #53(192.168.1.233) ;; WHEN: Wed Jun 21 15:12:20 2017 ;; MSG SIZE rcvd: 260 ------------注意事项------------- 客户端必须要跟服务器端能够通信(能 ping 通)及关闭selinux ---------------------------------------扩展------------------------------------------- 上面在 /etc/named .conf文件里没有自定义域名去进行解析设置,下面说下自定义域名的设置: 1) DNS主域名服务器配置 [root@ test ~] # cp /etc/named.conf /etc/named.conf2.bak [root@ test ~] # vim /etc/named.conf #追加下面内容,即添加wangshibo.com域名配置。如果有多个域名,就如下添加多个类似配置。 ...... zone "wangshibo.com" IN { #指定区名。正向解析 type master; #服务器类别,master为主域名 file "wangshibo.com_zone" ; #正向解析区域文件名wangshibo.com_zone,在/var/named目录下创建 allow-transfer {192.168.1.23;}; #指定从(辅助)域名服务器IP。即DNS从服务器的ip是192.168.1.23 }; zone "1.168.192.in-addr.arpa" IN { #域名对应的ip地址网段为192.168.1.0,此处必须按照相 。反向解析 同的格式写 type master; file "192.168.1.zone" ; #反向解析文件名192.168.1.zone allow-transfer {192.168.1.23;}; }; [root@ test ~] # vim /var/named/wangshibo.com_zone $TTL 1D @ IN SOA ns1.wangshibo.com. mail.www.wangshibo.com. ( 2014102101 #主DNS的此解析文件没改动一次,都要修改一次这个值,然后重启naned或rndc reload重启,从DNS就会自动同步过去 1D 1H 1W 3H ) @ IN NS ns1.wangshibo.com. #主域名的域名地址。NS是域名服务器 ns1.wangshibo.com. IN A 192.168.1.24 #主域名的ip地址 @ IN NS ns2.wangshibo.com. #从域名的域名地址。NS是域名服务器 ns2.wangshibo.com. IN A 192.168.1.23 #从域名的ip地址 @ IN MX 10 mail.ww.wangshibo.com. #邮件服务器的域名地址 mail.www.wangshibo.com. IN A 192.168.1.4 www.wangshibo.com. IN A 192.168.1.2 ftp .wangshibo.com IN A 192.168.1.3 win7.wangshibo.com. IN A 192.168.1.224 linux.wangshibo.com. IN CNAME ns1.wangshibo.com. smb.wangshibo.com. IN CNAME ns1.wangshibo.com. dhcp.wangshibo.com. IN CNAME ns1.wangshibo.com. [root@ test ~] # vim /var/named/192.168.1.zone $TTL 1D @ IN SOA ns1.wangshibo.com. mail.www.wangshibo.com. ( 2014102101 #主DNS的此解析文件没改动一次,都要修改一次这个值,然后重启naned或rndc reload重启,从DNS就会自动同步过去 1D 1H 1W 3H ) @ IN NS ns1.wangshibo.com. @ IN NS ns2.wangshibo.com. 24 IN PTR ns1.wangshibo.com. 23 IN PTR ns2.wangshibo.com. @ IN MX 10 mail.www.wangshibo.com. 4 IN PTR mail.www.wangshibo.com. 2 IN PTR www.wangshibo.com. 3 IN PTR ftp .wangshibo.com. 23 IN PTR win7.wangshibo.com. [root@ test ~] # /etc/init.d/named restart Stopping named: [ OK ] Starting named: [ OK ] 在客户端测试 [root@test2 ~] # cat /etc/resolv.conf search wangshibo.com nameserver 192.168.1.24 [root@test2 ~] # dig www.wangshibo.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> www.wangshibo.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id : 29152 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.wangshibo.com. IN A ;; ANSWER SECTION: www.wangshibo.com. 86400 IN A 192.168.1.2 ;; AUTHORITY SECTION: wangshibo.com. 86400 IN NS ns2.wangshibo.com. wangshibo.com. 86400 IN NS ns1.wangshibo.com. ;; ADDITIONAL SECTION: ns1.wangshibo.com. 86400 IN A 192.168.1.24 ns2.wangshibo.com. 86400 IN A 192.168.1.23 ;; Query time : 1 msec ;; SERVER: 192.168.1.24 #53(192.168.1.24) #注意这行,说明是主DNS从域名服务器解析的 ;; WHEN: Wed Jun 21 15:39:09 2017 ;; MSG SIZE rcvd: 119 1) DNS从域名服务器配置 从域名服务器的ip为192.168.1.23 服务的安装过程在上面已介绍,此处省略 [root@test33 ~] # cp /etc/named.conf /etc/named.conf.bak [root@test33 ~] # vim /etc/named.conf options { listen-on port 53 { any; }; 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" ; allow-query { any; }; recursion yes ; dnssec- enable yes ; dnssec-validation yes ; dnssec-lookaside auto; 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 "wangshibo.com" IN { type slave; file "wangshibo.com_zone" ; masters {192.168.1.24;}; }; zone "1.168.192.in-addr.arpa" IN { type slave; file "192.168.1.zone" ; masters {192.168.1.24;}; }; [root@test33 ~] # chmod 770 /var/named/ [root@test33 ~] # ll /var/named/ -d drwxrwx---. 6 root named 4096 Jun 21 15:44 /var/named/ [root@test33 ~] # service named restart Stopping named: [ OK ] Generating /etc/rndc .key: [ OK ] Starting named: [ OK ] 客户端测试 [root@test2 ~] # dig @192.168.1.23 www.wangshibo.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> @192.168.1.23 www.wangshibo.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id : 12862 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.wangshibo.com. IN A ;; ANSWER SECTION: www.wangshibo.com. 86400 IN A 192.168.1.2 ;; AUTHORITY SECTION: wangshibo.com. 86400 IN NS ns2.wangshibo.com. wangshibo.com. 86400 IN NS ns1.wangshibo.com. ;; ADDITIONAL SECTION: ns1.wangshibo.com. 86400 IN A 192.168.1.24 ns2.wangshibo.com. 86400 IN A 192.168.1.23 ;; Query time : 1 msec ;; SERVER: 192.168.1.23 #53(192.168.1.23) #注意这行,说明是从DNS从域名服务器解析的 ;; WHEN: Wed Jun 21 15:53:47 2017 ;; MSG SIZE rcvd: 119 最后,在客户机的 /etc/resolv .conf文件里添加上面主从DNS地址,就可以正常解析上面在 /var/named/192 .168.1.zone里设置的域名了 # vim /etc/resolv.conf nameserver 192.168.1.24 nameserver 192.168.1.23 -----------------------------------------注意事项-------------------------------------------- a)如果还是无法解析,请返回主域名服务器的 /var/named 目录给区域配置文件加上权限(单纯是为了练习的话,可以加到最大权限到777) b)以上的练习都是在关闭防火墙与seLinux的状态下操作的,如果防火墙开启,可自行去添加规则 |
最后务必查看下/var/log/messages日志的内容,查看DNS主从是否启动正常,是否实现了同步。
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
· 全程使用 AI 从 0 到 1 写了个小工具