Chinaunix首页 | 论坛 | 博客
  • 博客访问: 20668
  • 博文数量: 6
  • 博客积分: 227
  • 博客等级: 入伍新兵
  • 技术积分: 75
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-09 09:54
个人简介

专注、细致

文章分类
文章存档

2012年(6)

最近访客

分类: LINUX

2012-08-10 14:29:53

DNS   Domain name system   域名解析系统
/etc/hosts 文件   计算机对应的名字转化成对应的IP地址

dns服务器:让有意义的,人类较容易记住的主机名(英文字母),转译为计算机所熟悉的IP地址
正向解析:根据主机名称(域名)查找对应的IP地址
反向解析:根据IP地址查找对应的主机域名

早期使用hosts文件解析域名
主机名称重复
主机维护困难

DNS(Domain Name System域名系统)
分布式
层次性

根域
顶级域
    组织域    gov     政府部门         com     商业部门         edu    教育部门         org    民间团体组织         net    网络服务机构         mil    军事部门
    国家域/地区域      cn     中国         jp    日本      uk    英国     au    澳大利亚         hk    中国香港
    反向域        将IP地址映射到名称 “in-addr.arpa”
二级域
三级域
主机名
主机名.DNS后缀=FQDN


当系统中同时存在DNS域名解析和/etc/hosts主机表机制时,由该/etc/nsswitch.conf确定主机名解释顺序

缓存域名服务器
    也称为 唯高速缓存服务器
    通过向其他域名服务器查询获得域名->IP地址记录
    将域名查询结果缓存到本地,提高重复查询时的速度
主域名服务器
    特定DNS区域的官方服务器,具有唯一性
    负责维护该区域内所有域名->IP地址的映射记录
从域名服务器
    也称为 辅助域名服务器
    其维护的 域名->IP地址记录 来源于主域名服务器
bind安装
BIND(Berkeley Internet Name Daemon)
    伯克利Internet域名服务
    官方站点:
相关软件包
    bind-9.3.3-7.el5.i386.rpm
    bind-utils-9.3.3-7.el5.i386.rpm
    bind-chroot-9.3.3-7.el5.i386.rpm
    caching-nameserver-9.3.3-7.el5.i386.rpm

BIND服务器端程序
    服务脚本:/etc/init.d/named
    默认监听端口:53(tcp udp)
    主配置文件: /var/named/chroot/etc/named.conf
    数据文件位于:/var/named/chroot/var/named/目录
安装bind-chroot软件包
    主配置文件: /etc/named.caching-nameserver.conf
    数据文件位于: /var/named/chroot/var 目录
安装caching-nameserver软件包
    缓存配置文件:named.caching-nameserver.conf

全局配置部分
    设置DNS服务器的全局参数
    包括监听地址/端口、数据文件的默认位置等
    使用 options { …… }; 的配置段
        options {
                listen-on port 53 { 192.168.16.1; };
               directory   "/var/named";
                dump-file       "/var/named/data/cache_dump.db“;
                allow-query  { 192.168.1.0/24; 192.168.16.0/24; };
                forwarders   { 192.168.1.1/24; 202.103.96.112; };
        };
        include "/etc/named.rfc1912.zones

区域配置部分
    设置本服务器提供域名解析的特定DNS区域
    包括域名、服务器角色、数据文件名等
    使用 zone “区域名” IN { …… }; 的配置段
        zone "." IN {
                type hint; (hint表示根区域、master表示主区域、slave表示辅助区域)
                file "named.ca";(file 用于设置 该区域对应的数据文件名)
            };
    倒序网络地址.in-addr.arpa 的形式表示反向区域
        zone "sxkeji.com" IN {
                        type master;
                        file "sxkeji.com.zone";
                };
        zone "16.168.192.in-addr.arpa" IN {   表示针对192.168.16.0/24网段的反向解析区域
                        type master;
                        file "192.168.16.arpa";   
                };

DNS区域通过资源记录为客户端提供相应域名解析
DNS区域文件中包含的资源记录的类型

    资源记录                    说    明
SOA(起始授权机构)            指定该区域的权威名称服务器
NS(名称服务器)                表示某区域的权威服务器和SOA中指定的该区域的主服务器和辅助服务器
A(主机)                    列出了区域中FQDN(完全合格的域名)到IP地址的映射
PTR(指针)                    相对于A资源记录,PTR记录把IP地址映射到FQDN(反向域名解析)
MX                            邮件交换器记录,向指定邮件交换主机提供消息路由
CNAME(别名)                将多个名字映射到同一台计算机,便于用户访问


全局TTL配置项及SOA记录
    $TTL(Time To Live,生存时间)记录
    SOA(Start Of Authority,授权信息开始)记录
    分号“;”开始的部分表示注释信息
        $TTL    86400                     ; 地址解析记录的默认缓存时间
        @  IN  SOA  dns.sxkeji.com.  root.sxkeji.com.  (
                            2011021901        ;更新序列号
                            3H            ;刷新时间
                            15M            ;重试延时
                            1W            ;失效时间
                            1D           ;地址解析记录的最小缓存时间
)
域名解析记录
    NS域名服务器(Name Server)记录
      MX邮件交换(Mail Exchange)记录
     A地址(Address)记录,只用在正向解析的区域数据文件中
     CNAME别名(Canonical Name)记录
            @     IN    NS    ns1.sxkeji.com.
            IN      MX  10  mail.sxkeji.com.
            ns1     IN    A     192.168.16.1
            mail    IN    A     192.168.16.1
            www        IN    A     192.168.16.1
            ftp         IN    CNAME     www

域名解析记录
    PTR指针(Point)记录,只用在反向解析的区域数据文件中
    配置反向解析记录时,只需要指定IP地址中的主机地址部分即可,网络地址部分不用写
            1    IN        PTR        
            4    IN        PTR        study.sxkeji.com.      若在 16.168.192.in-addr.arpa 反向区域数据文件中,则对应为 192.168.16.4 的IP地址
基于域名解析的负载均衡
    同一域名对应到多个IP地址
    movie        IN        A        192.168.16.11
    movie        IN        A        192.168.16.12
    movie        IN        A        192.168.16.13

泛域名解析
    找不到精确对应的A记录时,使用“*”进行匹配
    这条记录一定要写在最后
    *        IN        A        192.168.16.173
named-checkconf工具
格式:named-checkconf  -t /var/named/chroot
    [root@localhost etc]# named-checkconf  -t  /var/named/chroot

named-checkzone工具
格式:named-checkzone <域名> <区域数据文件>
    [root@localhost ~]# cd /var/named/chroot/var/named/
    [root@localhost named]# named-checkzone  sxkeji.com  sxkeji.com.zone
    zone sxkeji.com/IN: loaded serial 2011
    OK
日志文件/var/log/messages
    重启named服务失败,可以通过日志排错
    1.[root@localhost ~]# tail -f /var/log/messages
    Feb 15 20:18:49 rhela named[12114]: starting BIND 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.2 -u named -t /var/named/chroot
    Feb 15 20:18:49 rhela named[12114]: loading configuration from '/etc/named.conf'
    Feb 15 20:18:49 rhela named[12114]: none:0: open: /etc/named.conf: permission denied
    Feb 15 20:18:49 rhela named[12114]: loading configuration: permission denied
    Feb 15 20:18:49 rhela named[12114]: exiting (due to fatal error)
    
    2.[root@localhost ~]# tail -f /var/log/messages
    Feb 15 20:28:46 rhela named: zone 255.in-addr.arpa/IN: loaded serial 42
    Feb 15 20:28:46 rhela named: zone 0.in-addr.arpa/IN: loaded serial 42
    Feb 15 20:28:46 rhela named: zone hello.com/IN: loading master file hello.com.zone: file not found
    Feb 15 20:28:46 rhela named: _default/hello.com/IN: file not found
    Feb 15 20:28:46 rhela named: zone 0.168.192.in-addr.arpa/IN: loading master file 192.168.0.zone: file not found
    Feb 15 20:28:46 rhela named: _default/0.168.192.in-addr.arpa/IN: file not found

提供DNS服务的必要条件
    服务器有固定IP地址
    安装并启动DNS服务
    有区域文件,或者配置转发器,或者配置根域名服务器





##############修改配置文件
[root@dns etc]# pwd
/var/named/chroot/etc
[root@dns etc]# cp -p named.caching-nameserver.conf named.conf
[root@dns etc]#


[root@dns etc]# vim named.conf
[root@dns etc]# cat named.conf
options {
        listen-on port 53 { any; };
        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";

        allow-query     { any; };
        allow-query-cache { any; };
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "facebook.com" IN {
        type master;
        file "facebook.com.zone";
        allow-update { none; };
};

zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "0.168.192.in-addr.arpa";
        allow-update { none; };
};
[root@dns etc]#

############新建和配置zone文件
[root@dns named]# pwd
/var/named/chroot/var/named
[root@dns named]#

[root@dns named]# cp -p localhost.zone facebook.com.zone
[root@dns named]# vim facebook.com.zone
[root@dns named]# cp -p named.
named.broadcast  named.ip6.local  named.zero       
named.ca         named.local      
[root@dns named]# cp -p named.local 0.168.192.in-addr.arpa
[root@dns named]# vim 0.168.192.in-addr.arpa
[root@dns named]# cat facebook.com.zone
$TTL    86400
@               IN SOA  @       root (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

                IN NS           dns.facebook.com.
dns             IN A            192.168.0.97
www             IN A            192.168.0.97
ftp             IN A            192.168.0.97
mail            MX 5            192.168.0.97
[root@dns named]# cat 0.168.192.in-addr.arpa
$TTL    86400
@       IN      SOA     dns.facebook.com. root.localhost.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN      NS      dns.facebook.com.
97       IN      PTR     www
97       IN      PTR     mail
97       IN      PTR     ftp
[root@dns named]#


#########启动服务
[root@dns named]# /etc/init.d/named restart
停止 named:                                               [确定]
启动 named:                                               [确定]
[root@dns named]# host
[root@dns named]# vim /etc/resolv.conf
[root@dns named]# host
has address 192.168.0.97
[root@dns named]# host 192.168.0.97
97.0.168.192.in-addr.arpa domain name pointer mail.0.168.192.in-addr.arpa.
97.0.168.192.in-addr.arpa domain name pointer ftp.0.168.192.in-addr.arpa.
97.0.168.192.in-addr.arpa domain name pointer
[root@dns named]#


===============DNS转发=====================
A   --> Client      resolv.conf --> B
B   --> Forwarders { C=IP; };
C   --> Real Server 提供DNS服务
===============DNS转发=====================

主从复制
named.conf 文件
zone 文件
=============================

子域授权
============================
 --> C            A 爷爷  baidu.com  -->zone dns.hello...
                B 爸爸  hello.baidu.com
                  儿子 


访问控制列表
ACL:一个被命名的地址匹配列表
    acl 语句不能嵌入其他的语句中
    acl 语句的语法:
        acl acl_name {
            address_match_list;
        };

BIND 默认预定义了 4 个名称的地址匹配列表
    any : 所有主机
    localhost : 本机
    localnets : 本地网络上的所有主机
    none : 不匹配任何主机

view的域名服务器
分离解析(Split DNS)
    来自不同地址的客户机请求解析同一域名时,为其提供不同的解析结果
基本配置步骤:
    1.在named.conf主配置文件中为不同的客户机地址启用不同的zone区域设置,各自使用独立的数据文件
    2.分别建立不同的区域数据文件
    3.启动或重新加载named服务程序
    4.验证分离解析的域名服务器    

1.在named.conf主配置文件中为不同的客户机地址启用不同的zone区域设置,各自使用独立的数据文件

view “视图1” {
    match-clients { 客户机地址1; }
    zone “sxkeji.com” IN {
        ……
    };
};
view “视图2” {
    match-clients { 客户机地址2; }
    zone “sxkeji.com” IN {
        ……
    };
};

事例:
view "LAN" {
    match-clients { 192.168.1.0/24; };        针对来自局域网客户机的区域数据文件
    zone "sxkeji.com" IN {
        type master;
        file "sxkeji.com.zone.lan";        
    };
};
view "WAN" {
    match-clients { any; };        针对来自其他任意地址客户机的区域数据文件
    zone "sxkeji.com" IN {
        type master;
        file "sxkeji.com.zone.wan";
    };
};


2.分别建立不同的区域数据文件
[root@ns1 ~]# vi /var/named/chroot/var/named/sxkeji.com.zone.lan
……
ns1        IN      A       192.168.1.1
www         IN      A       192.168.1.5
mail          IN      A       192.168.1.6

[root@ns1 ~]# vi /var/named/chroot/var/named/sxkeji.com.zone.wan
……
ns1        IN      A       192.168.16.1
www         IN      A       192.168.16.1
mail          IN      A       192.168.16.1

3.启动或重新加载named服务程序
     service named reload

4.验证分离解析的域名服务器
     使用192.168.1.0/24网段的客户机解析 ,结果应为 192.168.1.5
     使用其他IP地址的客户机解析 ,结果应为 192.168.16.1

事务签名
TSIG:保障主从DNS之间的复制区域数据库文件的安全性
    使用对称加密技术
    在主DNS上生成密钥
    [root@rhela etc]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST hello
    
    查看密钥
    [root@rhela etc]# cat Khello.+157+47419.private
    Private-key-format: v1.2
    Algorithm: 157 (HMAC_MD5)
    Key: o7Be+nIiocRHk4XnSP+Gkg==      密钥

    根据密钥信息创建如下密钥文件
    [root@rhela etc]# cat hello.key
    key "hello" {
                algorithm       hmac-md5;
                secret          "o7Be+nIiocRHk4XnSP+Gkg==";
    };
    
    修改主DNS的named.conf文件
    include "/etc/hello.key";    导入密钥文件
        options {
                directory       "/var/named";
                    allow-transfer { key hello;};    配置允许传送的密钥

        …..

    将主DNS上密钥文件复制到从DNS
    注意检查权限和所有权
    scp -p hello.key root@192.168.0.171:/var/named/chroot/etc/
    
    修改从DNS的named.conf文件
    include "/etc/hello.key";            导入密钥文件
        server 192.168.0.170 {
            keys  { hello;};            指明主DNS和密钥
        };
        options {
            directory       "/var/named";
        };

    查看/var/log/messages日志文件
    注意主从DNS服务器的日期时间要一致
    view aa: request has invalid signature: TSIG hello: tsig verify failure (BADTIME)
    view aa: request has invalid signature: TSIG hello: tsig verify failure (BADTIME)

    view aa: zone transfer 'hello.com/AXFR/IN' denied
    
    view aa: transfer of 'hello.com/IN': AXFR started: TSIG hello
    view aa: transfer of 'hello.com/IN': AXFR ended

    
rndc命令    
rndc:一种控制域名服务运行的工具
    可以在不停止DNS服务器工作的情况进行数据的更新,使修改后的配置文件生效
    可以对named进程进行远程控制
    过数字证书进行认证和DNS服务器连接
    [root@rhela etc]# rndc-confgen > /etc/rndc.conf    生成密钥数据
    创建控制端配置文件/etc/rndc.conf文件
[root@rhela etc]# ]# rndc-confgen > /etc/rndc.conf
 [root@rhela etc]# ]# cat   /etc/rndc.conf
key "rndckey" {
        algorithm hmac-md5;
        secret "v38u998Oplim2MoDwSR2kw==";
};

options {
        default-key "rndckey";
        default-server 127.0.0.1;    默认服务器IP
        default-port 953;
};
新建rndc.key文件,根据上述提示输入相应内容
注意文件的权限和所有权
(直接把/etc/rndc.conf内容直接写入到/var/named/chroot/etc/rndc.key   cat /etc/rndc.conf > /var/named/chroot/etc/rndc.key)
[root@rhela etc]# vi  /var/named/chroot/etc/rndc.key
key "rndckey" {
       algorithm hmac-md5;
       secret "v38u998Oplim2MoDwSR2kw==";
};
controls {
       inet 127.0.0.1 port 953    服务器监听的地址和端口
               allow { 127.0.0.1; } keys { "rndckey"; };     允许管理服务器的主机地址
};

在named.conf文件中,导入密钥文件
重启服务后,使用rndc工具对named进行控制
rndc默认端口:tcp  953
[root@rhela etc]# vi named.conf
将/etc/rndc.conf后半部分的有效配置复制粘贴到named.conf文件的末尾即可

[root@rhela etc]# vi  named.conf
key "rndckey" {
       algorithm hmac-md5;
       secret "v38u998Oplim2MoDwSR2kw==";
};
controls {
       inet 127.0.0.1 port 953        服务器监听的地址和端口
               allow { 127.0.0.1; } keys { "rndckey"; };    允许管理服务器的主机地址
};
也可以直接一条语句就行 include "/etc/rndc.key";


重新读取配置文件
[root@rhela etc]# rndc reload
server reload successful….

保存当前的高速缓存
[root@rhela etc]# rndc dumpdb

显示当前DNS服务器状态
[root@rhela etc]# rndc status
number of zones: 4
…..
server is up and running

阅读(1886) | 评论(0) | 转发(0) |
0

上一篇:linux 计划任务

下一篇:日志

给主人留下些什么吧!~~