Chinaunix首页 | 论坛 | 博客
  • 博客访问: 349076
  • 博文数量: 60
  • 博客积分: 1570
  • 博客等级: 上尉
  • 技术积分: 620
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-02 23:37
文章分类

全部博文(60)

文章存档

2012年(2)

2010年(2)

2009年(56)

分类: LINUX

2009-12-01 16:25:03

硬件环境:Linux 2.6.23.1-42.fc8

linux ip: 10.1.1.182

    本机上没有dns 服务,yum 安装了一个:

yum install bind

(此过程安装的版本为 bind-9.5.0-16.a6.fc8.i386.rpm)

以下内容来自"麦子屋"的博客 和 "atg_1"的帖子 

原文链接分别为:

http://blog.sina.com.cn/s/blog_6151984a0100f1f3.html

 
 
 
  域名解析的方法  
  •     HOSTS文件:适用于小型网络(文本文件)
  •     NIS服务器:
  •     DNS服务器:分布式解析

    /etc/hosts ,也负责映射,但它通常是当作DNS的备份出现的

 
    unix上dns客户端的设置
  • /etc/resolv.conf文件
# vi /etc/resolv.conf
domain   xxx  
nameserver 192.168.2.1
search iei.com
  • /etc/nsswitch.conf文件   用于记录主机名的搜索顺序等信息
vi /etc/nsswitch.conf
hosts: files dns 
  
  • nslookup    nslookup测试


  /etc/resolv.conf 设DNS SERVER与nslookup测试DNS正确与否

[root@old145 mac]# cat /etc/resolv.conf
search iei.com
nameserver 219.142.217.166
[root@old145 mac]# nslookup
Server:         219.142.217.166
Address:        219.142.217.166#53

Non-authoritative answer:
Name:  
Address: 198.133.219.25

 
 
nslookup也可以反查:查IP地址的域名(这一步时,我使用的dns服务器反向解析不了IP)
[root@old145 mac]# nslookup 198.133.219.25
Server:         219.142.217.166
Address:        219.142.217.166#53

Non-authoritative answer:
25.219.133.198.in-addr.arpa     name = .

Authoritative answers can be found from:
219.133.198.in-addr.arpa        nameserver = ns1.cisco.com.
219.133.198.in-addr.arpa        nameserver = ns2.cisco.com.
ns1.cisco.com   internet address = 128.107.241.185
ns2.cisco.com   internet address = 64.102.255.44
 
 
 
          一、  named 安装配置步骤

            在Linux中都是用Bind来实现DNS,即“named进程”

  •     /etc/named.conf

options {
        listen-on port 53 { any; }; //127.0.0.1 改为 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";
        allow-query     { any; }; //localhost  改为 any 
        recursion yes;
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone “区域名”  IN {
type   master/slave/hint
        定义区域类型
    master   主DNS
    slave    辅DNS (很少用)
    hint 根,只用于下面的”.” named.ca
file “文件名”   区域文件名,此文件存于/var/named目录下
};

zone "sina.com" IN {
        type master;
        file "sina.zone";
        allow-update { none; };
};
zone "." IN {                   根区域    
        type hint             类型:根   
        file "named.ca";          /var/named/named.ca 指向上级DNS(通常是公网顶级DNS)
                                  该文件不需要管理员更改,而是系统自带  
};
   
  •     正向解析,区域文件格式 (域名---地址)

[root@localhost named]# cat sina.zone

$TTL 1D
@       IN SOA  @  root (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum

@ IN NS 202.108.33.32;
 IN A 202.108.33.32;

WWW IN A 202.108.33.32;
  
@则代表相应的域名,macg.com 
NS:域名记录, 一个zone文件,必须有NS条目,否则报错
A条目,真正的映射条目
域名都是两条条目,一条NS条目,一条A条目

WWW IN A 202.108.33.32;      主机A条目:主机映射条目,“主机名 IN A 地址”



  IN不能打头,前面应该有域名,或@,或至少应该有一个空格
  zone文件必须有NS条目
[root@localhost named]# vi macg.zone
IN NS 202.108.33.32;
 IN A 202.108.33.32;

[root@localhost named]# /etc/init.d/named restart
sina.zone:9: NS record '202.108.33.32' appears to be an address
zone sina.com/IN: has no NS records
_default/sina.com/IN: bad zone

[root@localhost named]# vi macg.zone
@ IN NS 202.108.33.32;
 IN A 202.108.33.32;

[root@localhost named]# /etc/init.d/named restart
Starting named: [  OK  ]
总之,IN前可以空,但必须有一个空格,不能用IN顶头(我测试的时候,可以顶头

   IN语句的主机名前面不能留空格
[root@localhost named]# vi macg.zone
       www IN A 202.108.33.32;

[root@localhost named]# /etc/init.d/named restart
Starting named:
Error in named configuration:
macg.zone:11: unknown RR type 'www'
zone macg.com/IN: loading master file macg.zone: unknown class/type
_default/macg.com/IN: unknown class/type       [FAILED]
将www行之前的空格去掉,错误解决
[root@localhost named]# vi macg.zone
@ IN NS         202.108.33.32;
 IN A            202.108.33.32;
www IN A 202.108.33.32;
 
 


    一个基本的正向解析+测试
  • 配/etc/named.conf
[root@localhost named]# more /etc/named.conf
zone "sina.com" IN {
        type master;
        file "sina.zone";
        allow-update { none; };
};
  • 建立zone文件 /var/named/sina.zone

 $TTL 1D
@       IN SOA  @  root (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum

@ IN NS 202.108.33.32;
 IN A 202.108.33.32;

WWW IN A 202.108.33.32;

 
  • 启动service
[root@localhost named]# /etc/init.d/named restart
Stopping named: [  OK  ]
Starting named: [  OK  ]
 
   * 设置防火墙(测试时,可以把防火墙关闭了测试:service  iptables  stop)
防火墙开启53端口:
#/cd /etc/sysconfig/
# vi iptables
在里面添加TCP 和UDP的53端口 。
我是仿照 ssh 的端口设置的:
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
然后 执行 service iptables restart
  • 测试

在其他PC上,执行:(我的Windows 主机为 2003 Server SP2)

C:\>nslookup     10.1.1.182
*** Can't find server name for address 10.1.1.182: Server failed
Server:  UnKnown (到这一步时,还没有做反向解析,目前没有影响
Address:  10.1.1.182

Name:   
Address:  202.108.33.32

 
 
 
 
                 二、 反向解析(地址---域名)

作用:通过查询IP地址的PTR记录
            得到该IP地址指向的域名,
用途:常用于MAIL SERVER 过滤垃圾邮件:
如果SERVER没有做反向解析,那么对方mail服务器的反向解析验证就会失败,对方mail服务器就会以我们是不明发送方而拒收我们发往的邮件,这也就是没做反向解析时无法向sina.com、homail.com发信的原因
  •     修改/etc/named.conf
vi /etc/named.conf
zone "33.108.202.in-addr.arpa" IN {
           IP地址前三位倒叙+ in-addr.arpa
        type master;
        file "named.sina.com";
        allow-update { none; };
};
  •    建立反向zone文件  /var/named/named.sina.com
$TTL 1D
@       IN SOA  @  root (
                0       ; serial
                1D      ; refresh
                1H      ; retry
                1W      ; expire
                3H )    ; minimum

@ IN NS  sina.com.
32 IN PTR  .

 
* 测试:
 
我在 Windows 2003 Server SP2上测试:

C:\>nslookup 202.108.33.32 10.1.1.182
*** Can't find server name for address 10.1.1.182: Non-existent domain
Server:  UnKnown
Address:  10.1.1.182
Name:   
Address:  202.108.33.32
 
结果:
成功解析出 Name:
这里,找不到Server 名字,因为还没有为它设置反向解析,这个不影响本次测试。
 
 
注意: 在反向zone文件  /var/named/named.sina.com中,
@ IN NS  sina.com.
32 IN PTR  .
后面的那个点“.”表示这是一个完整的记录,否则,服务器就会自动给你加上当前域。
这里,如果没有这个点, 解析处理的 name就是:
Name:   
 
 
 
 
阅读(11106) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~