引言:在对服务器主机进行访问时是使用IP地址的形式,而在实际的网络应用中,通常是使用域名的形式进行访问服务器。
目录
一、DNS系统的作用及类型
DNS是域名系统(Domain Name System)的简称。
整个Internet大家庭中连接了数以亿计的服务器、个人主机,其中大部分的网站、邮件等服务器都使用了域名形式的地址,www.google.com、mail.163.com等。
很显然这种地址形式要比使用64.233.189.147、202.108.33.74的IP地址形式更加直观,且更容易被用户记住。
在当今计算机如此普及的情况下,以人类现有的智慧与记忆力很难将大量的IP地址背诵下来,这时使用域名系统就可以将难以记忆的数字IP地址与容易记忆的域名建议映射关系,用户通过输入域名,计算机会寻找指定的DNS服务器,请求服务器帮助解析该域名对应的IP地址,成功解析后,将获得该域名对应的真实IP地址,然后使用该IP地址与对方通信。
全世界只有13台根域名服务器,1个主根服务器在美国,其余12个辅根服务器,其中九个在美国,欧洲有两个,位于英国和瑞典,亚洲1个位于日本。
正向解析:根据域名查IP地址,即将指定的域名解析为相对应的IP地址。域名的正向解析是DNS服务器最基本的功能,也是最常用的功能。
反向解析:根据IP地址查域名,即将指定的IP地址解析为相对应的域名。域名的反向解析不是很常用,只在一些特殊场合才会用到,比如可用子反垃圾邮件的验证。
正向解析过程:
1. 请求发出后先检查自身的浏览器缓存,如过有缓存过此域名对应的IP地址,则解析结束。
2. 如果浏览器缓存没有命中,则去查看操作系统缓存中有没有对应解析的结果。(windows操作系统可以通过C盘中的hosts去设置操作系统缓存。目前操作系统为防止被操作系统缓存被篡改从而导致域名劫持,将hosts文件改为read-only。)
3. 如果浏览器和操作系统缓存都没命中,则去请求本地域名服务器(LDNS)。此DNS服务器其实就是我们在配置网络设置时候的配置的DNS服务器,大部分的IP都会被缓存在这个DNS中。
4. 若LDNS未命中,则去请求根域名服务器(Root Server) 。
5. 根域名服务器返回给LDNS一个所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如.com .cn .org等)地址.
6. 此时LDNS再发送请求给上一步返回的gTLD.
7. 接受请求的gTLD查找并返回这个域名对应的Name Server的地址,这个Name Server就是网站注册的域名服务器。
8. Name Server根据映射关系表找到目标ip,返回给LDNS。
9. LDNS缓存这个域名和对应的ip。
10. LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束
DNS使用的协议及端口号
dns的默认端口为53。DNS端口分为TCP和UDP
TCP是用来做区域传送,多用于主从同步,在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息
UDP是用来做DNS解析的
域名:通常由一个完全合格域名(FQDN)标识。FQDN 全称 Fully Qualified Domain Name,它能准确表示出其相对于DNS 域树根的位置,也就是节点到DNS
树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用"分隔,对于DNS 域 google来说,,其完全正式域名(FQDN)为 google.com。google为com域的子域,其表示方法为 google.com,而www为 google域中的子域,可以使用www. google.com表示。
注意:通常FQDN 有严格的命名限制,长度不能超过256字节,只允许使用字符a-2,0-9,A-z和减号(-)。点号(.)只允许在域名标志之间(例如 google.com) 或者FQDN 的结尾使用。域名不区分大小,由最顶层到下层,可以分成:根域、顶级域、二级域、子域。
即全域名:同时带有主机名和域名的名称 FQDN = Hostname + DomainName
如:www.baidu.com
注意:最前面的一定是主机,最后一个点表示根域,通常是省略不写的,但实际上www.abc.com=www.abc.com.
DNS名称 | 说明 | 示例 |
根域 | 根服务器主要用来管理互联网的主目录 | . |
顶级域 | 用于指定某个国家/地区/组织使用的类型名称 | .com .cn |
第二层域 | 个人或组织在Internet上使用的注册名称 | qq.com |
子域 | 已注册的二级域名的派生域名,也就是网站名 | www.qq.com |
主机名 | DNS左侧的标签位标识了网络上的特定计算机 | h1.www.qq.com |
大型、分布式的互联网DNs解析库
根.根域名Ds服务器:专门负责根域名
一级DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或国家地区
.com(工商 企业)
.net(网络供应商)
.edu(教育机构
.cn(中国国家域名)
.org(团体组织)
gov(政府部门
二级DNS服务器:专门负责二级域名的解析
.net. cn
.edu. cn
.com.cn
子域名DNS服务器:专门负责子域名的解析
sina. com. cn
.pku. edu.cn
主机站点
ttsd
tts
mail
WWW
两种查询方式
1)递归查询
递归查询是一种DNS服务器的查询模式,在该模式下DNS服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS服务器本地没有存储查询 DNS信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
总的一句话,就是客户机发送请求后自己只用等待结果即可,中间具体过程交给服务器实现。
2)迭代查询
DNS服务器另外一种查询方式为迭代查询,当客广机发送查询请求时,DNS服务器并不直接回复查询结果,而是告诉客户机另一台DNS服务器地址,客户机再向这台DNS服务器提交请求,依次循环直到返回查询的结果为止
总的一句话,客广机的请求需要自己挨个去查询才能得到结果,服务器没有结果口寸候只会给你提供其它服务器的地址,而不会帮你去请求查询,这与递归截然相反
DNS服务器系统类型
(1)主域名服务器:负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
⑵从域名服务器:当主域名服务器出现故障、关闭或负载过重:时,从域名服务器作为备份服务提供域名解析服务。从 域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。
⑶缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但没有域名数据库。它从某个远程服务器取得每次域名服务器查询的结果,并将它放在高速缓存中,以后查询相同的信息时用它予以响应。缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息。构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
(4)转发域名服务器:负责所有非本地域名的本地杳询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到杳找到结果为止,否则返回无法映射的结果。
二、DNS服务器配置
1.正向解析服务器配置
(1)安装bind
yum install -y bind
查询已安装的bind
rpm -qa | grep "^bind"
查询一下本机ip ifconfig
我的是192.168.72.3
(2)修改主要配置文件
vim /etc/named.conf
保存
(3)修改区域配置文件,添加正向区域配置
vim /etc/named.rfc1912.zones
文件里有模板,可复制粘贴后修改
(4)配置正向区域数据文件
cd /var/named
cp -p named.localhost abc.com.zone 保留源文件的权限和属主的属性复制
vim abc.com.zone
NS 记录当前区域的DNS服务器的名称
A 192.168.72.3 记录主机IP地址
IN MX MX为邮件交换记录,数字越大优先级越低
A 192.168.72.3 记录主机地址
IN MX 10 MX为邮件交换记录,数字越大优先级越低
www 记录正向解析www.abc.com对应的ip
mail 记录邮件对应的ip
ftp CNAME使用别名,ftp是www的别名
* IN 泛域名解析,"*"代表任意主机名
(5)启动服务关闭防火墙
systemctl start named
systemctl stop firewalld
setenforce 0
vim /etc/resolv.conf
(6)测试DNS解析
host www.abc.com
nslookup www.abc.com
2.反向解析配置
vim /etc/named.rfc1912.zones
cd /var/named
cp -p abc.com.zone abc.com.zone.local
vim abc.com.zone.local
systemctl restart named
host 192.168.72.100
3.主从服务器配置
主服务器:192.168.72.3
从服务器:192.168.72.4
vim /etc/named.conf
listen-on port 53 { any; };
vim /etc/named.rfc1912.zones
vim /etc/resolv.conf
打开第二个虚拟机查看ip
安装bind
yum install -y bind
vim /etc/named.conf
listen-on port 53 { any; };
allow-query { any; };
vim /etc/named.rfc1912.zones
开启named
systemctl start named
测试dns
4.dns分离解析服务器配置
主服务器:192.168.72.3
web服务器:192.168.73.3
添加网卡并设定VMnet1,VMnet1的网段为192.168.73.0
vim /etc/named.conf
listen-on port 53 { any; };
allow-query { any; };
备份named.rfc1912.zones到home下
cp -p /etc/named.rfc1912.zones /home/named.rfc1912.zones.bak
vim /etc/named.rfc1912.zones
清空并添加view
view "lan" {
match-clients { 192.168.73.0/24; } ;
zone "abc.com" IN {
type master;
file "abc.com.zone.lan" ;
};
zone "." IN {
type hint;
file "named.ca";
};
};
view "wan" {
match-clients { any; } ;
zone "abc.com" IN {
type master;
file "abc.com.zone.wan" ;
};
};
cd /var/named
创建内网,外网的配置文件
cp -p named.localhost abc.com.lan
cp -p abc.com.lan abc.com.wan
编写内网,外网配置文件
vim abc.com.zone.lan 编辑内网
NS abc.com.
A 192.168.73.3
www IN A 192.168.73.3
vim abc.com.zone.wan
测试DNS分离解析
打开第二个Linux虚拟机,设置VMent
编辑网卡配置
nslookup www.abc.com
打开windows虚拟机,编辑网卡设置
打开cmd测试连通
nslookup www.abc.com