Bind服务程序
BIND(Berkeley Internet Name Domain,伯克利因特网名称域)服务是全球范围内使用最广泛、最安全可靠且高效的域名解析服务程序。
1 安装Bind
dnf install -y bind-chroot
在bind服务程序中有下面这3个比较关键的文件
主配置文件(/etc/named.conf):只有59行,而且在去除注释信息和空行之后,实际有效的参数仅有30行左右,这些参数用来定义bind服务程序的运行。
区域配置文件(/etc/named.rfc1912.zones):用来保存域名和IP地址对应关系的所在位置。类似于图书的目录,对应着每个域和相应IP地址所在的具体位置,当需要查看或修改时,可根据这个位置找到相关文件。
数据配置文件目录(/var/named):该目录用来保存域名和IP地址真实对应关系的数据配置文件。
实验一 部署主服务器-正向解析
1 配置主配置文件
把第11行和第19行的地址均修改为any
vim /etc/named.conf
11 listen-on port 53 { any; };19 allow-query { any; };
2 编辑区域配置文件
vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {type master;file "linuxprobe.com.zone";allow-update {none;};
};
3 编辑数据配置文件
cd /var/named/cp -a named.localhost linuxprobe.com.zonevim linuxprobe.com.zone
$TTL 1D
@ IN SOA linuxprobe.com. root.linuxprobe.com. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS ns.linuxprobe.com.
www IN A 192.168.0.10
ns IN A 192.168.0.10
重启服务
systemctl restart named
systemctl enable named
域名解析记录类型
记录类型 作用
A 将域名指向一个IPV4地址
CNAME 将域名指向另外一个域名
AAAA 将域名指向一个IPV6地址
NS 将子域名指定其他DNS服务器解析
MX 将域名指向邮件服务器地址
SRV 记录提供特定的服务的服务器
TXT 文本内容一般为512字节,常作为反垃圾邮件的SPF记录
CAA CA证书办法机构授权校验
显性URL 将域名重定向到另外一个地址
隐性URL 与显性URL类型,但是会隐藏真实目标地址
4 把Linux系统网卡中的DNS地址参数修改成本机IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME=ens160
UUID=3dd9f146-20f3-4cb6-bb4e-288b23dfd7c0
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.0.10
PREFIX=24
DNS1=192.168.0.10
重启网卡
nmcli connection up ens160
5 检验解析结果
nslookup
> www.linuxprobe.com
Server: 192.168.0.10
Address: 192.168.0.10#53Name: www.linuxprobe.com
Address: 192.168.0.10
实验二 部署主服务器-反向解析
1 编辑区域配置文件
vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {type master;file "linuxprobe.com.zone";allow-update {none;};
};
zone "0.168.192.in-addr.arpa" IN {type master;file "192.168.0.arpa";allow-update {none;};
};
2 编辑数据配置文件
cd /var/named
cp -a named.loopback 192.168.0.arpa
vim 192.168.0.arpa
$TTL 1D
@ IN SOA linuxprobe.com. root.linuxprobe.com. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS ns.linuxprobe.com.
ns A 192.168.0.10
10 PTR ns.linuxprobe.com.
10 PTR www.linuxprobe.com.
20 PTR bbs.linuxprobe.com.
重启服务
systemctl restart named
systemctl enable named
3 检验解析结果
nslookup
> 192.168.0.10
10.0.168.192.in-addr.arpa name = www.linuxprobe.com.
10.0.168.192.in-addr.arpa name = ns.linuxprobe.com.
> 192.168.0.20
20.0.168.192.in-addr.arpa name = bbs.linuxprobe.com.
实验三 部署从服务器
1 在主服务器的区域配置文件中允许该从服务器的更新请求
vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {type master;file "linuxprobe.com.zone";allow-update { 192.168.0.20;};
};
zone "0.168.192.in-addr.arpa" IN {type master;file "192.168.10.arpa";allow-update { 192.168.0.20;};
};
2 在主服务器上配置防火墙放行规则
firewall-cmd --permanent --zone=public --add-service=dns
firewall-cmd --reload
3 在从服务器上安装bind-chroot软件包,修改配置文件
dnf install -y bind-chroot
vim /etc/named.conf
11 listen-on port 53 { any; };
19 allow-query { any; };
4 在从服务器中填写主服务器的IP地址与要抓取的区域信息
vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {type slave;masters { 192.168.0.10; };file "slaves/linuxprobe.com.zone";
};
zone "0.168.192.in-addr.arpa" IN {type slave;masters { 192.168.0.10; };file "slaves/192.168.0.arpa";
};
重启服务
systemctl restart named
systemctl enable named
5 把Linux系统网卡中的DNS地址参数修改成本机IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens160
YPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME=ens160
UUID=f09352c6-b108-4b18-9847-8edfe72f0712
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.0.20
PREFIX=24
DNS1=192.168.0.20
6 检验解析结果
nslookup
> www.linuxprobe.com
Server: 192.168.0.20
Address: 192.168.0.20#53Name: www.linuxprobe.com
Address: 192.168.0.10
> 192.168.0.10
10.0.168.192.in-addr.arpa name = www.linuxprobe.com.
10.0.168.192.in-addr.arpa name = ns.linuxprobe.com.
实验四 安全的加密传输
互联网中的绝大多数DNS服务器(超过95%)都是基于BIND域名解析服务搭建的,而bind服务程序为了提供安全的解析服务,已经对TSIG(见RFC 2845)加密机制提供了支持。TSIG主要是利用了密码编码的方式来保护区域信息的传输(Zone Transfer),即TSIG加密机制保证了DNS服务器之间传输域名区域信息的安全性。
实验开始之前的准备
rm -rf /var/named/slaves/*
1 在主服务器中生成密钥
dnssec-keygen命令用于生成安全的DNS服务密钥,其格式为 dnssec-keygen [参数]
dnssec-keygen命令的常用参数
参数 作用
-a 指定加密算法,包括RSAMD5(RSA)、RSASHA1、DSA、NSEC3RSASHA1、NSEC3DSA等
-b 密钥长度(HMAC-MD5的密钥长度在1~512位之间)
-n 密钥的类型(HOST表示与主机相关)
开始
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave
cat Kmaster-slave.+157+41506.private | grep Key
记下key
Key: auVjxNxo7UzJBHl7krQu8Q==
2 在主服务器中创建密钥验证文件
cd /var/named/chroot/etc/
vim transfer.key
key "master-slave" {algorithm hmac-md5;secret "auVjxNxo7UzJBHl7krQu8Q==";
};
修改权限,设置硬链接
chown root:named transfer.key
chmod 640 transfer.key
ln transfer.key /etc/transfer.key
3 开启并加载bind服务的密钥验证功能
在主服务器的主配置文件中加载密钥验证文件
vim /etc/named.conf
9 include "/etc/transfer.key";
20 allow-transfer { key master-slave; };
重启服务
systemctl restart named
systemctl enable named
清空从服务器同步目录中所有的数据配置文件,重启服务
rm -rf /var/named/slaves/*
systemctl restart named
4 配置从服务器,使其支持密钥验证
cd /var/named/chroot/etc/
vim transfer.key
key "master-slave" {algorithm hmac-md5;secret "auVjxNxo7UzJBHl7krQu8Q==";
};
修改权限,设置硬链接
chown root:named transfer.key
chmod 640 transfer.key
ln transfer.key /etc/transfer.key
5 开启并加载从服务器的密钥验证功能
vim /etc/named.conf
9 include "/etc/transfer.key";
51 server 192.168.0.10
52 {
53 keys { master-slave; };
54 };
重启服务
systemctl restart named
6 解析验证
nslookup
> www.linuxprobe.com
Server: 192.168.0.20
Address: 192.168.0.20#53Name: www.linuxprobe.com
Address: 192.168.0.10
> 192.168.0.10
10.0.168.192.in-addr.arpa name = www.linuxprobe.com.
10.0.168.192.in-addr.arpa name = ns.linuxprobe.com.
>