搭建DNS域名服务器
DNS服务
全称是domian name server 域名解析服务,是因特网的一项核心服务,它能提供域名与IP地址之间对应关系的转换服务。能够使人更方便的访问互联网,而不用记住IP数串。
DNS的实现原理
完整的域名 www.baidu.com.
. 根域 全球一共13组根域
.com 超级域,一级域
.baidu 二级域
www 主机名
举例:寻找新浪的方式。
1.先看本地/etc/hosts
有没有记录。
2.找另外一个人问,–>找DNS服务器去问。在/etc/resolv.conf
文件中指定了找谁去问。
这里的先后顺序也是由某个文件决定的。这个文件是/etc/nsswitch.conf
DNS的两种查询方式
对于DNS服务器,他可能知道也可能不知道,知道的情况由两种:
1.本地由这个域,能够解析到
2.本地由缓存,其他人已经来问过sina是谁,那么DNS服务器可以将该结果直接返回给客户。
不知道的话就会去找自己的上级域,然后通过等待上级域的反馈,将反馈信息返回给客户端。这种方式叫递归查询。
还有一种情况是,DNS去询问上级域,然后上级域将对应的同级DNS服务器反馈回来,由客户端去询问新的DNS服务器来找寻网址对应的P位置。这种叫迭代查询
www.sina.com.
1)找根域.
2)找超级域.com
3)找到二级域.sina
4)成功找到www
本文档主要是说明如何把一台CentOS主机配置成一个DNS服务器,以便能提供域名解析服务。
DNS服务器端配置
操作系统:CentOS 7.2
IP地址:10.255.2.93
DNS软件:Bind 9.9
测试域名:yyit.com
作用:主要提供解析yyit.com域名的服务
一、安装BIND服务器软件并启动
1.yum -y install bind*
在安装完BIND后,系统会多一个用户named。
2.启动DNS服务
systemctl start named.service
systemctl enable named.service //开机自启动
3.查看named进程是否正常启动:
systemctl status named
4.DNS采用的UDP协议,监听53号端口,进一步检验named工作是否正常:
netstat -an|grep :53
5.关闭防火墙
5.1 firewalld
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld //关闭开机自启动
5.2 selinux
getenforce
vim /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
5.3 iptables
开放TCP和UDP的53号端口:
iptables -I INPUT -p tcp --dport 53 -j ACCEPT
iptables -I INPUT -p udp --dport 53 -j ACCEPT
DNS服务的相关配置文件
1.修改主配置文件/etc/named.conf
要注意在修改之前要先进行备份,使用cp -p /etc/named.conf /etc/named.conf.bak
(命令备份,参数-p表示备份文件与源文件的属性一致)。
vim /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
options {
listen-on port 53 { any; }; //开启监听端口53,接受任意IP连接
listen-on-v6 port 53 { ::1; }; //支持IP V6
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; //允许任意IP查询
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
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 {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
2.修改/etc/named.rfc1912.zones
vim /etc/named.rfc1912.zones
添加正向解析域yyit.com,逆向解析域146.168.192.in-addr.arpa,其对应的域解析文件分别为由file指定的named.yyit.com和192.168.146.arpa。
//yyit.com的正向解析
zone "yyit.com" IN {
type master;
file "named.yyit.com";
allow-update { none; };
};
//yyit.com的反向解析
zone "2.255.10.in-addr.arpa" IN {
type master;
fire "10.255.2.arpa";
allow-update { none; };
};
这里需要注意的是,添加反向区域时,网络号要反过来写(网络号是IP地址与子网掩码进行与操作后的结果)。
例如,我现在配置的网络号192.168.146这个网段,那么它的反向区域是146.168.192.in-addr.arpa。区域里面的file
字段表明解析时的数据来源文件,接下来我们去创建named.yyit.com和192.168.146.arpa文件。
3.添加/var/named/cs.yyit.com.zone
可以将模板文件复制一份,在进行修改
使用命令cp -p /var/named/named.localhost /var/named/named.yyit.com
vim /var/named/named.yyit.com
进入named.yyit.com进行配置
以上我们添加了一条记录,其中client IN A 10.255.2.150表明域名client.yyit.com对应的IP地址为10.255.2.150。
如果需要添加多条,按此类似添加,留意yyiit.com后面的那个不起眼的点(.)。
4.添加/var/named/10.255.2.arpa
cp -p /var/named/named.localhost /var/named/10.255.2.arpa
vim /var/named/10.255.2.arpa
以上我也添加了一条记录,其中150 PTR client.yyit.com表明IP地址10.255.2.150对应的域名为client.yyit.com。
如果要添加多条,按此类似添加,留意yyit.com和client.yyit.com后面的那个不起眼的点(.)。
最后重启named服务
systemctl restart named
客户端配置
操作系统:CentOS 7.2
IP地址:能够ping通DNS服务器的IP(10.255.2.93)都可以,我这里是10.255.2.150
作用:测试DNS服务器是否正常工作。
-
安装bind-utils包,以便能使用nslookup、dig和host工具
yum install bind-utils -
修改DNS配置使用我们的DNS服务器
vi /etc/resolv.conf -
正向解析测试,使用nslookup命令
nslookup
从结果可以看到,我们配置的域名已成功解析,并且DNS服务器就是我们配置的那个10.255.2.93服务器。 -
反向解析,使用nslookup命令
nslookup -
查看realhostip.com这个域名是哪个DNS服务器管理的,使用dig命令
dig -t ns client.yyit.com -
使用dig命令进行正向解析
dig client.yyit.com