揭开DNS神秘的面纱
首先让我们来了解一下什么是DNS,我们举个列子了解一下轮廓,DNS就是一个翻译,将一种你不认识的文字翻译成你认识的文字,这个你很明显指的不是,好,接下来,让我们正式进入DNS。
DNS:domain name system(域名系统)
apple,来上图!
小apple最近工作有点消极呀,我要扣他工资了,找了一个“比较”可以的图片吧(此处在默默的流泪,有点糊,见谅见谅),DNS类似目录树的层次结构,记录域名和ip地址之间的对应关系。
由图也可以看出,他有根,顶级域名(一级域名),二级域名,三级域名,主机。。。。。。还可以往下分的哈。一般分为主机名.三级域名.二级域名.顶级域名.
举个例子:大家都知道百度哈,咱们打开网页,直接一个www.baidu.com给它甩过去,哎唷,百度就出来了,那让我们来看看,这个电脑怎么就这么聪明,马上就给你识别出来了。咱们来看看这个网址的组成www.baidu.com. 主机名.三级域名.二级域名.顶级域名.(最后一个小点是根哟)
Linux的 /etc/resolv.conf 文件,系统会在进行DNS解析时,会根据 /ect/resolv.conf 中列出服务器,根据顺序依次查找,直到获取响应或者查询完所有服务器。
DNS的功能
1.正向解析:把域名解析成ip地址 www.baidu.com------>39.156.66.18
2.反向解析:把ip地址解析成域名39.156.66.18------>www.baidu.com
解析记录:
A:将主机名映射到ipv4地址
AAAA:将主机名映射到ipv6地址
CNAME:将一个记录别名化成另一个记录
PTR:将ipv4地址映射成域名
DNS相关知识点
(1)DNS三者服务器类型
1.主服务器:在特点区域中有唯一性。用来负责维护该区域内的域名和ip地址之间的对应关系。
2.从服务器:从主服务器中获取ip地址和域名间的对应关系并加以维护,防止主服务器宕机。(个人体会,数据库里面的镜像文件功能差不多吧,备份一个,一模一样的,防止损坏没人替代)
3.缓存服务器:将经常访问的域名信息保存到该服务器当中,提高重复查询的效率。
(2)查询方式
1.递归查询:DNS服务器在收到客户的请求时,必须返回给客户一个结果,如果有,直接返回,若没有找到结果,则该服务器会向其他服务器询问,直到找到查询结果返回给客户,始终只和一台服务器交付。
2.迭代查询:DNS服务器在收到客户的请求时,首先看是否有该记录,如果有,直接返回,如果没有,会提高另一台DNS的服务器的地址,用户再向提供的DNS地址发起请求,这样一次反复,直到找到结果。
举个例子,咱们一起来理解一下,递归查询就像你向上级汇报工作,你只会和你的上一级有所接触,越俎代庖可是职场禁忌呀,那迭代查询就好比你找同事A帮忙,但他帮不了你,但是他认识B可以帮你,同时还把B的联系方式给了你,让你找他帮忙,你get了吗?
自己搭建DNS–Linux
好的,咱们的重头戏,实操环节开始了,搓搓小手,开干了!
(1)
vim /etc/named.conf
这是主配置文件,用来定义bind服务程序的运行
是不是又在想什么是bind服务程序,好的,您的Lemon为您服务
这个图片中的许多内容咱们都会用到,看不懂不用着急!
好的,咱们运行完该命令就会出现如下界面:
标记红色的就是我改过的哈!
listen-on port 53 { any; }; //指定ipv4监听端口和ip地址;any表示服务器上的所有ip地址
allow-query { any; }; //指定DNS查询的客户端地址,any表示允许所有人对本服务器发送DNS请求
(2)
vim /etc/named.rfc1912.zones
zone "lemon.com" IN {
type master;
file "lemon.com.zone";
allow-update { none; };
};
zone "149.168.192.in-addr.arpa" IN {
type master;
file "lemon.com.rev";
allow-update { none; };
};
(3)
cd /var/named/
ls
cp -p named.empty lemon.com.zone
vim lemon.com.zone
下图是打开 lemon.com.zone 文件开始默认的,需要我们去修改
修改如下代码:(注意里面的ip地址自己写哈)
TTL 3H
@ IN SOA dns.lemon.com. root.dns.lemon.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.lemon.com.
dns A 192.168.133.123
www A 192.168.133.123
-p (小写p) 一定不要忘记了
(4)
cp -p lemon.com.zone lemon.com.rev
这个后面的 . 真的很重要,不然会报错,代表着根
$TTL 3H
@ IN SOA dns.lemon.com. root.dns.lemon.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.lemon.com.
123 PTR dns.lemon.com.
123 PTR www.lemon.com.
(5)
firewall-cmd --add-port=53/udp --permanent
firewall-cmd --add-port=53/tcp --permanent
firewall-cmd --reload
systemctl restart named
另一台测试的虚拟机,走起!
(6)
nslookup dns.lemon.com
你如果出现这个错误,停,不要慌,解决办法来了(这是因为他走的默认的地址)
(7)
vim /etc/resolv.conf
加入我打钩钩的那一行,ip 就写你在前面的文件里面写的ip地址
(8)
nslookup www.lemon.com
nslookup 192.168.149.130
到这里,我们就成功了,没想到这么简单吧!是的,很有意思,那么,你自己来搭建一个sina或者baidu 的DNS吧,加油!