DNS原理

现有的网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名。我们很难记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页。

DNS and BIND

什么是DNS

DNS(Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,DNS基于C/S(Client/Server,客户机/服务器)模式,因而分为Client和Server两种角色。使用53/udp(现在正在使用), DNS: 53/tcp ;Client扮演询问的角色,也就是向Server询问一个Domain Name,而Server必须要回答此Domain Name所对应的真正IP地址。

BIND:BekerleyInternat Name Domain ;ISC (www.isc.org)

DNS

TCP: 面向连接的协议;

UDP: User Datagram Protocol,无连接协议

本地名称解析配置文件:hosts

        /etc/hosts

        %WINDOWS%/system32/drivers/etc/hosts

格式如下:

        1.1.1.1www.magedu.com

        1.2.2.2www.apple.com

DNS名称空间

Internet 上的DNS域名称采用层次结构,如同一棵倒置的树。

根域为,一个名为 InterNIC 的机构既负责划分全世界的IP地址范围,又负责分配Internet 上的域名称结构。根域DNS服务器只负责处理一些顶级域名DNS服务器的解析请求。

顶级域,常见的三类顶级域:1, 组织域(com,edu, mil, gov, net, org, int)、2, 国家域(.cn, .iq, .hk, .tw)、3, 反向域

二级域; 是在顶级域下划分的(用于公司或个人申请使用)

子域;子域下面可以继续划分子域,或者接主机。

                             wKioL1U9a-PyO17tAAEJ3QmO7jQ394.jpg

DNS查询过程

如访问www.123.com

wKiom1U9ao6SZDZBAAGLksTUXQI698.jpg

Dns查询类型

递归查询:一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机;(客户端只需要发出一次查询请求就能得到最终答案的插叙)

迭代查询:一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求; (服务器在发出一个查询请求时,有可能得到一个最终答案;也有可能得到一个参考答案,通常得到一个结果需要多次发起的查询)

名称服务器:域内负责解析本域内的名称的主机;

dns解析类型:

正向解析: Name --> IP ;又主机名解析为IP地址

反向解析: IP --> Name : 又IP地址解析为主机名

注意:正反向解析是两个不同的名称空间,是两棵不同的解析树;

    DNS服务器的类型:

主DNS服务器

辅助DNS服务器

缓存DNS服务器

转发器

主DNS服务器:维护所负责解析的域内解析库服务器,是该域的权威服务器;解析库由管理Y员维护;

从DNS服务器:从主DNS服务器或其它的从DNS服务器那里“复制”(区域传递)一份解析库;

BIND的安装配置:

dns服务,程序包名bind,程序名named

1 . bind相关程序包:

bind: 提供域名服务的主程序和相关文件

bind-libs: 提供bind和bind-utils所需公共的共享库

bind-utils: 提供dns的测试工具 如:dig,host,nslookup  

bind-chroot: 使bind可以在一个chroot的模式下运行.也就是说,bind运行时的/(根)目录,并不是系统真正的/

例如 : bind-chroot:/var/named/chroot/

2 . bind相关配置文件:

服务脚本:/etc/rc.d/init.d/named

主配置文件:/etc/named.conf,/etc/named.rfc1912.zones, /etc/rndc.key

解析库文件:/var/named/ZONE_NAME.ZONE

注意:

(1)一台物理服务器可同时为多个区域提供解析;

(2) 必须要有根区域文件;named.ca

(3)应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库;

rndc: remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1来连接named进程;提供辅助性的管理功能;

默认使用 953/tcp ;/etc/rndc.key

用于连接主机的预共享密钥   

3 . 安装bind

[root@dns1 ~]# yum installbind –y

4 . 查询bind软件包版本

[root@dns1 ~]# rpm -q bind

bind-9.8.2-0.30.rc1.el6.x86_64

5. . 主配置文件/etc/named.conf

全局配置:options{ }

日志子系统配置:logging{ }

区域定义:本机能够为哪些zone进行解析,就要定义哪些zone;

示例 : zone "ZONE_NAME" IN { }

注意:任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上;

默认启动named 只会监听在tcp和udp的127.0.0.1的53端口

6. 启动named

[root@dns1 ~]#/etc/init.d/named start

7. 查看bind监听的套接字 (默认情况下named会监听在127.0.0.1 的tcpupd 53端口)

[root@dns1 ~]# ss -ltunp|grep 53

udp    UNCONN    0      0              127.0.0.1:53                    *:*

users:(("named",3444,512))

udp    UNCONN    0      0                    ::1:53                   :::*

users:(("named",3444,513))

tcp    LISTEN    0      3                    ::1:53                   :::*

users:(("named",3444,21))

tcp    LISTEN    0      3              127.0.0.1:53                    *:*

users:(("named",3444,20))

tcp    LISTEN    0      128                  ::1:953                  :::*

users:(("named",3444,23))

tcp    LISTEN    0      128            127.0.0.1:953                   *:*

users:(("named",3444,22))

你可能感兴趣的内容
0条评论

dexcoder

这家伙太懒了 <( ̄ ﹌  ̄)>
Owner