红帽8.0版本(bind-dns)
个人有道云共享链接:https://note.youdao.com/s/OFuuT2o5
因为时间原因就不对显示内容进行美化,主要通过有道云观看即可。
BIND 域名解析服务
BIND服务是全球使用最广泛、最安全可靠且高效的域名解析服务程序
1、BIND主要配置文件:
安装 BIND服务程序:yum install -y bind-chroot
安装 DNS解析器:yum install -y bind-utils
(主要命令 nslookup 测试dns解析)
2、BIND 服务程序中三个关键文件
主配置文件:/etc/named.conf
【服务主配置文件】
区域配置文件:/etc/named.rfc1912.zones
【记录每个域对应关系对应文件名称】
数据配置文件目录:/var/named
【保存域名和IP地址真实对应关系数据文件】
3、BIND服务器的基础环境配置
在linux系统中,bind服务程序的名称为:named
(1)通过修改配置文件,来手动指定DNS服务器:
echo "nameserver 192.168.20.11" >> /etc/resolv.conf
(2)或者直接在网络适配器中指定:
nmcli c mo 网卡名称 ipv4.dns 192.168.20.11
4、主配置文件参数介绍:/etc/named.conf
options {
listen-on port 53 { 127.0.0.1; }; # IPv4,DNS监听的端口,所有端口为:any
listen-on-v6 port 53 { ::1; }; # IPv6,DNS监听的端口
directory "/var/named"; # 域名和IP地址对应关系文件的存放位置
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";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { localhost; }; # 允许谁访问该服务器,所有人则修改为:any
recursion yes; # 是否允许递归查询
dnssec-enable yes; # 是否开启数据签名的校验(是否开启安全监测域名)
dnssec-validation yes; # 是否进行数据签名的校验(是否使用校验)
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
include "/etc/crypto-policies/back-ends/bind.config";
<隐含参数>
forward only; # 仅执行转发操作,即仅仅是一个DNS转发器
forward first; # first先查询本地记录(缓存、本地hosts文件等),再转发
forwarders { 8.8.8.8;114.114.114.114; }; # 配置之后,将成为缓存服务器
};
5、配置检查
对于DNS配置文件修改之后,不确定是否写入错误,使用以下命令检查书写是否规范:
named-checkconf # 检查主配置文件
named-checkconf /etc/named.conf # 检查主配置文件
named-checkzone 区域 区域配置文件
在192.168.0反向配置文件中,查询0.168.192xxx区域的配置是否有误
named-checkzone 0.168.192.in-addr.arpa /var/named/192.168.0
zone0.168.192.in-addr.arpa/IN: loaded serial 1268360612
OK
正向解析
1、配置区域文件
vim /etc/named.rfc1912.zones
服务类型有三种:分为 hint(根区域)
、master(主区域)
、slave(辅助区域)
master和slave指的就是主服务器和从服务器
——【写入(正向解析)内容】——
zone "lisi.com" IN { //区域名称
type master; //服务类型
file "lisi.com.zone"; //记录域名与主机地址的对应关系文件名称(/var/named目录下)
allow-update {none;}; //允许哪些客户机动态更新解析信息,配置从服务器的时候使用
};
2、配置区域映射文件
cd /var/named
cp -a named.localhost lisi.com.zone
// *.localhost指的是正向解析模板
vim lisi.com.zone
//编辑正向映射内容
——【修改内容】——
要特别注意所有域名后面都有一个" . " 表示根域
lisi.com. IN SOA www.lisi.com. @ (
;区域名 关键词 记录类型 域名服务器FQDN名 管理员邮箱
; 域名后面需要添加 . 这样才能够让根域名解析
0 ; serial 序号
1D ; refresh 刷新间隔
1H ; retry 重试间隔
1W ; expire 过期/失效间隔
3H ) ; minimum 无效解析记录,TTL值
NS www.lisi.com. ;NS标识域名服务器FQDN名称
A 192.168.10.20 ;A记录如不写入主机名则表示:域名区域的解析 ling.com
www A 192.168.10.20 ;主机名:www,区域名:lisi.com,表示www.lisi.com的解析
AAAA ::1 ;IPv6版解析
——【最终效果预览】——
lisi.com. IN SOA www.lisi.com. @ (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS www.lisi.com.
A 192.168.10.20
www A 192.168.10.20
ling A 192.168.10.20
AAAA ::1
3、重启服务
systemctl restart named
nslookup lisi.com、nslookup www.lisi.com
需要让其它人访问到你的DNS服务器,需要放行防火墙:
(1)firewall-cmd --permanent --add-service=dns
(2)设置本机的DNS,指向该服务器:nmcli c mo ens160 ipv4.dns 192.168.10.20
反向解析
1、配置区域文件
vim /etc/named.rfc1912.zones
服务类型有三种:分为 hint(根区域)
、master(主区域)
、slave(辅助区域)
master和slave指的就是主服务器和从服务器
——【写入(反向解析)内容】——
zone "10.168.192.in-addr.arpa" IN {
type master;
file "192.168.10.arpa"; //反向文件位置为/var/named目录中的
allow-update {none;};
};
2、配置区域映射文件
cd /var/named
cp -a named.loopback 192.168.10.arpa
// *.loopback指的是正向解析模板
vim 192.168.10.arpa
//编辑正向映射内容
——【最终效果预览】——
要特别注意所有域名后面都有一个" . " 表示根域
10.168.192.in-addr.arpa. IN SOA www.lisi.com. @ (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS www.lisi.com.
A 192.168.10.20
20 PTR www.lisi.com.
20 PTR ling.lisi.com.
3、重启服务
systemctl restart named
nslookup lisi.com、nslookup www.lisi.com
需要让其它人访问到你的DNS服务器,需要放行防火墙:
(1)firewall-cmd --permanent --add-service=dns
(2)设置本机的DNS,指向该服务器:
nmcli c mo ens160 ipv4.dns 192.168.10.20
一、BIND从服务器
1、主服务器上需要配置 allow-update 参数信息
allow-update { 192.168.10.10; };
//指定从服务器IP
配置完成之后,重启named服务器
zone "lisi.com" IN {
type master;
file "lisi.com.zone";
allow-update { 192.168.10.10; };
};
zone "10.168.192.in-addr.arpa" IN {
type master;
file "192.168.10.arpa";
allow-update { 192.168.10.10; };
};
2、从服务器需要配置为 Slave 类型
(1)安装服务bind(named)服务
yum install -y bind-chroot
systemctl enable --now named
(2)配置主配置文件
(3)配置映射文件
为什么需要保存文件的路径需要增加slaves/
主要为了区分主从映射文件。方便查看和管理,当然也可以不加:file "slaves/linuxprobe.com.zone";
zone "lisi.com" IN {
type slave;
masters { 192.168.10.20; }; //指向主服务器
file "slaves/lisi.com.zone";
};
zone "10.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.10.20; }; //指向主服务器
file "slaves/192.168.10.zone";
};
二、主从服务器安全加密传输
1、主服务器配置
(1)主配置文件开启签名
dnssec-enable yes;
# 是否开启数据签名的校验(是否开启安全监测域名)
dnssec-validation yes;
# 是否进行数据签名的校验(是否使用校验)
(2)生成密钥
man dnssec-keygen
# 去帮助中查找案例/example
dnssec-keygen -a [加密类型] -b [秘钥长度] -n HOST [秘钥名称]
案例:dnssec-keygen -a HMAC-MD5 -b 128 -n HOST lisi.com
执行完之后,将会看到两个文件:
*.private # 私钥
*.key # 密钥
(3)在区域文件,添加密钥
配置域名记录信息文件:/etc/named.rfc1912.zones
[添加内容]
key bind_key { // bind_key密钥名称
algorithm HMAC-MD5; // 呼应前面设置的加密类型
secret "HhbuUUL1PQxBR3q0m2L/7A=="; // 复制的Key字段内容
};
(4)将允许更新列表换成密钥认证
zone "lisi.com" IN {
type master;
file "lisi.com.zone";
allow-update { 192.168.10.10; }; //删除该行内容
allow-transfer { key bind_key; }; //调用前面设置的密钥
};
——【最终在/etc/named.rfc1912.zones文件中的内容】——
//设置的密钥
key bind_key {
algorithm HMAC-MD5;
secret "HhbuUUL1PQxBR3q0m2L/7A==";
};
//前面设置过的正向
zone "lisi.com" IN {
type master;
file "lisi.com.zone";
allow-transfer { key bind_key; };
};
//前面设置过的反向
zone "10.168.192.in-addr.arpa" IN {
type master;
file "192.168.10.arpa";
allow-transfer { key bind_key; };
};
2、从服务器配置
(1)复制一份主服务器中的Key字段内容
//此时的密钥名称可自定义
key bind_key {
algorithm HMAC-MD5;
secret "HhbuUUL1PQxBR3q0m2L/7A==";
};
(2)在区域文件,应用秘钥
zone "lisi.com" IN {
type slave;
masters { 192.168.10.20; }; //因为无认证功能需要删掉
masters { 192.168.10.20 key 秘钥名称; }; //采用密钥进行同步
file "lisi.com.zone";
};
zone "lisi.com" IN {
type slave;
masters { 192.168.10.20 key bind_key; }; //采用密钥进行同步
file "lisi.com.zone";
};
zone "10.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.10.20 key bind_key; }; //采用密钥进行同步
file "192.168.10.zone";
};
——【最终在/etc/named.rfc1912.zones文件中的内容】——
key bind_key {
algorithm HMAC-MD5;
secret "HhbuUUL1PQxBR3q0m2L/7A==";
};
zone "lisi.com" IN {
type slave;
masters { 192.168.10.20 key bind_key; }; //采用密钥进行同步
file "lisi.com.zone";
};
zone "10.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.10.20 key bind_key; }; //采用密钥进行同步
file "192.168.10.zone";
};
3、最终校验
三、部署缓存服务器
(1)在主配置文件中添加参数:
forwarders { 8.8.8.8;114.114.114.114; };
# 配置之后,将成为缓存服务器
四、DNS的分离解析技术
主要作用:
通过在不同地域架设服务器,防止单一服务器流量负载,通过view功能判断主机所处地域,使其访问到该地域对应的服务器上。
主配置文件正常配置
配置区域文件
(1)配置ACL用于匹配客户端位置
主服务器配置
//之前配置的Key私钥内容
key bind_key {
algorithm HMAC-MD5;
secret "HhbuUUL1PQxBR3q0m2L/7A==";
};
//创建ACL用于匹配客户端位置
acl "GuangXi" { 192.168.10.0/24; }; //[ershi 表示网段为192.168.20.0/24的主机]
acl "BeiJing" { 192.168.20.0/24; }; //[ershi 表示网段为192.168.30.0/24的主机]
//主服务器配置
view "GuangXi" //View构架,用于GuangXi的用户解析
{
match-clients { "GuangXi"; }; //判断用户是否为GuangXi
zone "lisi.com" //与普通的Zone相比,没有 “IN”
{
type master;
file "GuangXi.lisi.com.zone"; //为了好区分文件的所属区域可修改命名
allow-transfer { key bind_key; };
};
zone "10.168.192.in-addr.arpa"
{
type master;
file "GuangXi.192.168.10.zone"; //为了好区分文件的所属区域可修改命名
allow-transfer { key bind_key; };
};
};
view "BeiJing" //View构架,用于GuangXi的用户解析
{
match-clients { "BeiJing"; }; //判断用户是否为GuangXi
zone "lisi.com" //与普通的Zone相比,没有 “IN”
{
type master;
file "BeiJing.lisi.com.zone"; //为了好区分文件的所属区域可修改命名
allow-transfer { key bind_key; };
};
zone "20.168.192.in-addr.arpa"
{
type master;
file "BeiJing.192.168.20.zone"; //为了好区分文件的所属区域可修改命名
allow-transfer { key bind_key; };
};
};
——【如果从服务器也需要配置,则可以参考如下配置】——
//之前配置的Key私钥内容
key bind_key {
algorithm HMAC-MD5;
secret "HhbuUUL1PQxBR3q0m2L/7A==";
};
//创建ACL用于匹配客户端位置
acl "GuangXi" { 192.168.10.0/24; }; //[ershi 表示网段为192.168.20.0/24的主机]
acl "BeiJing" { 192.168.20.0/24; }; //[ershi 表示网段为192.168.30.0/24的主机]
//主服务器配置
view "GuangXi" //View构架,用于GuangXi的用户解析
{
match-clients { "GuangXi"; }; //判断用户是否为GuangXi
zone "lisi.com" //与普通的Zone相比,没有 “IN”
{
type slave;
masters { 192.168.10.20 key bind_key; };
file "GuangXi.lisi.com.zone"; //为了好区分文件的所属区域可修改命名
};
zone "10.168.192.in-addr.arpa"
{
type slave;
masters { 192.168.10.20 key bind_key; };
file "GuangXi.192.168.10.zone"; //为了好区分文件的所属区域可修改命名
};
};
view "BeiJing" //View构架,用于Beijing用户解析
{
match-clients { "BeiJing"; }; //判断用户是否为GuangXi
zone "lisi.com" //与普通的Zone相比,没有 “IN”
{
type slave;
masters { 192.168.10.20 key bind_key; };
file "BeiJing.lisi.com.zone"; //为了好区分文件的所属区域可修改命名
};
zone "20.168.192.in-addr.arpa" //帮助192.168.20.0/24用户解析
{
type slave;
masters { 192.168.10.20 key bind_key; };
file "GuangXi.192.168.20.zone"; //为了好区分文件的所属区域可修改命名
};
};
(2)将主配置中的根区域解析删除掉
vim /etc/named.conf
(3)重启服务器
systemctl restart named
如果无法启动,且报错内容为:when using 'view' statements, all zones must be in views
解决的方法就是删除View以外的参数信息,或者通过DNS分离解析实验排障(日志文件排错)
(4)如何测试?
正确的测试:
需要使用到路由功能,实现192.168.10.0和192.168.20.0网段能够相互通讯。
不正确的测试(使用服务器自身进行测试):