Linux下DHCP和DNS服务器的架设
关键词: Linux下DHCP和DNS服在网络中架设DHCP服务器,不但可以解决IP地址不够的难题,而且可以简化网络配置,使网络管理人员从繁杂的网络维护中脱身而出;而DNS服务器则是一个网站可以通过域名方式被正常访问的基础。它们都是Linux网络管理人员必须熟知的。
DHCP——让网络配置更轻松
DHCP协议提供了在TCP/IP网络上自动安全地分配IP地址的机制,实现IP地址的集中式管理。为了减轻管理和维护的负担或解决IP地址资源不足的问题,网络管理员通常在网络中架设一台DHCP服务器,以集中管理网络上计算机的IP地址和各种TCP/IP参数(如子网掩码、默认网关和DNS服务器等)。
下面笔者以Red Hat AS 3 Update 3操作系统为例,向大家讲解在Linux环境下,架设DHCP服务器的方法。
1.安装
请使用下面的命令检查系统是否已经安装了DHCP服务:
rpm -q dhcp
如果显示“package dhcpd is not installed”表示DHCP服务没有被安装,RedHat AS 3 Update 3的CD3的/RedHat/RPMS目录有DHCP服务的RPM安装包(dhcp-3.0pl2-6.14.1.i386.rpm)。装载光盘后使用下面命令安装:
rpm -ivh /mnt/cdrom/RedHat/RPMS/dhcp-3.0pl2-6.14.1.i386.rpm
图注 RedHat默认情况下并没有自动安装DHCP服务
2.配置
DHCP服务器的运行参数,是通过修改其配置文件dhcpd.conf来实现的。该文件通常存放在/etc目录下。由于dhcpd.conf是一个文本文件,我们可以使用任何文本编辑器如vi来编辑它。每次修改配置文件的设置后,需重新启动DHCP服务后才能使新的配置生效。
(1)dhcpd.conf配置文件的生成
DHCP服务安装之后并没有自动生成dhcpd.conf配置文件,我们需要手动生成。为了简化操作,我们借助配置文件的范本来完成。
cp /usr/share/doc/dhcp-3.0pl2/dhcpd.conf.sample /etc/dhcpd.conf图注 通过修改DHCP服务配置文件范本,可以快速完成DHCP服务的配置
(2)DHCP配置微调
DHCP服务配置文件范本包含了简单的例子,对于常用的语句,我们可以直接套用例子。下面以Sample文件为例讲述各项语句和选项的作用:
ddns-update-style interim;
#设置实现动态DNS的方法。
ignore client-updates;
#忽略客户端更新
subnet 192.168.9.0 netmask 255.255.255.0 {
声明用于分配给客户机的子网号和子网掩码,在Subnet内部的语句只对该subnet子网有效。
# --- default gateway
option routers 192.168.9.1;
设置默认网关的地址。
option subnet-mask 255.255.255.0;
设置客户机的子网掩码。
option nis-domain "online.local";
设置所属的域名。
option domain-name " online.local";
设置DHCP客户机所属的域名。
option domain-name-servers 192.168.9.1;
设置DNS服务的地址。
option time-offset -18000;
#本地时间与格林威治时间差(单位是秒)。
#option ntp-servers 192.168.9.1;
#option netbios-name-servers 192.168.9.1;
#设置网络时间服务器和WINS服务器的地址,默认并没有启用。
# --- Selects point-to-point node (default is hybrid). Don t change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
设置客户机的节点模式。1为 B节点,2为P节点,4为M节点8为H节点。
range dynamic-bootp 192.168.9.100 192.168.9.254;
设置可分配给客户机的IP地址范围,在subnet语句中,最少需包含一个 range 语句,如果IP地址不连续,可以使用多个range 语句
default-lease-time 21600;
设置IP地址缺省的租约期限(单位是秒)。如果租约申请没有指定时间,则使用该时间。
max-lease-time 43200;
设置IP地址最长的租约期限(单位是秒)。
# we want the nameserver to appear at a fixed address
host ns {
#设置为DNS服务器绑定静态IP地址
next-server marvin.redhat.com;
hardware ethernet 12:34:56:78:AB:CD;
fixed-address 207.175.42.254;
}
}
从Sample文件不难看出:在dhcpd.conf配置文件中语句必须以分号结尾;选项通常以option关键字开头;需用花括号将容器指令(如subnet和host)中的语句和选项包含起来。Sample文件中的语句和选项已经满足一般的应用需要,实际应用时,只需根据具体网络环境要求修改Sample文件中相应语句和选项即可。
·测试DHCP服务
编辑好配置文件dhcpd.conf后,执行命令“/etc/rc.d/init.d/dhcpd start”启动DHCP服务。
在工作站中设置为自动获取IP地址,工作站如果能正确获取服务器分配的IP地址和各项TCP/IP参数则表明DHCP服务器配置成功。
图注 客户端可以正确获得IP地址,表明DNS服务器配置正确
----====小技巧====----
Linux工作站设置自动获取IP地址的方法。修改文件/etc/sysconfig/network-scripts/ifcfg-eth0为以下内容:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
如果在RedHat下也可以使用命令“netconfig”,选择“使用动态IP配置(BOOTP/DHCP)”。
----====小技巧====----
3.管理
DHCP可以通过以下指令实现启动、停止和重新启动操作:
/etc/rc.d/init.d/dhcpd start |stop | restart
如果需要让DHCP服务随系统启动而自动加载,可以执行“ntsysv”命令启动服务配置程序,找到“dhcpd”服务,然后在其前面加上“*” 星号,确定即可。
4.查看IP地址租用信息
DHCP服务器将IP地址租用信息保存在/var/lib/dhcp/dhcpd.leases文件中,我们通过查看该文件得到IP地址的租用情况。
DNS服务器的架设
域名服务(DNS)是Internet和Intranet中重要的网络服务,通过它可以将域名解析为IP地址,从而使得人们能通过简单好记域名来代替IP地址访问网络。Bind是目前使用非常广泛的域名系统服务器软件,Linux和Unix平台下通常使用Bind来实现DNS服务,并且Internet上绝大多数DNS服务器都是使用该软件实现的。下面笔者以Red Hat AS 3 Update 3操作系统为例,向大家讲解在Linux环境下,架设DNS服务器的方法。
-----====小知识====----
什么是Bind?
Bind是Berkeley Internet Name Domain Service的简写,是实现DNS服务器的一种软件,它原本是伯克里大学(Berkeley)开设的一个研究生课题,后来变化发展成被广泛使用的DNS服务器软件。Bind经历了第四版、第八版和最新的第九版,第九版修正了以前版本许多的错误,以及提升了执行时的效能。目前Bind软件由ISC(Internet Software Consortium)这个非赢利性机构负责开发和维护。
-----====小知识====----
1.DNS服务器的安装
默认RedHat的安装程序会将Bind安装在系统上,请使用下面的命令检查系统是否已经安装了Bind:
rpm -q bind
如果系统没有安装Bind,则放入Red Hat AS 3 Update 3的CD3到光驱中,加载以后执行以下指令安装(DNS服务器的RPM安装包名为bind-9.2.4-EL3_10.i386.rpm)。
rpm -ivh /mnt/cdrom/RedHat/RPMS/bind-9.2.4-EL3_10.i386.rpm
2.DNS服务器的配置
在此笔者以架设一个包含有基本功能的DNS服务器为例,讲解DNS服务器的配置方法。
(1)建立主配置文件/etc/named.conf
Bind的主配置文件是named.conf,该文件通常存放在/etc目录下。named.conf里面并不包含DNS数据,它只包括Bind的基本配置,DNS数据文件一般存放在/var/named/目录下。named.conf文件的内容如下。
options {
directory "/var/named";
};
定义named要读写文件的路径,配置文件中后续的语句如果没指定文件的路径,默认为此处定义的路径。
zone "." {
type hint;
file "named.ca";
};
定义根区域“.”,其区域类型为“hint”(只有“.”区域才会使用“hint”类型)。该区域数据的文件名为named.ca。
zone "169boy.com" {
type master;
file "169boy.com.zone";
};
定义域169boy.com,其类型为“master”(即主区域),主区域中的DNS数据保存在区域数据中。区域数据文件为169boy.com.zone。
zone "9.168.192.in-addr.arpa" {
type master;
file "192.168.9.arpa";
};
定义反向解析域“9.168.192”,它负责将IP地址解析成对应的域名,要注意的是“.in-addr.arpa”是反向解析域的固定格式,不能改变。设定反向解析域时,需要将子网号反过来写,如子网“192.168.9.0/24”完整的反向解析域名为“9.168.192.in-addr.arpa”,子网“192.168.9.0/16”完整的反向解析域名为“168.192.in-addr.arpa”。type master说明其区域类型为主区域。file "192.168.9.arpa"定义保存区域数据的文件名。
zone "dzxx.edu.cn" {
type slave;
file "dzxx.edu.cn.zone";
masters {192.168.9.111;};
};
定义域“dzxx.edu.cn”,其域类型为slave(即从区域)。从区域中的DNS数据是通过复制主区域中的数据生成,设置从区域的目的是为了加快查询速度、提供容错和和均衡负载等。另外,还需要通过master指令指定主区域服务器的地址。Bind服务启动时会自动连接主区域服务器并复制其中的DNS数据。
zone "1.168.192.in-addr.arpa" {
type slave;
file "192.168.9.arpa";
masters {192.168.9.111;};
};
上述语句定义了一个从区域的反向域名解析。
图注 DNS服务器的主配置文件
从该例子不难看出named.conf中语句必须以分号结尾;使用花括号将容器指令(如options和zone)中的语句和选项包含起来;可以使用C语言中的“/*…*/”、C++的“//”和Shell脚本的“#” 注释语句作为注释。当我们理解了named.conf文件的结构后会发现其实它的语法再简单不过了。
(2)建立区域数据文件
从DNS服务的主配置文件我们可以看出, 169boy.com的区域配置文件为。可以参照以下说明进行配置:
$ttl 38400
定义允许客户端缓存来自查询的数据的默认时间,单位是秒。
169boy.com. IN SOA redhat.169boy.com. admin.169boy.com. (
“169boy.com.”代表区域名,也可以使用符号“@”来代替。“IN”代表类型是属于Internet类(固定的格式不可改变)。“SOA ”是Start of Authority(起始授权机构)记录的缩写。“redhat.169boy.com.”是指负责该区域的主服务器域名(请注意在地址末尾加上一个英文的句)。
末尾没加句点号“.”的名称都会被视为本区域内的相对域名,如“redhat.169boy.com”会当成“redhat.169boy.com.169boy.com”解析。 “admin.169boy.com.”是指负责该区域的管理员的E-mail地址,由于在DNS中使用符号“@” 代表本区域的名称,所以在E-mail地址应使用句点号“.”代替“@”。
小括号内的其他数字,代表含义如下表一所示,
表一
数字 含义 说明
1098259836 序列号 用于标识该区域的数据是否有更新,从区域服务器检查和比较该序列号进行区域复制,所以每次修改完主区域数据后应使这个数加1
10800 刷新间隔 定义从区域服务器隔验证其数据正确性的间隔
3600 重试间隔 从区域服务器无法在“刷新间隔”到期后与主区域服务器取得联系时,重试区域复制的间隔,通常该间隔应小于“刷新间隔”。
604800 过期时间 定义从区域服务器在该时间内一直不能与主服务器取得联系时,则放弃重试并丢这个区域的数据(因为这些数据有可能会失效或错误)。
38400 ) 最小默认TTL 定义允许客户端缓存来自查询数据的默认时间,如果文件开头没有“$ttl”语句则以此值为准
注意:小括号里的数字是SOA记录各种选项的值。“(”号一定要和 SOA 写在同一行。
169boy.com. IN NS redhat.169boy.com.
定义名称服务器(NS)记录,它指明该域名由哪个DNS服务器负责解析。
www.169boy.com. IN A 192.168.9.9
定义主机地址(A)记录,它作用是将 DNS 域名映射到IP地址。
redhat IN A 192.168.9.201 ;
定义主机地址(A)记录。
smtp IN CNAME www ;
定义别名(CNAME)记录。
169boy.com. IN MX 10 smtp.169boy.com.
定义邮件交换器 (MX) 记录,它指向一个邮件服务器的域名,用于电子邮件系统发邮件时,根据收信人的地址后缀来定位邮件服务器,10表示优先级,优先级数值较小的具有较高的优先级。
169boy.com. IN MX 20 redhat.169boy.com.
定义邮件交换器 (MX) 记录。
需要注意的是区域数据文件使用“;”符号注释,在这个文件中的“redhat”和“smtp” 主机号(末尾没有句点号)记录使用了相对名称,Bind会自动在其后面的“.169boy.com”。
(2)配置反向域名解析
/var/named/192.168.9.arpa文件的内容如下。
$ttl 38400
9.168.192.in-addr.arpa. IN SOA redhat.169boy.com. admin.169boy.com. (
1098259934
10800
3600
604800
38400 )
9.168.192.in-addr.arpa. IN NS redhat.169boy.com.
9.9.168.192.in-addr.arpa. IN PTR www.169boy.com.
201 IN PTR redhat.169boy.com.
该文件用于保存反向解析域的DNS数据,其结构与169boy.com.zone类似,大家现在应该很清楚了。反向解析域数据文件主要由PTR记录构成,PTR记录和A记录正好相反,是将IP地址解析成域名用的记录。注意最后一条记录只有主机号(末尾没有句点号),Bind会自动在其后面的“.9.168.192.in-addr.arpa.”。
(3)建立从区域文件
从区域文件是由Bind执行区域复制自动生成的,但为了Bind有在“/var/named”目录建立文件的权限,我们还要执行以下命令:
chown named.named /var/named
(4)建立/var/named/named.ca
“named.ca”是一个非常重要的文件,该文件包含了Internet域名解析根服务器的名字和地址。Bind接到客户端主机的查询请求时,如果在Cache中找不到相应的数据时会通过根服务器进行逐级查询。“named.ca”可以到ftp://ftp.rs.internic.net/domain/named.root下载,下载后请将其该名并复制到“/var/named/”目录下。
3.测试DNS服务
DNS服务配置完毕之后,我们还需要进行以下工作来测试其是否正确架设。
(1)启动DNS服务
配置好DNS服务后,执行以下命令启动DNS服务:
/etc/rc.d/init.d/named start
(2)配置域名
设置/etc/resolv.conf文件中内容如下:
domain 169boy.com
nameserver 127.0.0.1
(3)使用nslookup命令测试
我们可以借助“nslookup”程序来测试DNS服务器非常有用的工具,它可以使用它来查询DNS中的各种数据。
·测试SOA记录
执行以下指令测试SOA纪录:
nslookup -querytype=soa 169boy.com
如果显示的是以下信息,表明SOA配置正确无误。
图注 SOA配置正确
·测试NS记录
执行以下指令测试NS纪录。其目的是为了测试相应域的NS(Name Server)域名解析器是否被正确配置。
nslookup -querytype=ns 169boy.com
本利配置的169boy.com的NS服务器为redhat.169boy.com,所以显示信息应该如下:
169boy.com nameserver = redhat.169boy.com.
·测试A记录和CNAME记录
现在我们来测试一下本次配置实现的主机和别名解析。
nslookup www.169boy.com
如果可以正确显示www.169boy.com的IP地址,表示相应的A和CNAME纪录配置正确。
Name: www.169boy.com
Address: 192.168.9.9
·测试MX记录
在DNS服务器测试中,邮件纪录的测试是最重要的一环,执行以下指令测试其MX纪录。
nslookup -querytype=mx 169boy.com
图注 MX纪录配置正确
·测试PTR记录
反向域名解析应该进行如下测试:
nslookup 192.168.9.9
正常情况下,显示信息应该类似这样:
9.9.168.192.in-addr.arpa name = www.169boy.com.
4.DNS服务的管理
日常使用中,我们可以通过以下指令启动、停止或者重新启动DNS服务器。
/etc/rc.d/init.d/named start |stop| restart
如果需要让DNS服务随系统启动而自动加载,可以执行“ntsysv”命令启动服务配置程序,找到“named”服务,然后在其前面加上“*” 星号,确定即可。
5.域名直接解析和泛域名功能
域名直接解析和泛域名功能是DNS服务器中两个很实用的小功能。它们的具体含义,通过阅读下面的文章,你自然会明白。
(1)域名直接解析
在Internet中我们可以直接使用域名(不需要输入如www的主机名)访问许多网站的Web服务器(如baidu.com和china.com),即DNS服务器能直接将域名解析成IP地址。实现这个功能并不难,只需要在区域数据文件中加入一条记录,如:
169boy.com. IN A 192.168.9.9
或
. IN A 192.168.9.9
理解了句点号的作用就能明白这两条语句其实是一样的。
(2)泛域名
泛域名是指一个域名下的所有主机和子域名都被解析到同一个IP地址上。如使用命令“nslookup 169boy.china.com”会发现DNS服务器能解析169boy.china.com这个域名,而且在china.com前加上任意主机名DNS服务器都可以解析,这是因为负责解析china.com的DNS服务器使用了泛域名技术。实现这个功能也不难,只要在区域数据文件中加入一条记录,如:
*.169boy.com. IN A 192.168.9.201
或
* IN A 192.168.9.201
配置DHCP和DNS服务的内容还有许多,由于篇幅有限,这里就不为大家一一介绍了,有兴趣的读者可以到其官方网站(http://www.isc.org/)获取更多的信息。
【作者: Liberal】【访问统计:<script language="JavaScript" src="http://counter.blogchina.com/PageServlet?pageid=6160471&blogid=8561"></script>】【2007年03月14日 星期三 10:34】【注册】【打印】