下DHCP服务配置
1、DHCP服务器的安装
DHCP只需一个安装包可通过RPM或YUM安装
[root@rhel6-1 ~]# yum -y install dhcp
2、DHCP服务共有几个配置文件?
有两个相关文件:主配置文件是/etc/dhcp/dhcpd.conf。样例文件是/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample。还有一个/var/lib/dhcpd/dhcpd.leases是用来记录客户端租约时间的,这个不用配置。
命令只有一个:/usr/sbin/dhcpd
请注意:在rhel5中,主配置文件的位置是/etc/dhcpd.conf,rhel6有变化
3、/etc/dhcpd.conf从何而来?
DHCP的主配置文件为/etc/dhcpd.conf,但这个文件默认是空的,我们要自己动手创建。但其实DHCP软件在安装时都会附上dhcpd.conf.sample样本文件。可以将此文件复制为/etc/dhcpd.conf,再修改即可。
4、DHCP服务配置文件的格式要求
“#”:为批注符号,此行不执行
“;”:每一行结尾都要有“;”,这是最容易犯错的地方
“{}”:局部设置和主机设置的内容都要用{ }包括起来
option:option后面接的是像网关、DNS地址之类的参数
5、有多个网卡,如何指定提供DHCP服务的网卡
# vim /etc/sysconfig/dhcpd
DHCPDARGS=“eth1 eth0”
如果允许多个网卡可以写多个网卡名,以空格隔开
6、如何测试dhcpd.conf的语法是否正确
service dhcpd configtest
7、如何不使客户机接受DHCP服务器分配的DNS地址
默认情况下DHCP客户机会获得DHCP服务器分配的DNS地址,自动覆盖客户机掉/etc/resolv.conf的内容。但如果客户机不想使用DHCP服务器分配的DNS地址,想保留自己的DNS地址,可以修改ifcfg-eth0网卡配置文件内容,将
PEERDNS=no
如果想使用DHCP服务器分配的DNS,
PEERDNS=yes
8、客户机如何使用命令来获得IP地址
在windows里面可以使用ipconfig /release先释放当前地址,再使用ipconfig /renew重新获取IP地址
在linux系统里可以使用dhclient –d eth0来获得IP地址,按ctrl+c退出,分配的IP地址失效。如果直接使用dhclient命令,则分配的命令会在后台持续下去,分配的IP一直可用
9、如何查看DHCP中继监听的网卡有哪些
tail –f /var/log/messages
10、如何观察DHCPD服务是否启动?
运行netstat –tlunp
Udp 0 0 0.0.0.0:67 0.0.0.0:* 7294/dhcpd
因为dhcpd的端口是67,只要你能看到就证明服务已经可以正常运行
还可以查看日志文件
tail -n 30 /var/log/messages
11、如何观察DHCP客户机的DHCP服务器是何
图1
12、范例
DHCP配置文件分为三大部分:整体设置、局部设置和主机设置。整体设置部分就类似于windows里DHCP 服务器的服务器选项,局部设置就类似于作用域选项,而主机设置类似于保留选项。优先级为整体设置<局部设置<主机设置。一般我们将整体设置放在配置文件的最前面。
#下面是整体设置部分,对所有局部设置都生效
#其中多数配置也可以被设置在局部设置中,但作用范围也将只在局部设置中
ddns-update-style none;
#请注意此配置项是必须设置的
#动态DNS更新模式关闭,这个功能很少用,基本都是关闭
#总共有3个选项none,interim都表示不更新,ad-hoc表示点对点,无线网络的临时互联需求,通常很少设置。可参考http://www.doczj.com/doc/e94a3c9058eef8c75fbfc77da26925c52cc591e4.html /view/632724.htm
option domain-name “http://www.doczj.com/doc/e94a3c9058eef8c75fbfc77da26925c52cc591e4.html ”
#主机域名,注意引号不能省
option nis-domain
#默认搜索NIS区域为http://www.doczj.com/doc/e94a3c9058eef8c75fbfc77da26925c52cc591e4.html ,与/etc/resolv.conf配置文件设置有关
ignore client-updates
#忽略客户端更新,
default-lease-time 259200;
#默认租约为3天
option subnet-mask 255.255.248.0;
#子网掩码为255.255.248.0
max-lease-time 518400;
#最大租约为6天
option routers 192.168.1.1;
#设置默认路由为192.168.1.1
option broadcast-address 192.168.1.255;
#设置广播地址
option domain-name-servers 202.96.128.86,8.8.8.8;
#设置DNS地址(注意如果设置多个DNS地址,需要以“,”分隔开)
option ntp-servers 192.168.1.1;
#设置NTP服务器地址
option time-offset -18000;
#设定与格林威治时间的偏移值,UT(universal time)格林威治时间,亦称“世界时”。格林威治是英国伦敦南郊原格林威治天文台的所在地,它又是世界上地理经度的起始点。北京时间比格林威治时间要早8小时,所以各资料上介绍这里偏移时间设-18000秒即5个小时我一直不明白原因,可能只是例子吧。这项的作用就是保持客户机取得的时间与其当地时区保持一致。比如客户机在北京,而DHCP服务器在新德里,那么就需要设置这个偏移值来使北京的客户机取得的时间与北京时间保持一致。但实际上DHCP服务器与客户机不在同一时区的情况太少见了。基本上不用设置这一项。
option netbios-name-servers 192.168.1.1
#NetBios服务器地址
#下面是局部声明部分
range 192.168.1.100 192.168.1.200;
range dynamic-bootp 192.168.1.100 192.168.1.200;
#可分配IP范围是192.168.1.100-192.168.1.200
#range dynamic-bootp表示动态分配IP范围,有时也写成range
option domain-name-server 8.8.4.4;
#指定本网段的DNS地址为8.8.4.4
class “pxeclients”
#定义名为pxeclients的类
match if substring (option vendor-class-identifier,0,9) = “PXEClient” ;
#匹配客户机发送来的请求含有字符串0-9共10个字符是PXEClient才响应请求
#当有不同的客户机都来请求时,有些客户机只是单纯请求IP地址,有些客户机除获得IP外还要下载启动文件,这时可以设置class类来匹配不同的请求
match if substring (hardware, 1, 3) = 00:0C:29
#匹配客户机硬件地址前3个字段是00:0C:29
next-server 192.168.1.1或主机名;
#设定存放初始启动文档的主机地址,无人值守安装系统或无盘工作站会用
filename “linux-install/pxelinux.0” ;
#下载启动文档的文件名
#下面是主机声明部分
hardware ethernet 00-19-D2-44-E1-B9;
#指定客户机的网卡MAC地址
fixed-address 192.168.1.188;
#指定客户机获得静态IP
host sale-manager { hardware ethernet 00-19-D2-44-E1-B9; fixed-address 192.168.1.199; }
#销以上配置其实也可以不换行写
13、其它注意事项
如果启动DHCPD服务失败,可能的原因有:
1)90%都是配置文件中设置项有写错,比如少写字母,或少写个“;”号等
2)主机没有设置静态IP。这个我遇到过,主机本身就是动态获得IP时,服务是无法启动的。
3)DHCP服务器防火墙没有打开
Linux下的DHCP服务是从最后一个可用IP开始分配的,这一点与WINDOWS下的DHCP服务正好相反。
在进行DHCP中继实验时,关机添加网卡后启动主机时会遇到一个自检提示。这是linux系统发现新的硬件所出现的,可以此时按照提示进行配置,如IP等,也可以等到启动完成后再配置IP等。
14、DHCP中继
1、首先修改DHCP中继配置文件
[root@localhost ~]# vi /etc/sysctl.conf
改成
net.ipv4.ip_forward = 1
重新载入配置文件
[root@localhost ~]# sysctl –p
2、设定启用中继功能的网卡并指定DHCP服务器
[root@localhost ~]# vi /etc/sysconfig/dhcrelay
INTERFACES="eth0 eth1"
DHCPSERVERS="192.168.1.2"
重启DHCP中继服务
[root@localhost ~]# service dhcrelay start
注意:如果实验不成功,请将与DHCP中继服务器的网关指向DHCP服务器。
15、客户端分类(class)
客户端可以被分成一些类,并且按照所属的类被区别对待,这个区分可以由conditional 语句完成,或者由class语句中的match语句完成。可以指定某个指定的类或子类在同一时间内获得租约的全部客户端的限制数目,也可以基于客户端发送包的内容来自动指定子类。
基于条件的客户端分类,可以在class语句中指定一个matching表达式:
class "ras-clients" {
match if substring (option dhcp-client-identifier, 1, 3) = "RAS";
}
注意,不管使用match语句或者使用add语句(或者两者都使用)来给客户端分类,都必须首先声明用到的客户端的类。如果没有match语句也没有in-scope语句,类声明语句就会是这个样子:(这里有个矛盾,前面应该是in-scope,而不是add)
class "ras-clients" {
}
子类(SUBCLASSES)
除了类,也可能会用到子类subclass。子类是与通常的类有相同名字,但是又有特定的可以用哈希算法快速匹配的附加条件(submatch)。这本质上是速度问题――一个有五个match语句的类和一个类有五个子类的主要区别是使用子类速度更快,子类的工作方式如下:
class "allocation-class-1" {
match pick-first-value (option dhcp-client-identifier, hardware);
}
class "allocation-class-2" {
match pick-first-value (option dhcp-client-identifier, hardware);
}
subclass "allocation-class-1" 1:8:0:2b:4c:39:ad;
subclass "allocation-class-2" 1:8:0:2b:a9:cc:e3;
subclass "allocation-class-1" 1:0:0:c4:aa:29:44;
subnet 10.0.0.0 netmask 255.255.255.0 {
pool {
allow members of "allocation-class-1";
range 10.0.0.11 10.0.0.50;
}
pool {
allow members of "allocation-class-2";
range 10.0.0.51 10.0.0.100;
}
}
在子类声明语句中跟在类名后的数据是一个固定值,用来匹配类中的match语句。当类匹配完成后,服务器会计算match语句,然后在哈希表中查找结果。如果找到一个匹配,客户端就被认为是一个这个类和这个子类的成员。
子类Subclasses可以有也可以没有scope语句,在上面的例
评论0