在银河麒麟和ubantu下通过bind9搭建dns服务器

最小化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服务。以下是通过这个项目你可以获得的一些关键收获:

技术技能提升

  1. DNS服务器搭建与配置

    • 学习了如何使用BIND9来搭建一个基本的DNS服务器。
    • 理解了named.conf.optionsnamed.conf.local和区域文件(如db.test.com)的作用及其配置方式。
    • 掌握了如何配置正向解析区域,包括设置NS记录、A记录等。
  2. 解决DNS解析问题

    • 了解了systemd-resolved可能对DNS解析造成的影响,并学会了如何禁用它以确保你的BIND9服务器能够正常工作。
    • 实践了如何检查DNS解析是否正确,使用工具如nslookupdig进行测试。
  3. Apache Web服务器配置

    • 学会了如何在Apache中为特定域名创建虚拟主机配置。
    • 理解了如何设置网站目录权限,以及如何配置日志文件以便于后续的维护和故障排查。
  4. Linux系统管理

    • 提升了对Linux命令行工具的熟悉度,比如使用vi/vim编辑器进行文本编辑,使用chmodchown调整文件权限等。
    • 加深了对服务管理和控制的理解,例如如何启动、停止、重启服务以及查看服务状态。

实际操作经验

  • 动手能力:通过实际操作,增强了处理网络服务配置的能力,解决了可能出现的各种问题。
  • 调试技巧:学会了如何通过查看错误日志和使用诊断工具来定位和解决问题。
  • 文档编写:整理并记录了整个过程,这不仅有助于自己复习所学知识,也可以作为他人参考的指南。

其他收获

  • 理解网络架构:加深了对客户端如何通过DNS查询找到对应的Web服务器的理解,掌握了更完整的网络通信流程。

  • 安全意识:在这个过程中,你可能也意识到了网络安全的重要性,比如正确配置防火墙规则,避免不必要的端口暴露等。

  • 动手能力:通过实际操作,增强了处理网络服务配置的能力,解决了可能出现的各种问题。

  • 调试技巧:学会了如何通过查看错误日志和使用诊断工具来定位和解决问题。

  • 文档编写:整理并记录了整个过程,这不仅有助于自己复习所学知识,也可以作为他人参考的指南。

其他收获

  • 理解网络架构:加深了对客户端如何通过DNS查询找到对应的Web服务器的理解,掌握了更完整的网络通信流程。
  • 安全意识:在这个过程中,你可能也意识到了网络安全的重要性,比如正确配置防火墙规则,避免不必要的端口暴露等。

总之,这次实践让你不仅仅掌握了具体的技能,还提高了独立解决问题的能力,这些都是非常宝贵的经验。未来面对类似的任务时,你会更加自信和熟练。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值