部署DNS 服务器
部署DNS 服务器
前言
域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
部署DNS 服务器
centos系统配置
关闭防火墙
# systemctl stop firewalld --临时关闭防火墙
# systemctl disable firewalld --永久关闭防火墙
关闭selinux
临时关闭:
# setenforce 0
永久关闭:
# vim /etc/selinux/config
SELINUX=disabled --将enforcing改为disabled
# reboot --重启系统永久生效
安装BIND
BIND是开源软件,可让您在Internet上发布您的域名系统(DNS)信息,并为您的用户解析DNS查询。 BIND这个名字代表“BerkeleyInternet Name Domain”,因为该软件起源于20世纪80年代早期在加州大学伯克利分校。
BIND是迄今为止互联网上使用最广泛的DNS软件,它提供了一个强大而稳定的平台,在这个平台上,组织可以建立分布式计算系统,并知道这些系统完全符合已发布的DNS标准。
启动DNS服务
yum -y install bind*
# systemctl startnamed.service --启动DNS服务
# systemctl enable named.service --设置为开机启动
# netstat -anlp | grep named --查看监听端口为53
配置BIND软件
修改DNS服务的配置文件
修改/etc/named.conf
options {
listen-on port 53 { 192.168.74.84; };
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; };
红色处1中将127.0.0.1改为本机IP:192.168.74.82;红色处2中将localhost改为any。否则,除本机外其他服务器不能使用DNS服务。如果这样的话,我们的DNS就没意义了。
增加正向解析功能
1)修改/etc/named.rfc1912.zones并将下面的信息写入到/etc/named.rfc1912.zones文件中
zone "test.com" IN {
type master;
file "data/test.com.zone";
};
2)新建/var/named/data/test.com.zone文件
$TTL 1D
@ IN SOA dns.test.com. dns.www.test.com. (
20180224 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
@ IN NS dns.test.com.
dns.test.com. IN A 192.168.74.42
@ IN MX 10 mail.www.test.com.
mail.www.test.com. IN A 192.168.74.64
www.test.com. IN A 192.168.74.82
ftp.test.com. IN A 192.168.74.31
增加反向解析功能
1)修改/etc/named.rfc1912.zones并将下面的信息写入到/etc/named.rfc1912.zones文件中
zone "74.168.192.in-addr.arpa" IN{
type master;
file "data/192.168.74.zone";
};
2) 新建/var/named/data/192.168.74.zone文件,内容如下
$TTL 1D
@ IN SOA dns.test.com. dns.www.test.com. (
20180224 ; serial
1D ; refresh
1H ; retry
1W ;expire
3H) ; minimum
@ IN NS dns.test.com.
88 IN PTR dns.test.com.
@ IN MX 10 mail.www.test.com.
4 IN PTR mail.www.test.com.
82 IN PTR www.test.com.
3 IN PTR ftp.test.com.
测试
# systemctl startnamed.service --启动DNS服务
# systemctl enable named.service --设置为开机启动
# netstat -anlp | grep named --查看监听端口为53
dig www.test.com
[[email protected] ~]# dig www.test.com
; <<>> DiG9.9.4-RedHat-9.9.4-29.el7 <<>> www.test.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY,status: NOERROR, id: 49025
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1,AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.test.com. IN A
;; ANSWER SECTION:
www.test.com. 86400 IN A 192.168.74.82
;; AUTHORITY SECTION:
test.com. 86400 IN NS dns.test.com.
;; ADDITIONAL SECTION:
dns.test.com. 86400 IN A 192.168.8.88
;; Query time: 1 msec
;; SERVER: 192.168.74.84#53(192.168.74.84)
;; WHEN: 日 4月 22 16:40:55CST 2018
;; MSG SIZE rcvd: 91
上面的输出有两个重点,一个是问题查询的是 www.test.com 的 A (Address)参数,并且从回答 (Answer) 里面得到我们所需的 IP 参数。最后面一段的Server 项目非常重要!你得要看是否与你的设定相同的那部 DNS 服务器 IP 才行!以上面输出为例,我们可以看出DNS server服务器IP为192.168.74.84。
nslookup 192.168.74.82
Server: 192.168.74.84
Address: 192.168.74.84#53
82.74.168.192.in-addr.arpa name = www.test.com.
参考资料
[1].http://dns-learning.twnic.net.tw/bind/intro3.html
[2].https://zh.wikipedia.org/wiki/%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9F
[3]. http://www.isc.org/downloads/bind/