DNS与BIND学习(一)

DNS就是域名解析,就是有了www.baidu.com,然后DNS解析出他是39.156.66.18,反过来,有了IP,能给你解析出域名,说白了就是IP和域名的对应关系表。当然日常上网,没人会记住39.156.66.18吧,一般只会搜索www.baidu.com,因此DNS还是很重要的一个服务的。

现在bind很好的提供域名解析服务,如果在一台电脑上安装bind的话,那他就可以当成一个DNS服务器使用了,也就是说,其他主机可以通过访问他实现IP和域名的对应,那第一步,就是搭建自己的DNS服务器,并看看其他主机能不能通过他实现DNS解析。

下载bind9

我用的是ubuntu2204,用centos的应该指令有不同,查一查就可以了。

sudo apt install bind9

查看软件包的相关信息,如描述、大小、版本等

apt-cache show bind9

查看安装包的文件,这很重要,现在bind版本更新还是比较快的,有些包没有了,,有些包换位置了,因此知道安装内容很重要,至于常用的几个文件,下面会详细说明。

dpkg -L bind9

需要知道的是,bind9运行在tcp53或udp53上,可以查看一下是否这两个端口在运行,下图可以看到tcp53和udp53均开放,也就是说,一下载完bind9,他就自动开始运行服务了。

补充一点是,bind9如何实现DNS解析的,那是因为,他如果不知道对应关系的话,他会向权威名称服务器,顶级域名服务器,根域名服务器查询的。原来版本的13个根域名服务器保存在named.ca文件中的,但是我找了半天没找到。其实是bind9没有named.ca文件了。‌ 在较新的BIND9版本中,根区域信息不再存储在named.ca文件中,而是通过DNSSEC验证过程自动下载和更新。好吧,毕竟13个根域名服务器可能也没那么够用吧,自动更新也好~

DNS服务器进行域名解析

我在一个IP为192.168.125.38的ubuntu2204上下载了bind9,那他就是我的DNS服务器了,关于如何固定IP,可以看一下我的上一篇ubuntu虚拟机无法联网解决及固定静态IP-CSDN博客

我还有一台IP为192.168.125.28的虚拟机,我想让他当一个普通主机,然后通过38号虚拟机实现DNS解析。所以,现在任务是,如何让28号主机,通过38号DNS服务器实现域名解析。

首先,38号自己要能上网,这是已经实现得了。然后,修改28号需要修改它的DNS。

ubuntu的网络配置很简单,都在/etc/netplan中的文件里

vim /etc/netplan/00-installer-config.yaml 

你需要修改nameservers中的两个地址address和search,其中address是定义DNS的IP地址,search是定义域名的搜索列表,既然想只通过38号来做DNS解析,那直接全改成38号就可以了,如下图所示。

让这个文件运行一下

sudo netplan apply

然后,查看一下,是不是DNS变成38号虚拟机了呢,运行下面代码

resolvectl status

可以看到DNS Domain(本地域名),DNS Server(服务器域名),都改成38号虚拟机了,现在看看28号虚拟机能不能ping通www.baidu.com

可以看到可以ping通,其实只要是DNS把39.156.66.18解析出来,38号虚拟机就完成任务了,至于ping,那就是网络的问题了。现在,实验完结,撒花~

 

DNS无法解析的错误排查

可以ping通8.8.8.8,但是没办法解析www.baidu.com,如图所示。

那这典型就是DNS服务器的问题,没把www.baidu.com解析成IP,如何排查错误呢,分为三步。

step1: 检查防火墙

dns服务器(38号)是否开启防火墙阻止访问

 systemctl status iptables

如果这样就是没有防火墙

step2:检查DNS服务器的53端口是否开放

因为bind服务是运行在53端口上的,53端口没在运行或没开放,那肯定没有DNS服务

ss -ntul

观察到tcp或udp的53号端口打开, 这里要注意一定53端口要绑定在192.168.125.38上,不仅仅是127.0.0.1上

step3: 查看客户机是否向DNS服务器发送DNS查询请求

在这里也就是查看28号虚拟机是否向38号虚拟机查询DNS解析,那就先在38号虚拟机上抓包。

在38号虚拟机(DNS服务器)上运行

 tcpdump -i ens33 udp port 53 -nn

在28号虚拟机(客户机)上运行

ping www.baidu.com

28号虚拟机想ping通的话,一定需要38号虚拟机的DNS解析,把www.baidu.com解析成具体IP。那我们就看看,38号DNS服务器有没有收到28号请求。

如果是这样就成功了,可以看到28号虚拟机询问www.biadu.com的A(address),然后38号DNS服务器给了应答。

但是,有的版本会发现,28号有询问,38号没给应答,怎么解决呢?

如果没成功,可能是38号DNS服务器的服务只绑定了127.0.0.1的53端口,因此只有他自己能使用。

我下载的最新版bind9的配置文件在/etc/bind/named.conf.options中,53端口默认绑定在localhost上,因此不会出现上述问题。但原来的版本的话,bind9的配置文件在/etc/named.conf中要在listen-on里添加localhost关键字;还有一个是注释掉allow-query,即要允许其他主机访问dns,如果想限制自己网段内才能访问,可以加上网段限制 allow-query {192.168.125.0/24;}

通过添加路由来实现DNS服务

也就是说,28号虚拟机要想ping通其他网络,那他的第一跳指向DNS服务器,DNS服务器再继续传给网关,然后找到相应网络,也可以实现DNS域名解析服务。

三个命令就可以实现上述操作

查看路由

ip route

添加路由

例如把上面的38号DNS服务器加进去

ip route add 192.168.125.38/24 via 0.0.0.0 dev ens33

删除路由

ip route del 192.168.125.38/24 via 0.0.0.0 dev ens33

好啦,第一个实验就到这里了,后面会有DNS转发,建立DNS区域等,持续更新中~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值