DNS系统的作用
正向解析:根据域名查找对应的IP地址
反向解析:根据IP地址查找对应的域名
DNS系统的分布式数据结构
DNS(Domain Name System)是域名系统的英文缩写,它作为将域名和IP地址互相映射的一个分布式数据库,能使人们更方便访问互联网。
例:开一个网站时,计算机需要知道该网站的IP地址以便与其建立连接并获取所需的内容。就是用于将网站的域名转换为IP地址的系统。
分布式网络存储技术是将数据分散地存储于多台独立的机器设备上。分布式存储系统采用可扩展的系统结构,利用多台存储服务器负担存储负荷。(负载均衡)
一级DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或国家地区)
.com(工商 企业)
.net(网络供应商)
.edu(教育机构)
.cn (中国国家域名)
.org (团体组织)
.gov (政府部门)
二级DNS服务器:专门负责二级域名的解析
.net.cn
.edu.cn
.com.cn
子域名DNS服务器:专门负责子域名的解析
.sina.com.cn
,pku.edu.cn
主机站点
www
DNS使用端口:使用TCP和UDP的53端口,TCP的53端口用于连接DNS服务器,UDP的153端口用于解析DNS。
DNS域名长度限制:每一级域名长度的限制是63个字符,域名总长度不超过253个字符。
迭代查询:从根找到二级找到三级。根不会提供结果,但会提供线索,让去二级服务器去找...(同时)
递归查询:从三级域找到结果,到缓存服务器返回用户(一个一个往下传)
(1)递归查询
递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。
如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
客户机和服务器之间的查询是递归查询
是递归查询告诉客户机IP
(2)迭代查询
DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址。当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。
服务器之间的查询是迭代查询
CDN(Content Delivery Network)的基本原理:
是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中。在用户访问网站时,利用全局负载技术,将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
查询原理过程:
正向解析查询过程
1. 先查询本机的缓存记录
2. 查询hosts文件
3. 查询dns域名服务器,交给dns域名服务器处理以上过程称为递归查询:我要一个答案你直接会给我结果
4. 这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步。
5. 求助根域名服务器,根域服务器返回可能会知道结果的顶级服务器让他去找顶级域服务器
6. 求助顶级域服务器,顶级与服务器返回可能会知道结果的二级域服务器然后让他去找二级域服务器
7. 求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器。
8. 本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端。
构建DNS域名解析器的目的:
bind是开源软件,用于内网划分DNS,不同于外网,内网的DNS是不需要注册,是方便内部进行使用和访问的有效手段
本地主机有关DNS映射文件(hosts)hosts文件包含了ip地址与主机名之间的映射,还包括主机的别名。
默认情况下,系统首先从hosts文件查找解析记录
hosts 文件的优先级高于DNS服务器,这是由 /etc/nsswitch.conf 文件规定的
hosts 文件只对当前的主机有效
hosts 文件可减少DNS查询过程,从而加快访问速度
Linux中有关DNS的映射文件vim /etc/hosts
windos系统中有关DNS的映射文件c:Windows\System32\drivers\etc\hosts
构建DNS域名解析器的目的bind是开源软件,用于内网划分DNS,不同于外网,内网的DNS是不需要注册,是方便内部进行使用和访问的有效手段
正向解析:
安装bind软件包
[root@192 yum.repos.d]# yum -y install named
bind服务程序介绍
bind服务程序的区域配置文件(/etc/named.rfc1912.zones)用来保存域名和IP地址对应关系的所在位置。在这个文件中,定义了域名与IP地址解析规则保存的文件位置以及服务类型等内容,而没有包含具体的域名、IP地址对应关系等信息。
服务类型有三种,分别为hint(根区域)、master(主区域)、slave(辅助区域),其中常用的master和slave指的就是主服务器和从服务器。
配置:
正向解析:
[root@localhost ~]# vim /etc/named.conf
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
options {
listen-on port 53 { 192.168.179.20; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
/*
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "xny.com" IN {
type master;
file "xny.com.zone";
allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip
指定区域类型:
[root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]# cp -p named.localhost xny.com.zone
[root@localhost named]# ls
data named.ca named.localhost slaves
dynamic named.empty named.loopback xny.com.zone
[root@localhost named]#
继续修改配置文件:
[root@localhost named]# vim xny.com.zone
$TTL 1D
@ IN SOA xny.com. admin.xny.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS xny.com.
A 192.168.179.20
IN MX 10 mail.xny.com.
www IN A 192.168.179.31
mail IN A 192.168.179.30
~
检查语法:
[root@localhost named]# named-checkzone gengcc.com /var/named/xny.com.zone
/var/named/xny.com.zone:10: warning: '192.168.179.30': MX is an address
zone gengcc.com/IN: IN.gengcc.com/MX '192.168.179.30.gengcc.com' has no address records (A or AAAA)
zone gengcc.com/IN: loaded serial 0
OK
[root@localhost named]#
修改DNS:
[root@localhost named]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.179.20
解析:
[root@localhost ~]# nslookup www.xny.com
Server: 192.168.179.20
Address: 192.168.179.20#53
Name: www.xny.com
Address: 192.168.179.31
[root@localhost ~]# nslookup mail.xny.com
Server: 192.168.179.20
Address: 192.168.179.20#53
Name: mail.xny.com
Address: 192.168.179.30
反向解析
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "179.168.192.in-addr.arpa" IN {
type master;
file "xny1.com.zone";
allow-update { none; };
};
指定区域类型:
[root@localhost named]# cp -p named.localhost xny1.com.zone
[root@localhost named]# vim xny1.com.zone
$TTL 1D
@ IN SOA xny.com. admin.xny.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS xny.com.
A 192.168.179.20
31 IN PTR www.xny.com
30 IN PTR mail.xny.com
~
切换到root2测试:
[root@localhost ~]# nslookup 192.168.179.30
Server: 192.168.179.20
Address: 192.168.179.20#53
30.179.168.192.in-addr.arpa name = mail.xny.com.
[root@localhost ~]# nslookup 192.168.179.31
Server: 192.168.179.20
Address: 192.168.179.20#53
31.179.168.192.in-addr.arpa name = www.xny.com.
负载:
添加备用服务器:
[root@localhost named]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.179.20
nameserver 192.168.179.21
改区域文件:
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "xny.com" IN {
type master;
file "xny.com.zone";
allow-transfer { 192.168.179.21; };
};
zone "179.168.192.in-addr.arpa" IN {
type master;
file "xny1.com.zone";
allow-transfer { 192.168.179.21; };
};
切换到root2:修改监听地址:
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
修改root2区域文件:
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "xny.com" IN {
type slave;
file "slaves/xny.com.zone";
masters { 192.168.179.20; };
};
zone "179.168.192.in-addr.arpa" IN {
type slave;
file "slaves/xny1.com.zone";
masters{ 192.168.179.20; };
};
进 /var/named/slave
下面有两个文件
-rw-r--r--. 1 named named 303 Mar 8 17:05 xny.com.zone
-rw-r--r--. 1 named named 303 Mar 8 17:05 xny1.com.zone