硬件环境: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客户端的设置
# vi /etc/resolv.conf domain xxx nameserver 192.168.2.1 search iei.com |
- /etc/nsswitch.conf文件 用于记录主机名的搜索顺序等信息
vi /etc/nsswitch.conf hosts: files dns |
/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进程”
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; |
一个基本的正向解析+测试
[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; |
[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发信的原因
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) |