必备功能:至少包含1个master和1个slave
劫持私有zone,添加子域名解析记录
增加至少2个view
支持公网域名解析
验证
能够修改私有zone子域名解析记录,master同步slave
测试私有zone子域名和公网域名可解析
引用:https://cn.linux-console.net/?p=3443
1.1 先决条件(机器准备)
准备了第三台机器,一台用作master(192.168.202.128),一台用作slave(192.168.202.129),还有一台用作客户端client(192.168.202.130)。
1.2 设置FQDN(完全限定域名)
FQDN提供了服务器在全局互联网中的唯一名称。这确保了当其他设备或服务需要访问这台DNS服务器时,可以通过一个明确且唯一的地址找到它。
1.2.1 在每个服务器上设置FQDN
在ns1服务器上执行命令:
sudo hostnamectl set-hostname ns1.hwdomain.io
在ns2服务器上执行命令:
sudo hostnamectl set-hostname ns2.hwdomain.io
1.2.2 在服务器上添加配置
使用以下命令编辑文件
/etc/hosts
:
sudo nano /etc/hosts
在每台服务器上添加以下配置:
192.168.202.128 ns1.hwdomain.io ns1
192.168.202.129 ns2.hwdomain.io ns2
1.2.3 验证每台服务器上的FQDN
使用命令:
sudo hostname -f
在ns1服务器上,获得的FQDN为
ns1.hwdomain.io
在ns2服务器上,获得的FQDN为
ns2.hwdomain.io
1.3 安装BIND包(ns1和ns2都安装)
1.3.1 安装
运行apt命令更新和刷新Ubuntu存储库:
sudo apt update
安装bind9:
sudo apt install bind9 bind9utils bind9-doc dnsutils
1.3.2 编辑配置
使用以下命令编辑配置 /etc/default/named:
sudo nano /etc/default/named
“OPTIONS = ”行允许BIND服务运行时设置特定选项,使用IPv4运行绑定:
OPTIONS="-u bind -4"
1.3.3 重新启动绑定服务named
重新启动:
sudo systemctl restart named
检查BIND服务的状态:
sudo systemctl status named
1.4 设置BIND主机(Master)
将ns1服务器设置为BIND DNS 服务器的主服务器。
1.4.1 编辑配置文件/etc/bind/named.conf.options
使用命令:
sudo nano /etc/bind/named.conf.options
在使用"options{…};"行之前,将创建一个名为"受信任"的ACL(访问控制列表),其中包括现环境中所有受信任的 IP 地址和网络。此外,添加本地服务器 IP 地址“ns1”和辅助 DNS 服务器“ns2”的 IP 地址。
acl "trusted"{
192.168.202.128;# ns1 - or you can use localhost for ns1
192.168.202.129;# ns2
192.168.202.0/24;# trusted networks};
对"options{…};"部分:
- 通过注释选项“listen-on-v6”禁用了对 IPv6 的支持
- 启用并允许来自“受信任”ACL 的递归
- 运行 BIND 服务在特定的ns1的 IP 地址(192.168.202.128)
- 正在禁用默认区域传输并将 BIND DNS 服务器的特定转发器定义为 Google 公共 DNS 8.8.8.8 和 Cloudflare的1.1.1.1 options {#开始一个选项块,其中包含了全局配置选项,这些选项将影响整个BIND服务器的行为
directory "/var/cache/bind";#设置BIND服务器的默认工作目录,用于存储运行时文件,如缓存文件和日志文件//listen-on-v6 { any;};# BIND不会监听IPv6的DNS查询
recursion yes;# 启用了递归查询
allow-recursion { trusted;};# 只允许来自“受信任”的地址进行递归查询
listen-on { 192.168.202.128;};# ns1 IP address
allow-transfer { none;};# 禁止所有区域传输
forwarders {#配置两个公共DNS服务器
8.8.8.8;
1.1.1.1;};};
1.4.2 检查和验证配置文件/etc/bind/named.conf.options
使用以下命令来检查:
sudo named-checkconf /etc/bind/named.conf.options
没有输出信息,证明以上配置时正确的。
1.5 设置区域
1.5.1编辑配置文件 /etc/bind/named.local
使用命令:
sudo nano /etc/bind/named.conf.local
- 设置域名正向解析区域:解析hwdomain.io的域名到IP地址的配置
zone "hwdomain.io"{#指定DNS区域的域名是hwdomain.io。type master;#设置了该区域的类型为master,意味着这个BIND服务器是此区域的权威主服务器,负责维护该区域的所有DNS记录。
file "/etc/bind/zones/db.hwdomain.io";# 指定了包含该区域DNS记录的文件路径
allow-transfer { 192.168.202.129;};# 允许从IP地址192.168.202.129进行区域传输,这是辅助DNS服务器的地址,它需要从主服务器上复制区域数据};
- 设置反向解析区域:解析IP地址到对应的域名的配置
zone "202.168.192.in-addr.arpa"{#反向解析区域,DNS区域的域名为202.168.192.in-addr.arpatype master;#设置了该区域的类型为master,表示这个BIND服务器是此反向解析区域的权威主服务器。
file "/etc/bind/zones/db.192.168.202";# 指定了包含该反向解析区域DNS记录的文件路径
allow-transfer { 192.168.202.129;};# 允许从IP地址192.168.202.129进行区域传输,与上面的正向解析区域配置相同。这通常是为了设置一个辅助DNS服务器,以便于备份和负载均衡。};
1.5.2 创建新目录
运行命令创建一个新目录/etc/bind/zones:
sudo mkdir -p /etc/bind/zones/
,该目录将用于存储区域配置文件。
1.5.3 转发区域配置
使用命令复制默认转发区域配置/etc/bind/zones/db.hwdomain.io:
sudo cp /etc/bind/db.local /etc/bind/zones/db.hwdomain.io
使用命令编辑文件:
sudo nano /etc/bind/zones/db.hwdomain.io
;; BIND data file for local loopback interface
;#这个文件是为本地回环接口(通常是127.0.0.1)配置的BIND数据文件$TTL 604800 #设置了默认的TTL(生存时间),即DNS记录被客户端缓存的时间(以秒为单位)
@ IN SOA localhost. root.localhost.(#SOA记录
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ); Negative Cache TTL
;; NS records for name servers #NS记录,指定了负责处理该区域查询的服务器
IN NS ns1.hwdomain.io.
IN NS ns2.hwdomain.io.; A records for name servers #定义了两个A记录,将DNS服务器的FQDN映射到对应的IP地址
ns1.hwdomain.io. IN A 192.168.202.128
ns2.hwdomain.io. IN A 192.168.202.129
; Mail handler or MX record for the domain hwdomain.io#定义了一个MX(邮件交换)记录,指定了处理该域电子邮件的服务器地址
hwdomain.io. IN MX 10 mail.hwdomain.io.; A records for domain names#两行定义了A记录,将域名映射到对应的IP地址
hwdomain.io. IN A 192.168.202.100
mail.hwdomain.io. IN A 192.168.202.120
1.5.4 反向区域配置
使用命令将默认反向区域配置文件复制到 /etc/bind/zones/db.192.168.202:
sudo cp/etc/bind/db.127 /etc/bind/zones/db.192.168.202
使用命令编辑文件:
sudo nano /etc/bind/zones/db.192.168.202
;; BIND reverse data file for local loopback interface
;$TTL 604800
@ IN SOA ns1.hwdomain.io. admin.hwdomain.io.(
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ); Negative Cache TTL
;; name servers - NS records #NS记录,指定了负责处理该区域查询的服务器
IN NS ns1.hwdomain.io.
IN NS ns2.hwdomain.io.; PTR Records #PTR记录,将IP地址映射到对应的FQDN
128 IN PTR ns1.hwdomain.io.; 192.168.202.128
129 IN PTR ns1.hwdomain.io.; 192.168.202.129
100 IN PTR ns1.hwdomain.io.; 192.168.202.100
120 IN PTR mail.hwdomain.io.; 192.168.202.120
1.5.5 添加view
- 编辑配置文件 /etc/bind/named.local:
sudo nano /etc/bind/named.conf.local
将zone区域全部放在view视图中。
view "internal"{
match-clients { 192.168.202.128;192.168.202.129;192.168.202.130;};
zone "hwdomain.io"{type master;
file "/etc/bind/zones/db.hwdomain.io";
allow-transfer{192.168.202.129;};};
zone "202.168.192.in-addr.arpa"{type master;
file "/etc/bind/zones/db.192.168.202";# subnet 192.168.202.0/24;
allow-transfer { 192.168.202.129;};# ns2 private IP address - secondary DNS};};
view "external"{
match-clients { any;};
zone "hwdomain.io"{type master;
file "/etc/bind/zones/db.hwdomain.io.external";
allow-transfer{192.168.202.129;};};
zone "202.168.192.in-addr.arpa"{type master;
file "/etc/bind/zones/db.192.168.202";
allow-transfer { 192.168.202.129;};};};
- 编辑配置文件/etc/bind/zones/db.hwdomain.io.external
```powershell
;; BIND data file for local loopback interface
;$TTL 604800
@ IN SOA localhost. root.localhost.(
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ); Negative Cache TTL
; NS records for name servers
IN NS ns1.hwdomain.io.
IN NS ns2.hwdomain.io.; A records for name servers
ns1.hwdomain.io. IN A 192.168.202.128
ns2.hwdomain.io. IN A 192.168.202.129
; Mail handler or MX record for the domain hwdomain.io
hwdomain.io. IN MX 10 mail.hwdomain.io.; A records for domain names
hwdomain.io. IN A 192.168.202.10
mail.hwdomain.io. IN A 192.168.202.20
- 编辑文件/etc/bind/zones/db.192.168.202.external
;; BIND reverse data file for local loopback interface
;$TTL 604800
@ IN SOA localhost. root.localhost.(
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ); Negative Cache TTL
; name servers - NS records
IN NS ns1.hwdomain.io.
IN NS ns2.hwdomain.io.; PTR Records
128 IN PTR ns1.hwdomain.io.; 192.168.202.128
129 IN PTR ns2.hwdomain.io.; 192.168.202.129
10 IN PTR hwdomain.io.; 192.168.202.10
20 IN PTR mail.hwdomain.io.; 192.168.202.20
- 编辑文件
/etc/bind/named.conf.default-zones
: 正在使用视图,BIND的默认区域配置可能不再需要,注释掉named.conf.default-zones文件中的默认配置。
1.5.6 检查配置
- 使用以下命令来检查BIND配置:
sudo named-checkconf
没有收到任何错误消息 - 使用命令检查正向区域配置文件:s
udo named-checkzone hwdomain.io /etc/bind/zones/db.hwdomain.io
- 使用命令检查反向区域配置文件:
sudo named-checkzone 202.168.192.in-addr.arpa /etc/bind/zones/db.192.168.202
- 使用命令重新启动BIND服务:
sudo systemctl restart named
1.6 设置BIND从站
1.6.1 编辑配置文件/etc/bind/named.conf.options
使用命令编辑配置文件:/etc/bind/named.conf.options
创建与主服务器上相同的 ACL(访问控制列表):
acl "trusted"{
192.168.202.128;# ns1
192.168.202.129;# ns2 - or you can use localhost for ns2
192.168.202.0/24;# trusted networks};
更改"options{…}"配置:
options {#开始一个选项块,其中包含了全局配置选项,这些选项将影响整个BIND服务器的行为
directory "/var/cache/bind";#设置BIND服务器的默认工作目录,用于存储运行时文件,如缓存文件和日志文件//listen-on-v6 { any;};# BIND不会监听IPv6的DNS查询
recursion yes;# 启用了递归查询
allow-recursion { trusted;};# 只允许来自“受信任”的地址进行递归查询
listen-on { 192.168.202.129;};# ns2 IP address
allow-transfer { none;};# 禁止所有区域传输
forwarders {#配置两个公共DNS服务器
8.8.8.8;
1.1.1.1;};};
1.6.2 编辑配置文件/etc/bind/named.conf.local
使用命令编辑配置文件/etc/bind/named.conf.local:
sudo nano /etc/bind/named.conf.local
,将ns2服务器设置为辅助DNS服务器
zone "hwdomain.io"{#开始了一个区域定义块,指定了DNS区域的域名是hwdomain.iotype slave;#设置了该区域的类型为slave,意味着这个BIND服务器是从服务器,它将从主DNS服务器(master DNS)同步区域数据
file "/etc/bind/zones/db.hwdomain.io";#指定了从服务器将存储同步的区域数据文件的路径
masters { 192.168.202.128;};# 定义了主DNS服务器的IP地址,从服务器将从这个地址同步区域数据};
zone "202.168.192.in-addr.arpa"{#开始了一个新的区域定义块,指定了DNS区域的域名是202.168.192.in-addr.arpa。这是一个反向解析区域,用于将IP地址解析为域名。type slave;
file "/etc/bind/zones/db.192.168.202";#指定了从服务器将存储同步的反向解析区域数据文件的路径
masters { 192.168.202.128;};# 主DNS服务器的IP地址,从服务器将从这个地址同步反向解析区域数据};
1.6.3 检查配置
- 检查和验证BIND配置:
sudo named-checkconf
- 在ns2服务器上重新启动 BIND 服务named以应用新的更改:
sudo systemctl restart named
- 检查和验证ns2服务器上的BIND服务named:
sudo systemctl status named
1.7 从客户端计算机验证DNS服务器
使用以下命令删除默认链接文件/etc/resolv.conf:
sudo unlink /etc/resolv.conf
- 使用nano编辑器创建一个新文件:
sudo nano /etc/resolv.conf
- 在文件中添加如下配置:
nameserver 192.168.202.128(master)
nameserver 192.168.202.129(slave)
nameserver 8.8.8.8(Google DNS解析器)
search hwdomain.io(域名)
- 下载bind9:
sudo apt install dnsutils bind9-utils
- 运行dig命令解析域名"hwdomain.io",可以看到看到被解析为服务器IP地址:192.168.202.100
- 运行dig命令解析子域名"mail.hwdomain.io",可以看到看到被解析为服务器IP地址:192.168.202.120
- 使用dig命令解析公网域名www.baidu.com![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e954373cdaa84fdc9893d3c5431bcfcc.png)
- 使用nslookup命令验证域名的反向区域配置
- 在master端修改私有zone子域名解析记录
- 重启后再停止master的服务:
sudo systemctl restart named``````sudo systemctl stop named
- 在客户端dig mail.hwdomain.io:
- view检查:使用192.168.202.130去dig hwdomain.io得到192.168.202.100 使用192.168.202.131去dig hwdomain.io得到192.168.202.10
版权归原作者 椰汁甜糯米糍 所有, 如有侵权,请联系我们删除。