网络部署DNS相关实验 | 青训营

71 阅读4分钟

一、涉及理论及实验所用工具

涉及理论部分参考字节青训营所发材料 【网络与部署 学习资料(上)】字节跳动青训营 - 后端专场 - 掘金 (juejin.cn),这里不再过多赘述。

实验所用工具,这里用到Linux操作系统,bind9开源软件。

二、实验所用工具的安装

因为我的电脑是windows系统,所以不能直接安装bind9,需要先安装虚拟机,这里选择的是安装Ubuntu。

首先要先安装VMware,这里安装的是VMware Workstation Pro,具体的安装网站为(VMware 中国 - 交付面向企业的数字化基础 | CN),下载试用版,然后网上找个批量激活码就行,一个不行多试几个,总会用没被批量用完的。Ubuntu可以参考这篇文章中的网站去下载(别去官网,速度慢到你哭),如何下载 Ubuntu 镜像文件? - 知乎 (zhihu.com)。做好这些下载工作后参考这篇文章,安装虚拟机即可(Ubuntu虚拟机安装_虚拟机安装ubuntu_尼古拉斯儿的博客-CSDN博客)。

安装完成虚拟机后,下一步安装bind9。首先在虚拟机上调出终端界面,依次打下下列命令:

sudo su  //root用户认证
apt-get update  //更新源列表
apt-get install bind9  //安装bind9

这里要注意一点,在打下第一行的命令后,会提示你输入密码,输密码时你会发现,怎么打不出来?不要紧张,这是系统的一种保护措施,你的输入其实有被接受,但是就是要注意自己输入了什么,别输错了。 出现下列目录及文件即为成功。

1691739459469.png

三、开始实验

1、创建网页并运行

首先在/etc 内创建一个.html文件,具体代码如下:

<!DOCTYPE html>
<html>
<head>
<title>hello world</title>
</head>
<body>
hello world
</body>
</html>

创建HTML文件后终端进入文件所在目录下使用指令python3 -m http.server 8080 --bind 127.0.0.1运行一个简单的HTTP服务器指定IP:127.0.0.1和端口:8080,打开浏览器呈现的效果如图。

1691739823956.png

2、host劫持

在/etc/hosts 中加入代码127.0.0.1 www.toutiao.com,这里要注意,我们一般的hosts中是只读模式,无法进行编辑,因此在这之前,需先进行以下操作。

sudo apt install nautilus-admin
nautilus -q

使用时只需要在文件右键里选择以管理员身份编辑即可。

编辑好后在浏览器上运行,得到 1691740105362.png

3、DNS搭建

创建zone文件

使用touch jzlf.com.zone创建zone文件,其中.com.zone不能变,文件名随意。之后打入以下代码。

$TTL 10M
@   IN    SOA    ns1.example.com    admin.example.com. (
        0       ; serial
        1D      ; refresh
        1H      ; retry
        1W      ; expire
        3H )    ; minimum

@    IN    NS   ns1.jzlf.com.
; 这里ns1主机的ip地址可以换成本机地址
ns1        A    127.0.0.1
; 这里www主机的ip地址可以换成本机地址
www        A    127.0.0.1

写入conf文件

在named.conf写入下列代码,这里要注意的是options在前面/etc/bind/named.conf.options中已有,所以这段需要注释掉,否则会发生重定义。

logging {
 channel default_log {
        #这里注意提前创建log目录
        file "/var/log/named/named.log" versions 10 size 200m;
        severity dynamic;
        print-category yes;
        print-severity yes;
        print-time yes;
    };
    channel query_log {
        file "/var/log/named/query.log" versions 10 size 200m;
        severity dynamic;
        print-category yes;
        print-severity yes;
        print-time yes;
    };
    channel resolver_log {
        file "/var/log/named/resolver.log" versions 10 size 200m;
        severity dynamic;
        print-category yes;
        print-severity yes;
        print-time yes;
    };
    category default {default_log;};
    category queries {query_log;};
    category query-errors {query_log;};
    category resolver {resolver_log;};
};

options {
    #这里的ip地址可以换成本机地址
    listen-on port 53 { 127.0.0.1; };
    directory "/etc/bind";
    dnssec-validation no;
    #支持递归查询
    recursion yes;
    #转发到公共DNS优先,而不是自己去迭代查询,节省网络IO资源消耗
    forward first;
    forwarders {
        223.5.5.5;
        223.6.6.6;
    };
    allow-query { any; };
    listen-on-v6 { any; };
};

zone "jzlf.com" {
    type master;
    file "jzlf.com.zone";
};

开始运行DNS

使用service named start开始运行,同时可以使用service named status查看运行状态。大致效果图如图所示。

1691740736069.png

ctrl+c即可退出。

4、验证服务

DNS权威服务

在当前bind目录调用终端管理员模式,打入dig @127.0.0.1 www.jzlf.com,其中域名要用自己的。效果如图。

1691740905258.png

LocalDNS

打入dig @127.0.0.1 www.toutiao.com,其中域名要用自己的。效果如图。

1691741120330.png

总结

在这次的网络实验中,自己从虚拟机安装开始,到验证结束,一路踩了不少坑,也是查阅了许多相关博客和文章,才一一解决了这些问题。对虚拟机和网络DNS的部署也有了相当的认识,还是非常有收获的哈哈。