DNS 服务器配置说明
DNS 服务器配置说明公司DNS 地址为:10.10.3.254帐号:root 密码:1111111.概述1.1什么是DNSDNS 全名叫Domain Name Server ,中文俗称“域名服务器”
DNS 服务器配置说明
公司DNS 地址为:10.10.3.254
帐号:root 密码:111111
1.
概述
1.1
什么是DNS
DNS 全名叫Domain Name Server ,中文俗称“域名服务器”,在说明DNS Server 之前,可能要先说明什么叫Domain Name(域名) 。通常,在网上辨别一台电脑的方法是利用IP 地址,但是IP 用数字表示,没有特殊的意义,不便于记忆,因此,我们一般会为网上的电脑取一个有某种含义又容易记忆的名字,这个名字我们就叫它
“Domain Name"(域名)。例如:对著名的YAHOO !搜索引擎来说,一般使用者在浏览这个网站时,都会输入http://www.yahoo.com,很少有人会记住这台Server 的IP 是多少?所以http://www.yahoo.com就是YAHOO! 站点的Domain Name 。这正如我们在跟朋友打招呼时,一定是叫他的名字,几乎没有人是叫对方身份证号码来
打招呼的,但本质上在Internet 上真实辨认机器的还是IP ,所以当使用者在浏览器中输入Domain Name 后,浏览器必须先到一台有Domain Name 和IP 对应信息的主机去查询这台电脑的IP ,而这台被查询的主机,我们称它为Domain Name Server (域名服务器),简称DNS ,例如:当你输入http://www.yahoo.com时,浏览器会将http://www.yahoo.com这个名字传送到距离它最近的DNS Server 上去做辨认,如果DNS Server 查询出域名对应的IP ,就会将这个IP 值返回给这台主机,但如果没有查询到,就会出现类似DNS NOT FOUND等告警信息。所以一旦你的电脑的DNS Server 设置不正确,就好比是路标错了,电脑也就不知道该把域名信息送到哪里去解析了。
1.2DNS
的结构
DNS 是一个分层级的分散式名称对应系统有点像电脑的目录树结构在最顶端的是一个“. ” (root ) 然後其下分为好几个基本类别名称如com 、org 、edu 等再下面是组织名称如cisco 、intel 等继而是主机名称如www 、mail 、ftp 等。因为当初internet 是从美国发起的所以当时并没有国域名称但随着后来internet 的蓬勃发展DNS 也加进了诸如cn 、jp 、au 等国域名称。所以一个完整的dns 名称就好像是这样的www.xyz.com.cn 而整个名称对应的就是一个IP 地址了。在开始的时候root 下面只有六个组织类别
类别名称代表意思
edu 教育学术单位
org 组织机构
,net 网路通讯单位
com 公司企业
gov 政府机关
mil 军事单位
不过自从组织类别名称开放以後各种各样五花八门的名称也相继现出来了但无论如何取名的规则最好量适合网站性质。除了原来的类别资料由美国的NIC(Network Information Center )管理之外其它在国域以下的类别分别由该国的NIC 管理。
理解DNS
的工作方式
DNS 查询的工作原理:当DNS 客户端需要查询程序中使用的名称时,它会查询DNS 服务器来解析该名称。客户端发送的每条查询消息都包括三条信息,指定服务器回答的问题: * 指定的DNS 域名,规定为完全合格的域名(FQDN)
* 指定的查询类型,可根据类型指定资源记录,或者指定查询操作的专用类型。 * DNS 域名的指定类别。
例如,指定的名称可为计算机的FQDN ,如Debian.linuxsi r .org ,并且指定的查询类型用于通过该名称搜索地址(A) 资源记录。将DNS 查询看作客户端向服务器询问由两部分组成的问题,如“您是否拥有名为‘Debian.linuxsi r .org’的计算机的A 资源记录?”当客户端收到来自服务器的应答时,它将读取并解释应答的A 资源记录,获取根据名称询问的计算机的IP 地址。
DNS 查询以各种不同的方式进行解析。有时,客户端也可使用从先前的查询获得的缓存信息在本地应答查询。DNS 服务器可使用其自身的资源记录信息缓存来应答查询。DNS 服务器也可代表请求客户端查询或联系其他DNS 服务器,以便完全解析该名称,并随后将应答返回至客户端。这个过程称为递归(Recursion )。
另外,客户端自己也可尝试联系其他的DNS 服务器来解析名称。当客户端执行此
操作时,它会根据来自服务器的参考答案,使用其他的独立查询。这个过程称为迭代。总之,DNS 查询进程分两部分进行:
*
名称查询从客户端计算机开始,并传输至解析程序即DNS 客户端服务程序进行解析。
*
不能在本地解析查询时,可根据需要查询DNS 服务器来解析名称。
DHCP 是一个局域网的网络协议,使用UDP 协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP 地址给用户, 给内部网络管理员作为对所有计算机作中央管理的手段。本文描述如何安装配置DNS ,最后介绍DNS 服务移植到开发板上。本文假设读者有一定的网络基础知识。
2.
安装Bind
本文档下述操作是基于Linux 操作系统版本: fedora 12
安装Bind 可以采用在线安装方式, 输入命令如下#yum -y install bind*
,完成安装后,键入如下命令,看是否安装完全:
#rpm –qa | grep 'bind'
bind-utils-9.6.2-3.P1.fc12.i686 bind-dyndb-ldap-0.1.0-0.5.a1.fc12.i686 PackageKit-device-rebind-0.5.4-0.1.20091029git.fc12.i686 bind-devel-9.6.2-3.P1.fc12.i686 bind-libs-9.6.2-3.P1.fc12.i686 bindfs-1.8.3-3.fc12.i686 samba-winbind-clients-3.4.7-58.fc12.i686 bind-9.6.2-3.P1.fc12.i686 ypbind-1.20.4-20.fc12.i686 bind-to-tinydns-0.4.3-6.fc12.i686 bind-chroot-9.6.2-3.P1.fc12.i686 rpcbind-0.2.0-4.fc12.i686 bind-sdb-9.6.2-3.P1.fc12.i686
(注:对于不同版本系统,可能需要的包有所区别,但大多数包是相同的,这里仅供参考) 3.
配置
3.1
基本配置(问题:我的配置文件没有)
1 编辑named.conf 文件,红色为改动部分,//后为注释,请不要将注释写入文件!
# vi /var/named/chroot /etc/named.conf(如果在此目录未发现,则用find /name named.conf 命令来查找)
options { listen-on port
53 { any; }; //127.0.0.1 改为any,53 为监听端口号
listen-on-v6 port 53 { ::1;
}; directory “/var/named” ; dump-file
“/var/named/date/cache-dump.db” ; statistics -file
“/var/named/data/named_stats .txt ” ; memstatistics -file
“/var/named/data/named_mem_stats .txt ” ; query-source
prot
53; query-source-v6 port 53; allow-query
{ any; };
//localhost改为any
allow-query-cache
{ any; }; forwarders
{ 202.103.24.68; };//此行默认没有,如果内网使用此DNS 服务器可//以设置dns 转发,这里一定需要是一个有效的DNS 服务器地址forward only;
//此行是与上一行搭配使用的,默认配置没有此项}; logging { channel default _debug { file “data/named.run” ; severity dynamic; }; }; viewlocalhost _resolver { match-clients { any; };
//localhost改为any
match-destinations { any; }; //localhost改为any
recursion yes; include “/etc/named.rfc1912.zones” ; };
2 配置named.rfc1912.zones 文件
在此目录下还有一个文件named.rfc1912.zones 要配置,它是DNS 服务器的区域配置文件: #vi
named.rfc1912.zones zone “. ” IN { type hint ; //type 表示类型,hint 表示为互联网中根域名服务器file “name.ca ” ;//file 表示该域定义文件的文件名}; //每一个” }”
或每个配置内容语句后面千万不要忘记”; ”
zone “localdomain”
,IN { type master ; //master 表示定义的是主域名服务器file “localdomain.zone ” ; allow-update
{ none; }; }; zone “localhost ”
IN { type master ; file “localhost .zone” ; allow-update
{ none”
}; }; zone "0.0.127.in-addr.arpa" IN { type master ; file "named.local"; allow-update
{ none; }; };
zone
"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa"
IN {
type master ;
file "named.ip6.local";
allow-update
{ none; }; };
zone "255.in-addr.arpa" IN { type master ; file "named.broadcast "; allow-update
{ none; }; }; zone "0.in-addr.arpa" IN { type master ; file "named.zero"; allow-update
{ none; }; };
// 下面的hello-world-wh.com 是新添加的实验用的区域,正向解析区域
zone "hello-world-wh.com" IN { type master ;
file "hello-world-wh.
.zone"; // 文件名是可以自定义命名的allow-update
{ none; };
};
// 0.1.10
是我们的反向解析区域zone "0.1.10.in-addr.arpa" IN {// 142.204.122 是IP 前三项的倒置type master ;
};
// 注:在最后添加自己的DNS 区域,如果有多个,则可做类似添加
3 生成正向、反向区域配置文件
在上述的named.rfc1912.zones 文件中,我们在文件尾部添加了自己的正向解析区域和反向解析区域配置文件的配置项(“www.hello-worldwh.net.zone ”与” 0.1.10.in-addr.local ” ) ,但这两个文件还没有生成,是需要我们手工添加的,它们可由安装bind 时自动生成的两个区域配置文件直接拷贝得到,然后再做修改。
#cd /var/named/(如果在此目录未发现,则用find / -name data 命令来查找)
#lschroot
dynamic
named.empty
named.loopback data named.ca named.localhost slaves
//data 目录中用来存放named_mem_stats .txt 文件,该文件用来记录DSN 服务器的内// 存状态信息。//slaves 目录用来存放从域名服务器(slave)的区域配置文件
#cp
–p localdomain.zone
,hello-world-wh.com.zone (此时localdomain.zone 也可以换成named.localhsot , 打开文件named.rfc1912.zones 后可以看到的正向解析指令[由url 解析到ip 地址])
#cp–p named.local 0.1.10.in-addr.local (此时named.local 也可以换成named.lookback, 打开文件named.rfc1912.zones 后可以看到的反向解析指令[由ip 地址解析到url])
// 注意:两个配置文件名一定要与named.rfc1912.zones 中定义的名称相同。
#vi
0.1.10.in-addr.local $TTL 86400
@
IN
SOA
localhost .root .localhost .(
2010012700 ; Serial
28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400
); Minimum
IN
NS
hello-world-wh.com. // 注意helloworld-wh.com. 最后的” . ”不要忘记.IN 的位置应该注意, 应按照格式书
写,否则会有意想不到错误:
23 IN
PTR
mail .hello-world-wh.com. // 23 是
服务器IP 的最后一项,下同
IN
PTR
ftp.hello-world-wh.com.
23 IN PTR www.hello-world-wh.com. // 注意:23 是指DNS 服务器IP :10.1.0.23 的最后地址区域84
上述配置第一行是TTL 设定,生存时间记录字段,它以秒未单位定义该资源记录中的信息存放在告诉缓存中的时间长度。接着是SOA 的配置,SOA 是Start of Authority
的意思。代表master (主DNS 服务器)/slave (从DNS 服务器)相关的认证、授权资料。 不论你的DNS 系统有没有设定master /slave
的架构,都需要含有这个设定才好。SOA 后面共带有三个参数,所以该行为:
[zone] IN SOA [主机名][管理员email ] ([ 五组更新时间参数])
每个设定项目含义: 主机名: 就是master DNS 的主机名称,通常填写本身主机名即可。还是要注意那个小数点“. ”的存在与否!非常重要!管理员email : 本来应该是"root @localhost ." 的,不过因为@ 已经被作为特殊代号(zone),所以就用小数点来取代,因此email 就成为"root .localhost ."
! (五组数字): 这五个数字分别代表serial , refresh, ret ry, expire, ttl。Serial
,: 只是一个序号,但这个序号可被用来作为
slave 与master
更新的依据。举例来说,master
序号为100 但slave 序号为90 时,那么这个zone
file 的资料就会被传送到slave
来更新了。由于这个序号代表新旧资料,通常我们
建议你可以利用日期来设定!举例来说,上面的资料是在2006/10/20 所写的第一次,所以可以用2006102001 作为
序号代表!Refresh : 除了根据Serial
来判断新旧之外,我们可以利用这个refresh(更新) 命令slave 多久进行一次主动更新;Retry : 如果到了Refresh 的时间,但是slave
却无法连接到master
时,那么在多久之后,slave 会再次的主动尝试与主机连线;
Expire
: 如果slave
一直无法与master 连接上,那么经过多久的时间之后,则命令
slave
不要再连接
master
了!也就是说,此时我们假设
master DNS
可能遇到重大问题而无法上线,则等待系统管理员处理完毕后,
再重新来到slave DNS 重新启动bind
吧!
Minimun
: 类似TTL ,当没有指定ttl 资源记录时就会用这个值作为默认的ttl 值。另外,这几个数字的大小是有限制的: Serial <= 2^32 = 4294967296
Refresh >= Retry *2 Refresh Retry < Expire Expire>= Retry * 10 Expire >= 7Days
请注意:SOA 记录中这对
“() ”符号之第一个“(”括号一定要和SOA 写在同一行,而不能用
Enter
断行到下一行去, 而且其左边最好有一个空格键或tab 建。而最后一个
“) ”括号也不能写在注解符号“;”的右边。置DNS 的RR
记录档,其格式要求非常严格,我们丝毫不能掉以轻心。比方说:如果句子不是以空格键、Tab 键、或注解符号(;)开头,也不在SOA 的“() ”之内,则表示要定义一个“新记录项 (Entry) ”;如果句子是以空格键或tab
键开始的话,其设置被视为上一个“记录项”的内容。
接下来编辑正向区域配置文件www.myhello-world.net : #vi
hello-world-wh.com.zone $TTL 86400
@
IN
minimum
IN
,SOA
hello-world-wh.com.
root .h ello-world-wh.com.
42
; refresh
15M
; Serial
3
retry
1W
expire
1D )
NS
hello-world-wh.com. 位置应该注意,应按照格式书写,否则会有意想不到错误://IN 的 IN MX 0 mail .hello-world-wh.com.//IN 的位置应该注意,应按照格式书写,否则会有意想不到错误:
www
IN
A
A
A
10.1.0.23
IN
10.1.0.23
ftp
IN
10.1.0.23
这里的配置项中:
NS 表明负责hello-world-wh.com 域的Name Server 是hello-world-wh.com 这台主机 MX 记录标明发往hello-world-wh.com 域的邮件由mail .hello-world
wh.com 服务器接收MX 后面的0 表示优先级,数字越小,优先级越大。A 记录标明了IP 地址和域名之间的对应关系
4 修改/etc/resolv.conf文件,也就是添加主DNS 服务器#vi
/etc/resolv.confnameserver 10.1.0.23
,注意:在添加主DNS 服务器IP 后,要记得将以前的nameserver 配置注释掉,注释是采用符号“#”进行注释。
5 测试正向区域文件和反向解析文件
(1)测试正向区域文件(文件没有语法错误则显示OK ,有错误则显示错误内容) #named-checkzone hello-world-wh.net /var/named/hello-world-wh.com.zone
(2)测试反向解析文件(如果没有语法错误则显示OK ,有错误则显示错误内容) #named-checkzone
hello-world-wh.com /var/named/0.1.10.in-addr.local
6 启动bind 服务#service
named start
如果在后面显示OK ,表示正常启动了,否则会显示错误信息。
7 设置Linux 防火墙
前面在配置文件named.conf 中,我们设置的端口号为53 ,有时为了防止防火墙阻止访问53 端口,因此我们有必要将防火墙关闭或者是将53 端口设置为防火墙的信任端口。具体设置步骤如下:运行命令:#set up
这时会弹出一个对话框,由于是防火墙设置,因此选择“firewall Configuration”,然后按“Tab ”键切换到“Run Tool” -->回车-->“Security Level ”选项要在” Enable ”前面按一下” Tab ”键-->“SelLinux ”选项要选择” Disabled ” -->按一下” Tab ”键-->选中” Customize ” ->弹出新对话框-->在” Other Port ”框栏目中输入” 53:TCP 53:UDP” ->“OK ” -->返回上一个对话框-->“OK ” -->对话框自动关闭,防火墙配置完成。
3.3
测试DNS
服务器
1 测试DNS 服务器是否配置成功有以下几种方式:
(1)键入host 命令如下:#host
www.hello-world-wh.com
如果域名成功解析,则会显示:www.hello-world-wh.com has address 10.1.0.23
如果域名输入错误,则会显示:Host [错误域名的名称] not
found:
如果域名服务(service named)没有开启,则会显示:;;connection timed out; no servers could be
reached
(2)第二种测试的方式是使用测试命令nslookup, 这个命令在Windows 与Linux 环境下是通用的,屡试不爽。
#nslookup>www.hello-world-wh.com Server :10.1.0.23 Address :10.1.0.23#53
Name: www.hello-world-wh.com Address : 10.1.0.23
(3)dig 命令测试#dig
www.hello-world-wh.com
2 实验检测
在另外一台机器中,设置与DNS 服务器(10.1.0.23)处于同一网段的IP 地址,且要保证两者之间能够ping 通,如设置IP 为:10.1.0.141 ;子网掩码为:
255.255.255.0 ;网关:10.1.0.1;
然后最重要的就是要保证首选DNS :10.1.0.23
注意事项:
,1. 在进行的URL 命名时应该尽量避免名字中存在“_”(下划线),在bind9 中会出
现异常。
2. 在编辑配置文件时候应该尽量按照模板的格式编辑,在空格和冒号的使用应该尽量注意!
3. 在安装bind 时,要查看是否安装了chroot ,如未安装应该把解析文件存在/var/named 如果安装了,把其存在/var/named/chroot/var/named 中!
4. 在配置named.conf 时候,可以直接把named.rfc1912.zones 文件的配置项添加到主配置文件中,无需在named.rfc1912.zones 中添加,因为在named.conf 中已经把named.rfc1912.zones 文件include 。
版权所有. 2010 hello-world 3 内部保密