DNS-HTTP-SMTP服务器搭建及简单测试

DNS服务器配置(基于Ubuntu16.04的Bind)

下载Bind相关包

  • 使用命令 sudo apt install bind9 bind9utils bind9-doc

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CX5kDBl5-1586333139064)(image-20200407163426463.png)]

修改配置

修改返回IPV4类型地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QM2fstJq-1586333139066)(image-20200407163747552.png)]

修改配置文件 named.conf.options

​ 该文件(/etc/bind/named.conf.options)需要修改三处:

  • acl 部分:acl 是控制哪些客户端可以连接到这个 DNS 上的,支持子网掩码方式,例子中我把 10.19.250.0/24 网段中的所有 IP 都设为了可访问。
  • recursion 字段:设置成 yes,表示允许递归 DNS 查询。
  • allow-recursion 字段:允许递归查询的客户端范围,这里设置成了之前在 acl 中声明的 trusted。
  • listen-on 字段:表示 DNS 服务监听在哪个地址上,填写本地 IP 即可。
  • allow-transfer 字段:设置成 none 表示不允许其他 DNS 服务器从本 DNS 服务器中查询。
  • forwarders 字段:原因是我们的内网 DNS 服务只提供了很有限的几条 DNS 记录,如果不做点什么的话,APT 源的地址都解析不了。BIND9 提供 DNS 查询的转发机制,当本地 DNS 查询不到,将查询转发到 forwarders 上,并把查询结果缓存到本地 DNS 上,这样问题就解决了。

options {
        recursion yes;
        allow-recursion { trusted; };
        listen-on { 192.168.159.129; };
        allow-transfer { none; };
        ...
        forwarders {
                114.114.114.114;
        };
        ...
}
...

修改配置文件 named.conf.local

假设搭建的内网 DNS 要解析的域名为 cjc.com,那么 /etc/bind/named.conf.local 内容应改为


zone "cjc.com" {
        type master;
        file "/etc/bind/zones/db.cjc.com";
};

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SoaWP6Ow-1586333139067)(image-20200407170010715.png)]

修改 zone 文件

zone 文件在前面里已经出现过了,file "/etc/bind/zones/db.example.com";,需要在对应的目录下建立该文件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-46gmcm4s-1586333139067)(image-20200407193910870.png)]

需要注意的几点是:

  • 不要漏掉域名后面的点,例如:testing.cjc.com.
  • 我们需要的 A 类型的记录,但是 NS 类型的记录也不要漏掉,不然会报错的。
named-checkconf[39493]: zone cjc.com/IN: has no NS records
named-checkconf[39493]: zone cjc.com/IN: not loaded due to errors.
named-checkconf[39493]: _default/cjc.com/IN: bad zone

修改本地DNS服务器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NwaWPq6l-1586333139068)(image-202004081147522519.png)]

  • 添加DNS服务器IP
  • 此处为临时改变,待系统重启后,会自动恢复默认

检查配置

  • bind9 自带了检查配置文件语法正确性的工具,这可以降低排查错误的难度,所以在进一步测试 DNS 功能之前,我们先来好好利用这些工具检查一下前几步配置是否正确吧。

  • 先来检查 named.conf.* 文件,如果运行该命令没有任何输出的话,就说明配置一切 OK,如果有的话,根据提示修改.

    sudo named-checkconf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LLdTAoot-1586333139074)(image-20200407170327936.png)]

  • 接下来用命令 named-checkzone 检查 zone 文件,命令格式如下:sudo named-checkzone,第一个参数 是域名,参考 2.4 中配置的域名,第二参数 是 zone 文件,参考 2.5 中配置的 zone 文件

    sudo named-checkzone cjc.com /etc/bind/zones/db.cjc.com

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZBoc8Y3M-1586333139075)(image-20200407170414792.png)]

重启服务

systemctl restart bind9

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0huPkS7M-1586333139078)(image-20200407193747203.png)]

结果检测

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e8MSuDqM-1586333139079)(image-20200407203448674.png)]

HTTP服务器(基于Ubuntu16.04 Nginx)

安装Nginx

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iOAU3RCQ-1586333139081)(image-20200407190341161.png)]

修改默认主页文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rXGeXmiR-1586333139082)(image-20200408092939220.png)]

DNS-HTTP 抓包分析

环境简述

  • Ubuntu 16.04
  • 基于 Ubuntu 的 DNS服务器 Bind9
  • 基于 Ubuntu 的 WEB服务器 Nginx

实验流程

  • 使用浏览器访问 www.testing.cjc.com
  • 触发DNS服务器,查询域名,返回IP
  • 浏览器向指定URL发起Get请求,返回数据,处理并呈现

报文分析

DNS请求报文

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-849NmZVk-1586333139085)(image-20200407201647810.png)]

DNS响应报文

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OWTZ5FOq-1586333139088)(image-20200407213914211.png)]

HTTP 报文

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g0D40nEd-1586333139089)(image-20200407201859483.png)]

结果展示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EOrKZTCZ-1586333139090)(image-20200408092832419.png)]

SMTP 服务器配置(基于Ubuntu16.04 Postfix)

安装Mailutils

sudo apt-get install mailutils

  • mailutils是一个命令行邮箱客户端,使用它可以很方便的发送和接收邮件, mailutils里面就包含了sendmail和postfix,当然你也可以只安装postfix,postfix包含sendmail。

配置一

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D1KQOc0e-1586333139091)(image-20200408094640632.png)]

安装postfix的时候会弹出两个配置,第一个是postfix配置类型,我们默认选择第二种:Internet Site就行,这几种配置分别表示:

  • No configuration:表示不要做任何配置;
  • Internet Site:表示直接使用本地SMTP服务器发送和接收邮件;
  • Internet with smarthos: 表示使用本地SMTP服务器接收邮件,但发送邮件时不直接使用本地SMTP服务器,而是使用第三方smart host来转发邮件;
  • Satellite system:表示邮件的发送和接收都是由第三方smarthost来完成。
  • Local only:表示邮件只能在本机用户之间发送和接收。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RHSX0JU2-1586333139092)(image-20200408095328128.png)]

配置邮箱域名

  • 这里既是配置邮箱的后缀,例如我需要使用 root@duanran.cc
  • 此处就输入 duanran.cc
  • 届时用户名,会自动取得本地系统用户名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uB1B9J5m-1586333139095)(image-20200408095520802.png)]

查看25端口是否开启

  • 这里使用nmap包扫描端口
  • sudo apt install nmap

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QFmuz0Xo-1586333139096)(image-20200408095703656.png)]

添加邮箱域名解析

  • 即添加 duanran.cc的DNS解析
  • 如第一部分实验一致,这里只展示结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SZlOAg6n-1586333139097)(image-20200408113903744.png)]

使用sendMail发送邮件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DgX3MRzd-1586333139097)(image-20200408113944032.png)]

邮箱接收

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LAo6M5Ig-1586333139100)(image-20200408114017850.png)]

报文分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B3BpVb1F-1586333139101)(image-20200408115637410.png)]

220 服务就绪

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lezrivVi-1586333139103)(image-20200408120209648.png)]

250 请求服务建立成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3XgTceuy-1586333139105)(image-20200408120437312.png)]

报文发送

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KFTLns7d-1586333139106)(image-20200408120525152.png)]

  • 客户用“MAIL FROM”向服务器报告发信人的邮箱与域名
  • 服务器向客户回应应答码“250”,代表请求命令完成
  • 客户用“RCPT TO”命令向服务器报告收信人的邮箱与域名
  • 服务器向客户回应应答码“250”,代表请求命令完成
  • 客户用“DTAT”命令对报文的传送进行初始化
  • 服务器回应“354”,表示可以进行邮件输入了
  • 客户用连续的行向服务器传送报文的内容,每行以两字符的行结束标识(CR与LF)终止。报文以只有一个“.”的行结束
  • 服务器向客户回应应答码“250”,代表请求命令完成

客户端发送“QUIT”命令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8wzVkUPW-1586333139108)(image-20200408120700718.png)]

  • 客户端发送“QUIT”命令
  • 服务器收到命令后,回应应答码“221”,并结束会话

所遇问题与相关解决方案

在首次未配置域名解析时,无法发送邮件

  • 手动添加DNS记录
  • 或使用自有公网DNS解析的域名

配置DNS解析时,报错

  • 在修改相关配置文件时,应注意相关权限的分配

邮件无法回复情况

  • 因本次实验使用的是笔者手动DNS解析的临时域名
  • 故在回复时,公网无法查询到其DNS记录,即无法回信
  • 解决方案:
    • 使用已有公网DNS的域名

参考资料

其他文章,请关注或订阅笔者博客:断然不然嘞?

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值