Unit7—企业dns服务器搭建(一)

实验环境

linux 系统中真实主机的可以上网,打开真实主机的地址伪装功能,真实主机可以与a主机和b主机通信

在这里插入图片描述

a主机:双网卡;可以上网(网关:添加真实主机)
172.25.254.104(ens3)
172.25.4.104(ens9)

在这里插入图片描述
在这里插入图片描述

b主机:单网卡,可以上网(网关:添加真实主机)
172.25.254.204

在这里插入图片描述

一、dns 的名词解释

dns: domain name service(域名解析服务)

二、dns服务的安装与启用

1. 关于客户端

/etc/resolv.conf ##dns指向文件
在这里插入图片描述
测试:
host www.baidu.com ##地址解析命令
dig www.baidu.com ##地址详细解析信息命令
在这里插入图片描述
在这里插入图片描述

A记录 ##ip地址叫做域名的Address 记录(A后面的IP是这个地址的A记录 )
SOA ##授权起始主机
dns顶级,次级有13个
.com .net .edu .org … 无数多个域名 baidu.com

在这里插入图片描述

NXDOMAIN :此域名A记录在dns中不存在

2.关于服务端

bind ##安装包
named ##服务名称
/etc/named.conf ##主配置文件
/var/named ##数据目录
端口 ##53

在这里插入图片描述
在这里插入图片描述

westosb 的域名解析服务器设定为westosa,westoa搭建高速缓存dns ;
作用: 将自己缓存下来的数据,共享给其他的内网主机

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3.关于报错信息

1.no servers could be reached                服务无法访问
2.服务启动失败:     配置文件写错,输入命令journalctl -xe查询错误信息;
3.dig 查询状态
NOERROR  表示查询成功
REFUSED  服务拒绝访问
SERVFAIL  查询记录失败
NXDOMAIN  此域名A记录在dns中不存在

(1) no servers could be reached ##服务无法访问(服务开启?火墙?网络?端口?)
在这里插入图片描述
解决方法:在本地所有网络接口上开启53端口
在这里插入图片描述在这里插入图片描述(2) REFUSED 服务拒绝访问
在这里插入图片描述
解决方法:允许查询A记录的客户端列表(国内作缓存源,不从根域名服务器上取,节省时间)
在这里插入图片描述
在这里插入图片描述
(3) SERVFAIL 查询记录失败(dns服务器无法到达上级,拒绝缓存)
在这里插入图片描述
解决方法:禁用dns检测,使dns能够缓存外部信息到本机
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

三、高速缓存dns

vim /etc/named.conf    #修改主配置文件
listen-on port 53 { any; }; #本地所有网络接口上开启53端口
allow-query { any; };   #允许查询A记录的客户端列表
dnssec-validation no;   #禁用dns检测使dns能够缓存外部信息到本机
systemctl restart named

完成上述操作后,此时高速缓存 dns 服务器就已经搭建完成,当企业中的一台主机访问过一个网址之后,其他的主机在访问时便会从搭建 dns 服务器的主机中获得数据,有效节省时间。

测试:

第一次用时:
在这里插入图片描述
有缓存情况下用时:
在这里插入图片描述
有缓存情况下,其他主机用时:
在这里插入图片描述
在这里插入图片描述

四、dns 的正向解析 (域名----> IP)

实验环境:/etc/named.conf 中注释forwarders行(国内源),搭建企业内部dns
在这里插入图片描述
在这里插入图片描述

1.SOA授权起始

实验步骤:

(一)编辑 /etc/named.rfc1912.zones 文件(将/etc/named.conf文件所写的维护的域的内容写入)

westos.org :要维护的域名
type master :dns为主dns
westos.org.zone :A记录解析文件
allow-update {none} :允许更新主机列表

在这里插入图片描述
在这里插入图片描述
(二)cp -p named.localhost westos.org.zone ##生成 A 记录文件

在 A 记录解析文件存放目录 /var/named/ 中执行该命令,-p 表示复制权限,如果忘记-p,可以修改文件的拥有组为named

在这里插入图片描述
(三)vim westos.org.zone ##A 记录解析文件,对域名解析进行说明,重启named服务

(1)dns.westos.org. root.westos.org. ##SOA授权起始
(2)TTL ##A记录能够被缓存的最大时间为1天;
(3)@ ##表示 /etc/named.rfc1912.zone文件中,引号的内容(维护的域名)
(4)westos.org.zone 文件中所有不以“.” 结尾的内容,都会自动补齐@符的值,加“.” 表示不会被补齐@符的值
(5)NS:域名服务器

在这里插入图片描述
在这里插入图片描述
测试:

解析 www.westos.org域时,提供分析服务的是172.25.254.104主机

在这里插入图片描述

2.一个域名对应多个ip

在这里插入图片描述
测试:
在这里插入图片描述

3.轮校

两个相同的域名指定的不同的IP,dig时会出现轮校

在这里插入图片描述

4.规范域名转换(CNAME)

在这里插入图片描述
测试:
在这里插入图片描述

5.邮件解析记录(mx的正向解析 :域名----> IP)

b主机:安装poxfix提供邮件投递协议的软件,对外开放smtp协议)和 mailx (发送邮件的客户端),启动postfix服务

在这里插入图片描述
在这里插入图片描述

a主机:编辑westos.org.zone ##A 记录解析文件

在这里插入图片描述

最后一行表示邮件解析记录,设定mx记录的优先级为1

在这里插入图片描述
测试:

dig -t mx westos.org:邮件解析记录查询,可以看到当前维护域的邮件信息

在这里插入图片描述

westosb发送邮件给westosa
mailq:显示待发送的邮件队列,mx的正向解析成功

在这里插入图片描述

五、dns 的反向解析ptr (IP---->域名 )

将IP地址解析为域名,域名叫 IP 的 ptr 记录,IP 叫域名的 A 记录

实验步骤:

(一)vim /etc/named.rfc1912.zones,写入反向解析语句(52-57)

在这里插入图片描述在这里插入图片描述

52行: 表示维护的 IP ,此处的书写要反向写入;172.25.254.ptr 表示 ptr 记录解析文件

在这里插入图片描述
(二)cp -p named.loopback 172.25.254.ptr , 在 A 记录解析文件存放目录 /var/named/ 中执行此命令,生成 ptr 记录文件

(三)编辑 /var/named/172.25.254.ptr,ptr 记录文件,写入 PTR 记录,重启服务
在这里插入图片描述测试:
在这里插入图片描述

-t:正向解析参数
-x:反向解析参数,将IP地址解析为域名时可以看到 IP 的 PTR 记录

在这里插入图片描述
在这里插入图片描述

六、dns 的双向解析

dns设定多套解析方式(不同网段)

实验环境:

b主机ip:172.25.4.204(resolv.conf写172.25.4.104)
a主机ip:172.25.254.104和172.25.4.104

在这里插入图片描述在这里插入图片描述在这里插入图片描述

man named.conf可以查看named服务手册

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述a主机dig是254,b主机dig是254

在这里插入图片描述
在这里插入图片描述
实验步骤:

(一)编辑主配置文件 /etc/named.conf

不同网段主机 dns 解析不一样:
内网主机对应 /etc/named.rfc1912.zones ;
外网主机对应 /etc/named.rfc1912.zones.inter ;

在这里插入图片描述
在这里插入图片描述
(二)cp -p named.rfc1912.zones named.rfc1912.zones.inter

(三)编辑文件 /etc/named.rfc1912.zones.inter
在这里插入图片描述
在这里插入图片描述
(四)cp -p westos.org.zone westos.org.inter
在这里插入图片描述
(五)编辑外网解析文件:westos.org.inter
在这里插入图片描述
在这里插入图片描述
测试:
a主机中dig为254网段的ip,b主机dig为4网段的ip
在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在 Python 中,有很多流行的单元测试框架,例如unittest、pytest、nose等。这里我以unittest为例,为您介绍如何搭建一个简单的单元测试框架。 1. 创建测试文件 首先,我们需要创建一个测试文件,例如test_example.py。在该文件中,我们需要导入unittest模块,并创建一个继承自unittest.TestCase的测试类。 ```python import unittest class TestExample(unittest.TestCase): def test_addition(self): self.assertEqual(1+1, 2) ``` 在上述代码中,我们创建了一个名为TestExample的测试类,并在其中定义了一个名为test_addition的测试方法。在该方法中,我们调用了assertEqual方法来判断1+1的结果是否等于2。 2. 运行测试 接下来,我们需要运行测试。可以使用unittest模块提供的TestLoader和TextTestRunner类来运行测试。 ```python import unittest class TestExample(unittest.TestCase): def test_addition(self): self.assertEqual(1+1, 2) if __name__ == '__main__': loader = unittest.TestLoader() suite = loader.loadTestsFromTestCase(TestExample) runner = unittest.TextTestRunner() result = runner.run(suite) ``` 在上述代码中,我们使用if __name__ == '__main__'语句来判断是否直接运行该文件。如果是,我们创建一个TestLoader对象,使用loadTestsFromTestCase方法加载TestExample类中的测试方法,然后创建一个TextTestRunner对象并运行测试。 3. 查看测试结果 测试运行后,我们可以查看测试结果。可以使用TextTestResult类来获取测试结果。 ```python import unittest class TestExample(unittest.TestCase): def test_addition(self): self.assertEqual(1+1, 2) if __name__ == '__main__': loader = unittest.TestLoader() suite = loader.loadTestsFromTestCase(TestExample) runner = unittest.TextTestRunner() result = runner.run(suite) print(result) ``` 在上述代码中,我们在测试运行后使用print函数打印测试结果。 以上就是一个简单的单元测试框架的搭建过程。您可以根据自己的需求,进一步扩展和优化测试框架。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值