昨天搭建了一个简单的主DNS,是在虚拟机的Centos下搭建的,今天来回顾下一个整体的搭建过程
DNS是域名系统(Domain Name System)的缩写,是因特网的一项核心服务,它能提供域名与IP地址之间对应关系的转换服务。这样我们就可以更方便地去访问互联网了,不用去记住那一串IP数字。本文档主要是说明如何把一台CentOS主机配置成一个DNS服务器,以便能提供域名解析服务。
CentOS的IP地址是:192.168.1.30
要搭建的域名:txtfashion.com
需要的软件:bind-9.3.6-20.P1.el5_8.6
bind-libs-9.3.6-20.P1.el5_8.6
bind-devel-9.3.6-20.P1.el5_8.6
bind-utils-9.3.6-20.P1.el5_8.6
bind-libbind-devel-9.3.6-20.P1.el5_8.6
bind-chroot-9.3.6-20.P1.el5_8.6
bind-sdb-9.3.6-20.P1.el5_8.6
- 安装bind软件
yum -y install bind*
安装完成后,输入命令rpm -qa | grep bind
检查上述软件是否安装完成,如没安装完成,安装对应的软件包。
- 配置
由于安装了bind-chroot-9.3.6-20.P1.el5_8.6,现在的配置文件是在/var/named/chroot/,进入该目录:cd /var/named/chroot/
修改named.conf文件
vi etc/named.conf
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";
// Those options should be used carefully because they disable port
// randomization
// query-source port 53;
// query-source-v6 port 53;
allow-query { any; }; //允许任意IP查询
allow-query-cache { any; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view localhost_resolver {
match-clients { any; };
match-destinations { any; };
recursion yes;
include "/etc/named.rfc1912.zones"; //主要配置文件
};
修改/etc/named.rfc1912.zones文件,添加txtfashion.com的正向和反向区域
vi etc/named.rfc1912.zones
zone "txtfashion.com" IN {
type master;
file "data/txtfashion.com.zone";
};
zone "1.168.192.in-addr.arpa" IN{
type master;
file "data/192.168.1";
};
这里需要注意的是,添加反向区域时,网络号要反过来写(网络号是IP地址与子网掩码进行与操作后的结果)。例如,我现在配置的网络号192.168.1这个网段,那么它的反向区域是1.168.192.in-addr.arpa。区域里面的file字段表明解析时的数据来源文件,接下来我们去创建txtfashion.com.zone和192.168.1文件。
创建正向和反向区域资源文件
创建正向区域资源文件:vi var/named/data/txtfashion.com.zone
$TTL 3600
@ IN SOA txtfashion.com. root.txtfashion.com. (
20140401 ; serial
30 ; refresh
60 ; retry
90 ; expire
3600 ) ; minimum
IN NS www.txtfashion.com.
www IN A 192.168.1.30
mail IN A 192.168.1.30
serv1 IN A 192.168.1.30
dns IN A 192.168.1.30
ftp IN A 192.168.1.30
win IN A 192.168.1.66
创建反向区域资源文件:vi var/named/data/192.168.1
$TTL 3600
@ IN SOA 192.168.1. 192.168.1. (
20140401 ; serial
30 ; refresh
60 ; retry
90 ; expire
3600 ) ; minimum
IN NS www.txtfashion.com.
30 IN PTR www.txtfashion.com.
30 IN PTR mail.txtfashion.com.
30 IN PTR serv1.txtfashion.com.
30 IN PTR dns.txtfashion.com.
30 IN PTR ftp.txtfashion.com.
66 IN PTR win.txtfashion.com.
参数说明:
serial:序列号
refresh:更新时间
retry:更新失败每隔多少时间重新与dns联系
expiry:过期时间
minimum:当前域名的查询结果,将在缓存中保留的时间
H 小时、M 分钟 W 星期 D 天 默认是秒
NS 标识一个域的域名服务器
A 将主机名--->ip (一个主机只有一个A记录)
MX 邮件交换记录
PTR ip--->主机名
CNAME 别名
修改完这四个文件后,我们需要修改这四个文件的所有者和拥有者
chown -R named.named etc/named.conf
chown -R named.named etc/named.rfc1912.zones
chown -R named.named var/named/data/txtfashion.com.zone
chown -R named.named var/named/data/192.168.1
重启named服务: service named restart
至此,DNS服务器端的配置已完成,下面我们稍微配置一下客户端来测试我们的DNS服务器是否正常工作。
- 测试
在centos下测试,可以用nslookup来测试,首先需要配置resolv.conf文件:vi /etc/resolv.conf
nameserver 192.168.1.30
上述表示的DNS的地址为192.168.1.30
输入命令:nslookup
> www.txtfashion.com
Server: 192.168.1.30
Address: 192.168.1.30#53
Name: www.txtfashion.com
Address: 192.168.1.30
> ftp.txtfashion.com
Server: 192.168.1.30
Address: 192.168.1.30#53
Name: ftp.txtfashion.com
Address: 192.168.1.30
> 192.168.1.30
Server: 192.168.1.30
Address: 192.168.1.30#53
30.1.168.192.in-addr.arpa name = mail.txtfashion.com.
30.1.168.192.in-addr.arpa name = serv1.txtfashion.com.
30.1.168.192.in-addr.arpa name = dns.txtfashion.com.
30.1.168.192.in-addr.arpa name = ftp.txtfashion.com.
30.1.168.192.in-addr.arpa name = www.txtfashion.com.
上述是简单的测试,如果测试不行,请检查防火墙是否开放了53的端口,方法是vi /etc/sysconfig/iptables,添加两行
-I INPUT -p tcp --dport 53 -j ACCEPT
-I INPUT -p udp --dport 53 -j ACCEPT
然后重启iptables服务:service iptables restart
在windows下测试,需要在本地连接属性里面修改,如下图:
window下在cmd下也可以用nslookup,方法和在linux下类似,下面不具体说明了,当然,linux下的53端口一定要开放。
上面只是配置了一个简单的DNS服务器,配置了主DNS,当然你也可以再配置一个从DNS,两者一起用,该配置我将在下一次做说明