开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情
上篇文章介绍了域名系统、域名服务器分类、域名查询机制,这篇文章我们就来介绍怎么部署DNS服务器。
安装DNS
在Linux系统中,常用BIND软件包来配置DNS服务器。BIND支持各种Linux平台,同时也支持UNIX和windos平台。
BIND主要包含的软件包:
-
bind:主程序 -
bind-libs:提供库文件 -
bind-utils:DNS工具集合 -
bind-chroot:更改服务器根路径到DNS目录
apt-get install bind9 -y # Debian系统下载安装BIND软件包
yum -y install bind bind-chroot bind-utils bind-libs # CentOS安装BIND包
BIND文件配置(CentOS)
主配置文件
主配置文件named.conf中只包含BIND的基本配置,不包含任何DNS的区域数据。DNS服务进程named启动时,该进程首先会读取主配置文件。主配置文件路径:
/etc/bind/named.conf.default-zones # Debian系统
/etc/named.conf # CentOS系统
主配置文件named.conf中内容主要分为以下三项:
- “
options {...}”形式定义的全局配置信息 - “
loggong {...}”形式定义的日志配置信息 - “
zone {...}”形式定义的区域配置信息
named.conf文件还可以使用include引入其他文件。
区域配置文件
区域配置文件named.rfc1912.zones用于配置DNS服务域的相关信息,文件中有多个zone语句,该语句有两个主要选项:
type:设置域类型,有以下几种取值:hint:本地解析,查询不到本地解析时可查询根域名服务器master:定义权威域名服务器slave:定义辅助域名服务器forward:定义转发域名服务器
file:定义区域数据文件,这里定义的文件保存路径为主配置文件中option选项中定义的目录下。
除type和file之外,zone语句常用的选项如下:
| 选项 | 说明 |
|---|---|
| allow-update | 允许哪些主机动态更新域数据信息 |
| allow-trandfer | 哪些从服务器可以从主服务器下载数据文件 |
| notify | 当域数据资料更新后是否主动通知其他域名服务器 |
| masters | 定义主域名服务IP地址,仅当type取值为slave时此选项生效 |
BIND软件安装成功后,会自动生成保存了全球的根域名服务器的文件:
/var/named/named.ca
区域数据文件
区域数据文件保存位置由named.conf文件中option语句的directory选项指定,默认位置是/var/named/目录。
正向解析数据文件
/var/named/named.localhost
$TTL 1D
@ IN SOA @rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
NS @
A 127.0.0.1
AAAAA ::1
该文件中使用“;”添加注释,文件包含以下几项内容:
TTL:生命周期SOA记录:区域起始授权记录。SOA选项第一行中的第一个@表示域名,其值为named.conf文件中相应区域名称;第二个@表示主域名服务器的FQDN,之后的“rname.invalid.”表示管理员的邮箱,实际为“ranme@invalid@”,因为该文件中用@表示了FQDN,所以使用“.”代替@;SOA选项小括号中内容依次表示为区域数据库序列号、域名服务器刷新间隔、辅域名服务器重试间隔、辅域名服务器本地数据的过期间隔、TTL最小值。NS记录:区域的授权服务器A记录:主机IPv4地址AAAA记录:主机IPv6地址
反向解析数据文件
/var/named/named.loopback
$TTL 1D
@ IN SOA @rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
NS @
A 127.0.0.1
AAAAA ::1
PTR localhost
反向解析数据文件与正向解析数据文件区别在于文件最后有一条PTR记录,用于记录IP地址到域名的映射。
部署主从DNS服务器
- 主DNS服务器:域名数据存储、域名解析等
- 从DNS服务器:可复制主DNS服务器数据,在主服务器故障时实现域名解析等工作
例如现有域名itcast.com,网络地址为192.168.255.0/16,则DNS主、从服务器IP地址与域名如图所示:
| IP地址 | 域名 | 功能 |
|---|---|---|
| 192.168.255.254 | dns.itcast.com | 主域名服务器 |
| 192.168.255.253 | dnsc.itcast.com | 从域名服务器 |
| 192.168.255.254 | www.itcast.com | 文件传输服务器 |
部署主DNS服务器
修改主配置文件
使用bind-chroot软件包更换服务器根路径,执行以下命令:
cp /etc/named.conf /var/named/chroot/etc/named.conf
然后进行编辑刚复制过来的文件,修改内容如下:
设置监听对象
listen-on port 53 { 127.0.0.1; }; # 127.0.0.1改为any,表示监听所有主机的53端口
listen-on-v6 port 53 { ::1; }; # ::1改为any,表示监听所有主机的53端口
注意: any之后的分号不可少,大括号中的语句与括号之间有空格。
设置客户端查询范围
allow-query { localhost; }; # localhost改为any,也可设置为网段,表示客户端可查询所有域名
引用区域配置文件
该项无需修改,主配置文件默认存在
include "/etc/named.rfc1912.zones";
编辑区域配置文件
vim /etc/named.rfc1912.zones
zone "itcast.com" IN { # 正向区域解析文件
type master; # 服务器类型为master,即主服务器
file "itcast.com.zone"; # 文件名为itcast .com. zone
allow-transfer { 192.168.255.253; }; # 允许完全传送的地址,即从服务器地址
};
zone "255.168.192.in-addr.apra" IN { # 反向区域解析文件
type master;
file "255.168.192.zone";
allow-tranfer { 192.168.255.253; };
};
编辑区域数据文件
区域配置文件编辑保存好后,在/var/named/路径下创建itcast.com.zone文件和255.168.192.zone文件用来正向解析和反向解析
正向解析数据文件
vim /var/named/itcast.com.zone
$TTL 1D
@ IN SOA dns.itcast.com admin.itcast.com.(
1.0 ;版本号
1D ;更新时间
1H ;重试时间
1W ;超时时间
2H ;否定回答缓存时间喝
)
IN NS dnsl
IN NS dnsc
IN MX 5 mail ;邮件服务器名称
dns IN A 192.168.0.254
dnsc IN A 192.168.0.253
www IN A 192.168.0.254
ftp IN CNAME www
反向解析数据文件
vim /var/named/255.168.192.zone
$TTL 1D
@ IN SOA dns.itcast.com admin.itcast.com.(
1.0 ;版本号
1D ;更新时间
1H ;重试时间
1W ;超时时间
2H ;否定回答缓存时间喝
)
IN NS dns.itcast.com.
IN NS dnsc.itcast.com.
254 IN PTR dns.itcast.com.
253 IN PTR dnsC.itcast.com.
254 IN PTR www.itcast.com.
254 IN PTR ftp.itcast.com.
至此,主DNS服务器基本配置完毕,重启主DNS服务器中的DNS服务:
systemctl restart named
部署从DNS服务器
重复部署主DNS服务器步骤,但从服务器主机中区域配置文件修改为以下内容:
zone "itcast.com" IN { # 正向区域解析文件
type slave; # 服务器类型为slave,即从服务器
file "/slaves/itcast.com.zone"; # 文件名为itcast .com. zone
allow-transfer { none; }; # 允许完全传送的地址,即从服务器地址
};
zone "255.168.192.in-addr.apra" IN { # 反向区域解析文件
type slave;
file "/slaves/255.168.192.zone";
masers { 192.168.255.254; } # 指定主服务器的IP地址
allow-tranfer { none; };
};
区域配置文件中在配置反向区域数据时,可以通过masters选项指定主服务器IP地址,此处可设置多个主服务器,使用“;”分开。为保障服务器安全,设置allow-transfer选项值为none,表示不允许其他主机查看当前主机。
编辑配置结束后,重启从DNS服务器中的DNS服务:
systemctl restart named
从服务器应能复制主DNS服务器内容,但此操作可能不会立即执行,可使用以下命令进行同步:
rndc reload
到此DNS服务配置基本完成,可以根据个人需要和环境需求灵活进行修改。