最小化bind9搭建dns服务器配合apache服务全流程
本章使用的系统:ubantu、银河麒麟v10(银河麒麟作为dns服务器端ubantu为客户机)
说明:通过市面上百分之99都是通过bind9搭建的dns服务器
目的:通过搭建dns服务器我们可以使用域名访问ip,并且可以通过apache
一、安装bind9
命令:apt install bind9 -y
二、常见和修改配置文件
说明:最小化搭建共需要以下三个文件,其中db.test.com 是自己命名的,并且这个文件是需要自己创建的,在named.com文件中有体现;这三个文件分别含义为:1.named.conf.option 是核心的配置文件用于配置bind9工作目录和鉴定地址,相当于启动文件。2.named.conf.local文件是用于配置正向解析区域的简单来说就是配置test.com这个域名的解析,file后面跟的就是我们要具体配置的解析信息。3.db.test.com这是一个很关键的文件,用于定义test.com这个域名解析的规则。
1.named.conf.options
options {
directory "/var/cache/bind";
listen-on { 127.0.0.1; 192.168.157.131; };
allow-query { 127.0.0.1; 192.168.157.0/24; };
recursion no;
forwarders {};
dnssec-validation no;
};
2.named.conf.local
zone "test.com" {
type master;
file "/etc/bind/db.test.com";
};
3.db.test.com
$TTL 3600
@ IN SOA localhost. admin.test.com. (
2024052301
3600
900
604800
86400 )
@ IN NS ns1.test.com.
ns1 IN A 192.168.157.131
@ IN A 192.168.157.131
www IN A 192.168.157.131
db IN A 192.168.157.131
具体实施:
1.可以使用vi或vim编辑器进行快速编辑,这里使用vi编辑器因为这个编辑器系统自带 命令:vim named.conf.option
2.按键盘上的ggdG这四个键就可以直接清空所有注释,注意最后一个G是大写的需要按大写的G,建议按最后一个字母的时候按住shift再按g这样g就变成了大写G
3.然后按i插入,进入插入模式后,我这里使用的是xshell将命令,此时已经把这个文件夹的代码复制了然后我按shift+ins就直接插入进去了;清空屏之后需要按键盘上的" i "键进行插入模式粘贴,粘贴之后按esc推出插入编辑模式,然后输入按shift+:进入命令输入,输入wq保存退出即可;注意这里一定要英文输入模式。
4.其他文件也是上面同样的操作
db.test.com文件没有创建不过可以直接通过vi编辑器创建它。
命令:vi db.test.com
后面就是熟悉的粘贴操作了,最后wq保存之后这个文件就会生成
三、重启配置权限重启服务
1.重载配置文件 命令:rndc reload
设置属主为 root.bind
sudo chown -R root.bind /etc/bind
设置目录权限
sudo chmod -R 770 /etc/bind
设置文件权限
sudo chmod 640 /etc/bind/*.conf
sudo chmod 640 /etc/bind/db.*
重启 BIND
sudo systemctl restart bind9
查看状态
sudo systemctl status bind9
实时查看日志
journalctl -u named -f
四、修改resolv.conf文件(最重点)
大多数没有配置成功dns解析的都是因为系统默认的这个服务冲突导致的。
系统当前默认使用的是 systemd-resolved
提供的本地DNS解析服务(监听在 127.0.0.53:53
),而不是你配置的BIND DNS服务(通常监听在 127.0.0.1
或某个局域网IP上)。
通过前面三个步骤的之后我们开始测试是否可以dns解析成功:
1.通过本机ping命令ping test.com这个域名发现是ping不同的,并且局域网内其他主机也是ping不通的但是我们通过ping ip地址是完全没有问题的,所以问题来源于我们的dns并没有解析成功。
2.针对这种情况我们通过命令:nslookup test.com来测试dns解析的情况,这里我用的是局域网内的其他主机也就是虚拟机中的另一台主机来进行对这个域名地址的测试,通过测试访问这个dns服务器的解析效果;此时发现了问题所在我们通过nslookup test.com 来测试发现解析的dns地址为127.0.0.53这个地址这个后面再说,这里解析的肯定是不对的,应该是192.168.157.131这个我们设置的dns服务器的ip地址,但是我们使用nslookup test.com 192.168.157.131 来强行绑定这个dns来解析test.com这个地址发现是没有问题的;
那么问题出在哪里呢?
那问题就出在开始说的:系统当前默认使用的是 systemd-resolved
提供的本地DNS解析服务(监听在 127.0.0.53:53
),而不是你配置的BIND DNS服务(通常监听在 127.0.0.1
或某个局域网IP上)。简单来说如果访问域名的话系统会根据这个文件所设置的dns地址去走,所以会走向公网,并不是本地,这里有两种方式,第一种就是把地址改成127.0.0.1,第二种就是直接删掉他系统就会默认访问本机了,不过这并不会影响局域网内的其他用户设置本机dns的ip来访问本机的服务,只会影响自己本地配置后测试出现问题。
问题是由于 systemd-resolved
服务管理 /etc/resolv.conf
文件,从而导致你的 BIND9 DNS 服务没有被正确访问。确实,如果系统使用 systemd-resolved
来处理 DNS 查询,默认情况下它可能会覆盖 /etc/resolv.conf
中的手动设置,包括你指向自己搭建的 BIND9 DNS 服务器的设置。
正是因为这个系统默认服务导致的我们自己搭建的dns服务没效果;所以我们直接禁用掉这个服务并且删除resolv.conf这个文件夹。
(1)停止服务 命令:sudo systemctl stop systemd-resolved
(2)关闭开机自启动 命令:sudo systemctl disable systemd-resolved
(3)删除resolv.conf 命令:rm /etc/resolv.conf
最后重启bind9服务 命令:sudo systemctl restart bind9
五、成功解析dns,并配合apache服务
1.我将客户机的dns固定设为服务器那边的dns,通过设置上面提到的那个文件对应的效果就是可视化界面中的手动dns。
2.重启服务,然后稍等一会ping一下看是否成功。
sudo systemctl restart NetworkManager
3.发现ping已经成功了,此时我们的dns已经解析成功了,但是我们这是在网页上面访问test.com是没有用的因为我们还没有配置apahce服务
4.开始配置apache服务并且配合test.com这个解析指向指定的目录文件。
直接vi编辑器在apache配置目录下创建test.com.conf这个文件,这个文件命令不是固定的但后缀一定要为你conf
vi /etc/apache2/sites-available/test.com.conf
5.然后直接老操作将下面的代码粘贴进去。
<VirtualHost *:80>
主域名(无 www)
ServerName test.com
# 别名(带 www 和其他变体)
ServerAlias www.test.com *.test.com
# 网站目录
DocumentRoot /var/www/test.com/html
# 目录权限(必须添加!)
<Directory /var/www/test.com/html>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 独立日志(推荐)
ErrorLog ${APACHE_LOG_DIR}/test.com_error.log
CustomLog ${APACHE_LOG_DIR}/test.com_access.log combined
</VirtualHost>
~
6.这里注释给每一条命令写的都很清楚了,网站目录需要指定自己的目录需要新建这个目录,这里就不演示了,这个目录下就可以直接放我们的前端三件套了。
7.保存后我们重启apache服务
sudo systemctl restart apache2
8.通过客户机在网站进行域名访问操作测试
结论:测试完毕主机端和客户端都可以正常解析并访问网页
收获:
通过这个过程,你完成了从安装到配置BIND9 DNS服务器以及Apache Web服务器的全过程,并成功实现了通过自定义域名访问局域网内的Web服务。以下是通过这个项目你可以获得的一些关键收获:
技术技能提升
-
DNS服务器搭建与配置:
- 学习了如何使用BIND9来搭建一个基本的DNS服务器。
- 理解了
named.conf.options
、named.conf.local
和区域文件(如db.test.com
)的作用及其配置方式。 - 掌握了如何配置正向解析区域,包括设置NS记录、A记录等。
-
解决DNS解析问题:
- 了解了
systemd-resolved
可能对DNS解析造成的影响,并学会了如何禁用它以确保你的BIND9服务器能够正常工作。 - 实践了如何检查DNS解析是否正确,使用工具如
nslookup
或dig
进行测试。
- 了解了
-
Apache Web服务器配置:
- 学会了如何在Apache中为特定域名创建虚拟主机配置。
- 理解了如何设置网站目录权限,以及如何配置日志文件以便于后续的维护和故障排查。
-
Linux系统管理:
- 提升了对Linux命令行工具的熟悉度,比如使用
vi
/vim
编辑器进行文本编辑,使用chmod
和chown
调整文件权限等。 - 加深了对服务管理和控制的理解,例如如何启动、停止、重启服务以及查看服务状态。
- 提升了对Linux命令行工具的熟悉度,比如使用
实际操作经验
- 动手能力:通过实际操作,增强了处理网络服务配置的能力,解决了可能出现的各种问题。
- 调试技巧:学会了如何通过查看错误日志和使用诊断工具来定位和解决问题。
- 文档编写:整理并记录了整个过程,这不仅有助于自己复习所学知识,也可以作为他人参考的指南。
其他收获
-
理解网络架构:加深了对客户端如何通过DNS查询找到对应的Web服务器的理解,掌握了更完整的网络通信流程。
-
安全意识:在这个过程中,你可能也意识到了网络安全的重要性,比如正确配置防火墙规则,避免不必要的端口暴露等。
-
动手能力:通过实际操作,增强了处理网络服务配置的能力,解决了可能出现的各种问题。
-
调试技巧:学会了如何通过查看错误日志和使用诊断工具来定位和解决问题。
-
文档编写:整理并记录了整个过程,这不仅有助于自己复习所学知识,也可以作为他人参考的指南。
其他收获
- 理解网络架构:加深了对客户端如何通过DNS查询找到对应的Web服务器的理解,掌握了更完整的网络通信流程。
- 安全意识:在这个过程中,你可能也意识到了网络安全的重要性,比如正确配置防火墙规则,避免不必要的端口暴露等。
总之,这次实践让你不仅仅掌握了具体的技能,还提高了独立解决问题的能力,这些都是非常宝贵的经验。未来面对类似的任务时,你会更加自信和熟练。