一、涉及理论及实验所用工具
涉及理论部分参考字节青训营所发材料 【网络与部署 学习资料(上)】字节跳动青训营 - 后端专场 - 掘金 (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
这里要注意一点,在打下第一行的命令后,会提示你输入密码,输密码时你会发现,怎么打不出来?不要紧张,这是系统的一种保护措施,你的输入其实有被接受,但是就是要注意自己输入了什么,别输错了。 出现下列目录及文件即为成功。
三、开始实验
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,打开浏览器呈现的效果如图。
2、host劫持
在/etc/hosts 中加入代码127.0.0.1 www.toutiao.com,这里要注意,我们一般的hosts中是只读模式,无法进行编辑,因此在这之前,需先进行以下操作。
sudo apt install nautilus-admin
nautilus -q
使用时只需要在文件右键里选择以管理员身份编辑即可。
编辑好后在浏览器上运行,得到
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查看运行状态。大致效果图如图所示。
ctrl+c即可退出。
4、验证服务
DNS权威服务
在当前bind目录调用终端管理员模式,打入dig @127.0.0.1 www.jzlf.com,其中域名要用自己的。效果如图。
LocalDNS
打入dig @127.0.0.1 www.toutiao.com,其中域名要用自己的。效果如图。
总结
在这次的网络实验中,自己从虚拟机安装开始,到验证结束,一路踩了不少坑,也是查阅了许多相关博客和文章,才一一解决了这些问题。对虚拟机和网络DNS的部署也有了相当的认识,还是非常有收获的哈哈。