Learning together

Learning together with open source fans. QQ群:8021887


  • 网站首页

  • 站内留言

  • 关于本站

  • 我的相册

  • 联系羽飞

  • 内容订阅
  • 第四章:DNS服务全攻略(一基础)

    作者: 羽飞 | 发布时间: 星期三, 02/03/2010 - 22:52 |

    内容简介
    DNS的概述
    DNS服务的安装
    DNS常见名词
    DNS配置文件详解
    配置主要DNS服务
    案例详解

    DNS域名系统的简介
    网络中为了区别各个主机,必须为每台主机分配一个惟一的地址,这个地址即称为”IP地址”。但这些数字难以记忆,所以就采用”域名”的方式来取代这些数字了。
    当某台主机要与其他主机通信时,就可以利用主机名称向DNS服务器查询该主机的IP地址。整个DNS域名系统由以下4个部分组成。
    1.DNS域名空间
    2.资源记录
    3.DNS服务器
    4.DNS客户端
    如图1

    1.png

    DNS查询的工作原理
    DNS查询过程按两部分进行
    名称查询从客户端计算机开始,并传送给本机的DNS客户服务程序进行解析;
    如果不能在本机解析查询,可根据设定的查询DNS服务器来解析名称。

    以上两种查询方式的具体工作过程如下。
    1.本地解析(图2)

    2.png

    2.查询DNS服务器(图3)

    3.png

    递归查询流程(图4)

    4.png

    迭代查询流程 (图5)

    5.png

    hosts文件
    hosts文件是Linux系统中一个负责IP地址与域名快速解析的文件,/etc/hosts
    Hosts文件包含了IP地址和主机名之间的映射,还包括主机名的别名。
    hosts文件的格式如下:
    IP地址 主机名/域名

    DNS服务bind及chroot的安装
    rpm -q bind
    rpm -ivh bind-libs-9.3.4-10.P1.el5.i386.rpm
    rpm -ivh bind-utils-9.3.4-10.P1.el5.i386.rpm
    rpm -ivh bind-9.3.4-10.P1.el5.i386.rpm
    rpm -ivh bind-chroot-9.3.4-10.P1.el5.i386.rpm
    rpm -ivh caching-nameserver-9.3.4-10.P1.el5.i386.rpm

    安装chroot软件包
    Linux服务都是以root权限启动和运行的,随着技术的发展,各种服务变得越来越复杂,导致BUG和漏洞越来越多。黑客利用服务的漏洞入侵系统,能获得root级别的权限,从而控制整个系统。为了减缓这种攻击所带来的负面影响,现在服务器软件通常设计为以root权限启动,然后服务器进程自行放弃root,再以某个低权限的系统账号来运行进程。这种方式的好处在于该服务被攻击者利用漏洞入侵时,由于进程权限很低,攻击者得到的访问权限又是基于这个较低权限的,因此对系统造成的危害比以前减轻了许多。

    启动和停止DNS服务
    1.启动DNS服务
    /etc/init.d/named start
    2.停止DNS服务
    /etc/init.d/named stop
    3.重新启动DNS服务
    /etc/init.d/named restart
    4.自动启动DNS服务
    如果需要让DNS服务随系统启动而自动加载,可以执行”ntsysv”命令启动服务配置程序,找到”named”服务,其前面加上星号”*,然后选择”确定”即可 。

    DNS常见名词
    区(Zone): 区是DNS名称空间的一个连续部分,其包含了一组存储在DNS服务器上的资源记录。
    资源记录:DNS服务器的信息数据,按照分类进行存储,能够解析客户端的DNS请求。
    区文件:包含区资源记录的文件,选择DNS服务器为授权服务器,管理该区域。
    DNS缓存:DNS服务器在解析客户机请求时,如果本地没有该DNS信息,则可以会询问其他DNS服务器,当其他域名服务器返回查询结果时,该DNS服务器会将结果记录在本地的缓存中,成为DNS缓存。
    正向解析:域名到IP地址的解析过程。
    反向解析:从IP地址到域名的解析过程。
    全域名:(FQDN,Fully Qualified Domain Name)是指主机名加上全路径,全路径中列出了序列中所有域成员。

    DNS配置文件详解(图6)

    6.png

    资源记录
    SOA资源记录:起始授权记录(Start of Authority Record),简称SOA记录。SOA定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA记录。
    区域名(当前) 记录类型 SOA 主域名服务器(FQDN) 管理员邮件地址 (序列号 刷新间隔 重试间隔 过期间隔 TTL)
    NS资源记录:名称服务器(NS)资源记录表示该区的授权服务器,它们表示SOA资源记录中指定的该区的主和辅助服务器,也表示了任何授权区的服务器。每个区在区根处至少包含一个NS记录。
    区域名 IN NS 完整主机名(FQDN)
    A资源记录:地址(A)资源记录把FQDN映射到IP地址,因而解析器能查询FQDN对应的IP地址。
    完整主机名(FQDN) IN A IP地址
    PTR资源记录:相对于A资源记录,指针(PTR)记录把IP地址映射到FQDN。
    IP地址 IN PTR 主机名(FQDN)
    CNAME资源记录:规范名字(CNAME)资源记录创建特定FQDN的别名。
    别名 IN CNAME 主机名
    MX资源记录:邮件交换(MX)资源记录为DNS域名指定邮件交换服务器。
    区域名 IN MX 优先级(数字) 邮件服务器名称(FQDN)

    主配置文件named.conf
    options {
    direcrory “/var/named”; #指定工作目录
    forwards { 192.168.31.2 ; } ; #指定查询的目标DNS服务器
    allow-query { 192.168.32/24 ; } ; #只允许某个网段的用户来查询
    allow-transfer { 192.168.32/24; } ; #只允许某个网段的DNS来同步
    } ;
    zone “.” {
    Type hint;
    file “named.ca”;
    };
    zone “example.com” {
    type master;
    file “example.com.zone;
    };
    zone “31.168.192.in-addr.arpa” {
    type slave;
    masters {192.168.31.3;};
    file “salves/192.168.31.zone”;
    };

    type字段指定区域的类型
    master:表示定义的是主域名服务器 。拥有区域数据文件,并对此区域提供管理数据
    slave:表示定义的是辅助域名服务器。拥有主DNS服务器的区域数据文件的副本,辅助DNS服务器会从主DNS服务器同步所有区域数据
    hint:表示是互联网中根域名服务器。当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表
    forward:一个forward zone是每个域的配置转发的主要部分
    stub:和slave类似,但其只复制主DNS服务器上的NS记录而不像辅助DNS服务器会复制所有区域数据
    delegation-only:用于强制区域的delegation .ly状态

    DNS服务器设置流程
    1)建立主配置文件named.conf,该文件的最主要目的是设置DNS服务器能够管理哪些区域(Zone)以及这些区域所对应的区域文件名和存放路径。
    2)建立区域文件,按照named.conf文件中指定的路径建立区域文件,该文件主要记录该区域内的资源记录。
    3)重新加载配置文件或重新启动named服务使用配置生效。

    配置主要名称服务器概述
    主配置文件
    设置根区域
    设置主区域
    设置反向解析区域
    根服务器信息文件named.ca
    区域文件
    反向解析区域文件
    实现负载均衡功能
    主要名称服务器的测试

    主配置文件
    Bind的主配置文件是/etc/named.conf,该文件只包括Bind的基本配置,并不包含任何DNS区域数据。
    options {
    directory “/var/named”;
    forwarders {192.168.31.2 ; };
    allow-query {192.168.31/24 ; };
    allow-transfer {192.168.31/24 ; };
    };

    设置根区域
    当DNS服务器处理递归查询时,如果本地区域文件不能进行查询的解析,就会转到根DNS服务器查询,所以在主配置文件named.conf文件中还要定义根区域。
    zone “.” {
    type hint;
    file “named.ca”;
    };

    设置主区域
    主区域用来保存DNS服务器某个区域(如:example.com)的数据信息。
    zone “example.com” {
    type master;
    file “example.com.zone”;
    };

    设置反向解析区域
    在大部分的DNS查询中,DNS客户端一般执行正向查找,即根据计算机的DNS域名查询对应的IP地址。但在某些特殊的应用场合中(如判断IP地址所对应的域名是否合法),也会使用到通过IP地址查询对应DNS域名的情况(也称为反向查找)。
    zone “16.168.192.in-addr.arpa” {
    type master;
    file “192.168.16.arpa”;
    };

    根服务器信息文件named.ca
    /var/named/named.ca是一个非常重要的文件,该文件包含了Internet的根服务器名字和地址,Bind接到客户端主机的查询请求时,如果在Cache中找不到相应的数据,就会通过根服务器进行逐级查询。
    由于named.ca文件经常会随着根服务器的变化而发生变化,因此建议最好从国际互联网络信息中心(InterNIC)的FTP服务器下载最新的版本,下载地址为ftp://ftp.rs.internic.net/domain/named.root。下载完后,应将该文件改名为named.ca,并复制到”/var/named/chroot/var/named/”目录下。

    正向区域文件
    一个区域内的所有数据(包括主机名和对应IP地址、刷新间隔和过期时间等)必须存放在DNS服务器内,而用来存放这些数据的文件就称为区域文件(区域数据文件使用”;”符号注释)。DNS服务器的区域数据文件一般存放在/var/named/目录下。

    /var/named/chroot/var/named/example.com.zone文件的完整例子。

    $TTL 38400
    example.com. IN SOA dns.example.com. root.example.com. (
    2009070700 ; serial
    10800 ; refresh
    3600 ; retry
    604800 ; expiry
    38400 ) ; minimum
    example.com. IN NS dns.example.com.
    dns IN A 192.168.16.177
    www.example.com. IN A 192.168.16.9
    mail1.example.com. IN A 192.168.16.178
    mail2.example.com. IN A 192.168.16.179
    mail3.example.com. IN A 192.168.16.180
    rhel4 IN CNAME dns
    bbs IN CNAME www
    samba IN CNAME www
    example.com. IN MX 10 mail1.example.com.
    example.com. IN MX 11 mail2.example.com.
    example.com. IN MX 12 mail3.example.com.

    反向解析区域文件
    反向解析区域文件的结构和格式与正向区域文件类似,只不过它的主要内容是建立IP地址映射到DNS域名的指针PTR资源记录。

    在/var/named/chroot/var/named/192.168.16.arpa文件中定义反向解析区域。

    $TTL 36000
    16.168.192.in-addr.arpa. IN SOA dns.example.com. root.example.com. (
    2009070703
    10800
    3600
    604800
    36000 )
    16.168.192.in-addr.arpa. IN NS dns.example.com.
    177.16.168.192.in-addr.arpa. IN PTR dns.example.com.
    9 IN PTR www.example.com.
    178 IN PTR mail1.example.com.
    179 IN PTR mail2.example.com.
    180 IN PTR mail3.example.com.

    实现负载均衡功能
    DNS负载均衡的优点是经济简单易行,它在DNS服务器中为同一个域名配置多个IP地址(即为一个主机名设置多条A资源记录),在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的计算机上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。
    例如,在企业网中需要使用3台内容相同的FTP服务器共同承担客户对网站的访问,它们的IP地址分别对应192.168.16.11、192.168.16.12和192.168.16.13。现只要在DNS服务器的区域文件中加入以下3条A资源记录,就可以实现3台FTP服务器网络负载均衡功能。
    ftp IN A 192.168.16.11
    ftp IN A 192.168.16.12
    ftp IN A 192.168.16.13

    主要名称服务器的测试
    1.测试前的准备
    (1)启动DNS服务
    /etc/rc.d/init.d/named start
    (2)配置/etc/resolv.conf
    2.使用nslookup程序测试
    非交互式通常用于返回单块数据的情况,其命令格式为:
    nslookup [-选项] 需查询的域名 [DNS服务器地址]
    交互式通常用于返回多块数据的情况,其命令格式为:
    nslookup [- DNS服务器地址]
    3. host [-t type] hostname [server] [ip]
    4. dig [-t type] hostname [server] [ip]

    配置辅助名称服务器
    辅助名称服务器也可以向客户机提供域名解析功能,但它与主要名称服务器不同的是,它的数据不是直接输入的,而是从其他服务器(主要名称服务器或其他的辅助名称服务器)中复制过来的,只是一份副本,所以辅助名称服务器中的数据无法被修改。
    在一个区域中设置多台辅助名称服务器具有以下优点。
    1、提供容错能力。当主要名称服务器发生故障时,由辅助名称服务器提供服务。
    2、分担主要名称服务器的负担。在DNS客户端较多的情况下,通过架设辅助名称服务器完成对客户端的查询服务,可以有效地减轻主要名称服务器的负担。
    3、加快查询的速度。例如,一个公司在远地有一个与总公司网络相连的分公司网络,这时可以在该处设置一台辅助名称服务器,让该分公司的DNS客户端直接向此辅助名称服务器进行查询,而不需要通过速度较慢的广域网向总公司的DNS服务器查询,减少用于DNS查询的外网通信量。
    辅助名称服务器的主配置文件是/etc/named.conf,也需要设置服务器的选项和根区域,方法与配置主要名称服务器的方法相同
    options {
    directory “/var/named”;
    };
    zone “.” {
    type hint;
    file “named.ca”;
    };
    zone “example.com” {
    type slave;
    file “slaves/example.com.zone”;
    masters {192.168.16.177;};
    };
    zone “16.168.192.in-addr.arpa” {
    type slave;
    file “slaves/192.168.16.arpa”;
    masters {192.168.16.177;};
    };

    配置缓存Cache-only服务器
    Cache-only服务器是很特殊的DNS服务器,它本身并不管理任何区域,但是DNS客户端仍然可以向它请求查询。Cache-only服务器类似于代理服务器,它没有自己的域名数据库,而是将所有查询转发到其他DNS服务器处理。当Cache-only服务器收到查询结果后,除了返回给客户机外,还会将结果保存在缓存中。
    当下一个DNS客户端再查询相同的域名数据时,就可以从高速缓存里查出答案,加快DNS客户端的查询速度。

    Cache-only服务器/etc/named.conf文件,具体的代码如下。
    options {
    directory “/var/named”;
    forward only;
    forwarders {
    61.144.56.101;
    202.96.128.68;
    };
    };

    DNS客户端的配置
    Linux中DNS客户端的配置
    在Linux中配置DNS客户端的方法很简单,可直接编辑文件/etc/resolv.conf,然后使用nameserver选项来指定DNS服务器的IP地址 。

    Windows 中DNS客户端的配置
    ① 在桌面上的”网上邻居”图标上单击鼠标右键,在弹出的快捷菜单中选择”属性”命令,系统会打开”网络连接”窗口。
    ② 在”本地连接”图标上单击鼠标右键,在弹出的快捷菜单中选择”属性”命令,系统会打开”本地连接 属性”对话框。
    ③ 选中”Internet协议(TCP/IP)”复选框,然后单击”属性”按钮,系统会打开”Internet协议(TCP/IP)属性”对话框,如图6-33所示。
    ④ 选中”使用下面的DNS服务器地址”单选按钮,在”首选DNS服务器”和”备用DNS服务器”中输入DNS服务器的IP地址,然后单击”确定”按钮即可完成Windows XP下的DNS客户端的配置。

    ★★★★★★★★★★★★★★★★★视频观看地址★★★★★★★★★★★★★★★★★★
    http://www.boobooke.com/v/bbk3231
    http://www.boobooke.com/v/bbk3232
    http://www.boobooke.com/v/bbk3233
    http://www.boobooke.com/v/bbk3234

    相关文章

    发表评论