03--综合案例,实现 Internet 的 DNS 服务架构

0. 架构图

在这里插入图片描述

1. 环境规划

节点名称ip地址节点信息
client10.0.0.6DNS客户端
ldns10.0.0.8本地DNS服务器(只缓存)
zdns10.0.0.18转发目标DNS服务器
rdns10.0.0.28根DNS服务器
odns10.0.0.38org域DNS服务器
mdns10.0.0.48lec.org域主DNS服务器
sdns10.0.0.58lec.org域从DNS服务器
wdns10.0.0.68www.lec.org的WEB服务器

3.前提准备

关闭SElinux
关闭防火墙
# -----
ufw disable
root@master1:~# ufw status
Status: inactive
#如果是inactive表示已经关闭,如果是active表示已经启动
时间同步
# -----
apt -y install chrony; chronyc sources -v ; timedatectl set-timezone Asia/Shanghai
# 更新
apt update ; apt upgrade

4.实现步骤

  • 8台主机直接网络关系要打通

4.1 在客户端配置DNS服务器地址

root@client:~# cat /etc/netplan/00-installer-config.yaml 
network:
  ethernets:
    ens33:
      dhcp4: no
      addresses: [10.0.0.6/24] 
      gateway4: 10.0.0.3 
      nameservers:
              addresses: [10.0.0.8] 	###本地DNS
  version: 2

# 查看
root@client:~# cat /etc/resolv.conf 
nameserver 10.0.0.8
options edns0 trust-ad
# 安装客户端工具
apt -y install bind9-utils 

4.2 实现WEB服务

apt -y install nginx ;systemctl enable --now nginx; echo "www.lec.org is 10.0.0.68 " >> /var/www/html/index.html
# 测试
root@client:~# curl 10.0.0.68
www.lec.org is 10.0.0.68 

4.3 实现lec.org域的主DNS服务器

  • 10.0.0.48 机器上
  • 从服务器是通过版本号标识来确定是否从主服务器复制
# 安装
apt -y install bind9-utils  bind9
# 安全加固,防止被抓包

# 添加的是lec.org域的从DNS服务器ip
root@mdns:/etc/bind# cat /etc/bind/named.conf.options 
options {
        directory "/var/cache/bind";

        dnssec-validation auto;
        allow-transfer { 10.0.0.58; };   # 新加这行,添加的是lec.org域的从DNS服务器ip
        listen-on-v6 { any; };
};
# 添加域zone
vi /etc/bind/named.conf.default-zones 
zone "lec.org" {
        type master;
        file "/etc/bind/db.lec.org";
};
# 修改/etc/bind/db.lec.org
cp -p /etc/bind/db.local /etc/bind/db.lec.org

root@mdns:/etc/bind# vi /etc/bind/db.lec.org
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     master  admin.lec.org. (
                              2         ; Serial	版本号标识
                         604800         ; Refresh	从服务器刷新时间
                          86400         ; Retry		重试时间
                        2419200         ; Expire	过期时间
                         604800 )       ; Negative Cache TTL		否定答案的TTL值
;
                NS      master
                NS      slave

master  IN      A       10.0.0.48
slave   IN      A       10.0.0.58
www     IN      A       10.0.0.68

# 主配置文件语法检查
named-checkconf
# 解析库文件语法检查
named-checkzone "lec.org" /etc/bind/db.lec.org
# 第一次启动服务
systemctl start bind9.service 
# 不是第一次启动服务
rndc reload

4.4 实现lec.org域的从DNS服务器

  • 10.0.0.58 机器上

4.4.1 实现lec.org域的从DNS服务器

# 安装
apt -y install bind9-utils  bind9
# 安全加固,防止被抓包

# 不允许其它主机进行区域传输
root@sdns:/etc/bind# cat /etc/bind/named.conf.options 
options {
        directory "/var/cache/bind";

        dnssec-validation auto;
        allow-transfer { none; };   # 新加这行,不允许其它主机进行区域传输
        listen-on-v6 { any; };
};
# 添加域zone  添加lec.org域的主DNS服务器ip
vi /etc/bind/named.conf.default-zones 
zone "lec.org" {
        type slave;
        masters { 10.0.0.48; };  # lec.org域的主DNS服务器ip
        file "db.lec.org.slave";
};
# 主配置文件语法检查
named-checkconf
# 第一次启动服务
systemctl start bind9.service 
# 不是第一次启动服务
rndc reload
# 查看区域数据库文件是否生成  默认的文件路径/var/cache/bin
root@sdns:/etc/bind# cat /etc/bind/named.conf.options 
options {
        directory "/var/cache/bind";

root@sdns:/etc/bind# cd /var/cache/bind
root@sdns:/var/cache/bind# ls -lrt 
total 12
-rw-r--r-- 1 bind bind 2237 Mar 21 10:17 managed-keys.bind.jnl
-rw-r--r-- 1 bind bind  221 Mar 21 10:17 managed-keys.bind
-rw-r--r-- 1 bind bind  369 Mar 21 11:13 db.lec.org.slave
  • 配完主从,client测试一下
# 正常情况
root@client:~# nslookup www.lec.org 10.0.0.48
Server:         10.0.0.48
Address:        10.0.0.48#53

Name:   www.lec.org
Address: 10.0.0.68

root@client:~# nslookup www.lec.org 10.0.0.58
Server:         10.0.0.58
Address:        10.0.0.58#53

Name:   www.lec.org
Address: 10.0.0.68

# 停掉主服务器
root@client:~# nslookup www.lec.org 10.0.0.58
Server:         10.0.0.58
Address:        10.0.0.58#53

Name:   www.lec.org
Address: 10.0.0.68

root@client:~# nslookup www.lec.org 10.0.0.48
;; communications error to 10.0.0.48#53: connection refused
;; communications error to 10.0.0.48#53: connection refused
;; communications error to 10.0.0.48#53: connection refused
;; no servers could be reached

4.4.2 zone里的file写绝对路径报错

4.4.2.1 zone文件配置
cat /etc/bind/named.conf.default-zones 
zone "lec.org" {
        type slave;
        masters { 10.0.0.48; }; 
        file "/etc/bind/slave/lec.org.slave";
};
4.4.2.2 报错内容
Mar 21 11:07:54 sdns named[12349]: dumping master file: /etc/bind/slaves/tmp-dLxYrqkUR6: open: permission denied

在这里插入图片描述

4.4.2.3 解决方法一
修改 /etc/apparmor.d/usr.sbin.named 
加上一行 /etc/bind/slave/** rw, 要设定 rw 才是代表「可读可写」的意思。
vi /etc/apparmor.d/usr.sbin.named

  /etc/bind/** r,
  /etc/bind/slave/** rw,   # 这行是添加的
  /var/lib/bind/** rw,
  /var/lib/bind/ rw,
  /var/cache/bind/** lrw,
  /var/cache/bind/ rw,
如下图

在这里插入图片描述

4.4.2.4 解决方法二
写相对路径,默认的文件路径/var/cache/bind
cat /etc/bind/named.conf.options 
options {
        directory "/var/cache/bind";
修改  /etc/bind/named.conf.default-zones ,把zone里的file写相对路径
cat /etc/bind/named.conf.default-zones 
zone "lec.org" {
        type slave;
        masters { 10.0.0.48; }; 
        file "lec.org.slave";
};

root@sdns:/etc/bind# cd /var/cache/bind
root@sdns:/var/cache/bind# ls -lrt 
total 12
-rw-r--r-- 1 bind bind 2237 Mar 21 10:17 managed-keys.bind.jnl
-rw-r--r-- 1 bind bind  221 Mar 21 10:17 managed-keys.bind
-rw-r--r-- 1 bind bind  369 Mar 21 11:13 lec.org.slave

4.5 实现org域的主DNS服务器

  • 10.0.0.38
# 安装
apt -y install bind9-utils  bind9

# 添加域zone
vi /etc/bind/named.conf.default-zones 
zone "org" {
        type master;
        file "/etc/bind/db.org";
};
# 修改/etc/bind/db.org
cp -p /etc/bind/db.local /etc/bind/db.org

root@mdns:/etc/bind# vi /etc/bind/db.org
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     master  admin.lec.org. (
                              2         ; Serial	版本号标识
                         604800         ; Refresh	从服务器刷新时间
                          86400         ; Retry		重试时间
                        2419200         ; Expire	过期时间
                         604800 )       ; Negative Cache TTL		否定答案的TTL值
;
                NS      master
lec             NS      lecns1
lec             NS      lecns2
master  IN      A       10.0.0.38
lecns1  IN      A       10.0.0.48
lecns2  IN      A       10.0.0.58

# 主配置文件语法检查
named-checkconf
# 解析库文件语法检查
named-checkzone "org" /etc/bind/db.org
# 第一次启动服务
systemctl start bind9.service 
# 不是第一次启动服务
rndc reload
  • 客户端测试一下
root@client:~# nslookup www.lec.org 10.0.0.38
Server:         10.0.0.38
Address:        10.0.0.38#53

Non-authoritative answer:
Name:   www.lec.org
Address: 10.0.0.68

4.6 实现根域的主DNS服务器

  • 10.0.0.28机器上
# 安装
apt -y install bind9-utils  bind9

# 添加域zone
vi /etc/bind/named.conf.default-zones 
zone "." {
        type master;
        file "/etc/bind/db.root.zone";
};
# 修改/etc/bind/db.root.zone
cp -p /etc/bind/db.local /etc/bind/db.root.zone

root@mdns:/etc/bind# vi /etc/bind/db.root.zone
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     master  admin.lec.org. (
                              2         ; Serial	版本号标识
                         604800         ; Refresh	从服务器刷新时间
                          86400         ; Retry		重试时间
                        2419200         ; Expire	过期时间
                         604800 )       ; Negative Cache TTL		否定答案的TTL值
;
                NS      master
org             NS      orgns
master  IN      A       10.0.0.28
orgns   IN      A       10.0.0.38

# 主配置文件语法检查
named-checkconf
# 解析库文件语法检查
named-checkzone "." /etc/bind/db.root.zone
# 第一次启动服务
systemctl start bind9.service 
# 不是第一次启动服务
rndc reload
  • 客户端测试一下
root@client:~# nslookup www.lec.org 10.0.0.28
Server:         10.0.0.28
Address:        10.0.0.28#53

Non-authoritative answer:
Name:   www.lec.org
Address: 10.0.0.68

4.7 实现转发目标的DNS服务器

  • 10.0.0.18机器上
# 安装
apt -y install bind9-utils  bind9

# 修改根域zone
vi /etc/bind/named.conf.default-zones 
zone "." {
        type master;
        file "/etc/bind/root.hints";
};
# 修改/etc/bind/root.hints
root@mdns:/etc/bind# vi /etc/bind/root.hints
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     10.0.0.28

# 主配置文件语法检查
named-checkconf
# 第一次启动服务
systemctl start bind9.service 
# 不是第一次启动服务
rndc reload
  • 客户端测试一下
root@client:~# nslookup www.lec.org 10.0.0.18
Server:         10.0.0.18
Address:        10.0.0.18#53

Non-authoritative answer:
Name:   www.lec.org
Address: 10.0.0.68

4.8 实现本地只缓存DNS服务器

  • 10.0.0.8机器上
# 安装
apt -y install bind9-utils  bind9

# 配置 添加下面内容
vi /etc/bind/named.conf.options

        forwarders {
                10.0.0.18;
           };
        dnssec-validation no;
# 主配置文件语法检查
named-checkconf
# 第一次启动服务
systemctl start bind9.service 
# 不是第一次启动服务
rndc reload
  • 客户端测试一下
root@client:~# nslookup www.lec.org 10.0.0.8
Server:         10.0.0.8
Address:        10.0.0.8#53

Non-authoritative answer:
Name:   www.lec.org
Address: 10.0.0.68
# curl
root@client:~# curl www.lec.org
www.lec.org is 10.0.0.68 

4.9 客户端测试

cat /etc/resolv.conf 
nameserver 10.0.0.8
# curl
root@client:~# curl www.lec.org
www.lec.org is 10.0.0.68 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值