Linux_Service—DHCP-Service

来源:互联网 发布:网络教育学历 编辑:程序博客网 时间:2024/05/21 19:47

Linux服务管理——DHCP服务

(Linux/CentOS)DHCP服务:

OS:CentOS 6.5 kernel:Linux 2.6.32-431.el6.x86_64 x86_64

DHCP简介与工作原理

什么是DHCP服务?它是干什么的?

DHCP服务(Dynamic Host Configuration Protocol:动态主机配置协议),任何一台计算机,要想与互联网上的主机进行通信,必须有一个地址(这个地址就相当于大家的身份证号一样,在互联网上是唯一的),这个地址就是IP地址。在大型的一个局域网中,如果所有的主机IP地址都是管理员一个个分配的话,那么管理效率是很低的,如果局域网内有人乱改IP地址的话,是很容易出现IP地址冲突的,情况复杂的话,会造成局域网中大面积的人上不了网。所以为了提高管理员的工作效率和内网IP地址冲突的情况下。DHCP服务就出现了,这个服务可以根据管理员的管理要求自动给局域网主机动态分配一个IP地址(当然也包括网关、DNS、子网掩码等等信息),有了这个服务,管理员的工作效率也就大幅度提升,也不会出现由于IP地址冲突造成的局域网主机上不了网的情况。

DHCP服务是如何工作的?


DHCP的两种租约方式:手动分配、动态分配

手动分配:手动分配比较好理解,就是由网络管理员通过dhcp服务器给你的机器指定一个IP地址,只要你的MAC地址不变,那么这个IP地址就一直归你使用,别人不能使用这个IP地址了。

动态分配:动态分配也挺好理解的,就是这个IP地址的主人是变化的,这个变化的周期是根据dhcp服务器的租约时间决定的。而不是像手动分配那样,地址是指定给一台机器的。

DHCP工作原理(租约过程):

客户端从DHCP服务器获得IP地址的过程叫做DHCP的租约过程。

IP地址的有效使用时间段称为租用期,租用期满之前,客户端必须向DHCP服务器请求继续租用。服务器接受请求后才能继续使用,否则无条件放弃。

默认情况下,路由器隔离广播包,不会将收到的广播包从一个子网发送到另一个子网。当DHCP服务器和客户端不在同一个子网时,充当客户端默认网关的路由器将广播包发送到DHCP服务器所在的子网,这一功能就称为DHCP中继(DHCP Relay)。

DHCP在工作过程中涉及到的报文种类及其作用如下:

1、DHCP DISCOVER:客户端开始DHCP过程的第一个报文,是请求IP地址和其它配置参数的广播报文。
2、DHCP OFFER:服务器对DHCP DISCOVER报文的响应,是包含有效IP地址及配置的单播(或广播)报文。
3、DHCP REQUEST:客户端对DHCP OFFER报文的响应,表示接受相关配置。客户端续延IP地址租期时也会发出该报文。
4、DHCP DECLINE:当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。
5、DHCP ACK :服务器对客户端的DHCP REQUEST报文的确认响应报文。客户端收到此报文后,才真正获得了IP地址和相关的配置信息。
6、DHCP NAK:服务器对客户端的DHCP REQUEST报文的拒绝响应报文。客户端收到此报文后,会重新开始新的DHCP过程。
7、DHCP RELEASE:客户端主动释放服务器分配的IP地址。当服务器收到此报文后,则回收该IP地址,并可以将其分配给其它的客户端。
8、DHCP INFORM:客户端获得IP地址后,发送此报文请求获取服务器的其它一些网络配置信息,如DNS等。
DHCP服务器向DHCP客户端出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。为了能继续使用原先的IP地址,DHCP客户端会向DHCP服务器发送续租的请求。

续租的工作过程:

1、在使用租期过去50%时刻处, 客户端向服务器发送单播DHCP REQUEST报文续延租期。
2、如果收到服务器的DHCP ACK报文,则租期相应向前延长,续租成功。如果没有收到DHCP ACK报文,则客户端继续使用这个IP地址。在使用租期过去87.5%时刻处,向服务器发送广播DHCP REQUEST报文续延租期。
3、如果收到服务器的DHCP ACK报文,则租期相应向前延长,续租成功。如果没有收到DHCP ACK报文,则客户端继续使用这个IP地址。在使用租期到期时,客户端自动放弃使用这个IP地址,并开始新的DHCP过程。

DHCP配置文件

DHCP服务默认是没有安装的,红帽系列Linux操作系统可以通过yum、rpm或者源码方式安装DHCP服务。

端口号:ipv4:udp67,udp68ipv6:udp546,udp547

服务名:dhcpd

主配置文件:/etc/dhcp/dhcpd.conf

模板文件:/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample(首次安装dhcp服务时,/etc/dhcp/dhcpd.conf配置文件是空的,需要将/usr/share/doc/dhcpd-*/dhcpd.conf.sample文件覆盖掉/etc/dhcp.conf)

配置文件解析:

# dhcpd.conf## Sample configuration file for ISC dhcpd## option definitions common to all supported networks...option domain-name "example.org";#设置dhcp服务器环境所在的域环境名称option domain-name-servers ns1.example.org, ns2.example.org;/*设置dhcp服务给客户端的dns地址*/default-lease-time 600;/*设定默认的租约时间,单位秒*/max-lease-time 7200;/*设定租约的最大时间,单位秒*/# Use this to enble / disable dynamic dns updates globally.#ddns-update-style none;/*设定dns的更新方式(如果dns和dhcp是结合配置,可以在dhcp下设定dns的动态更新)*/# If this DHCP server is the official DHCP server for the local# network, the authoritative directive should be uncommented.#authoritative;/*标识为权威服务器(如果一个局域网内有多台dhcp服务器存在,那么也只有权威服务器生效)*/# Use this to send dhcp log messages to a different log file (you also# have to hack syslog.conf to complete the redirection).log-facility local7;# No service will be given on this subnet, but declaring it helps the# DHCP server to understand the network topology.subnet 10.152.187.0 netmask 255.255.255.0 {}# This is a very basic subnet declaration.subnet 10.254.239.0 netmask 255.255.255.224 {  range 10.254.239.10 10.254.239.20;  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;}# This declaration allows BOOTP clients to get dynamic addresses,# which we don't really recommend.subnet 10.254.239.32 netmask 255.255.255.224 {  range dynamic-bootp 10.254.239.40 10.254.239.60;  option broadcast-address 10.254.239.31;  option routers rtr-239-32-1.example.org;}# A slightly different configuration for an internal subnet.subnet 10.5.5.0 netmask 255.255.255.224 {/*设置dhcp服务段的网络信息(subnet网络地址,netmask子网掩码)*/  range 10.5.5.26 10.5.5.30;/*设定用户分配给客户端的IP地址范围*/  option domain-name-servers ns1.internal.example.org;/*设定dhcp客户端的dns地址(多个dns服务器之间用,进行分隔)*/  option domain-name "internal.example.org";  option routers 10.5.5.1;/*设定dhcp客户端的网管地址*/  option broadcast-address 10.5.5.31;/*设定dhcp客户端的广播地址*/  default-lease-time 600;/*设定dhcp客户端的默认租约时间(单位:秒)*/  max-lease-time 7200;/*设定dhcp客户端的最大租约时间*/}# Hosts which require special configuration options can be listed in# host statements.   If no address is specified, the address will be# allocated dynamically (if possible), but the host-specific information# will still come from the host declaration.host passacaglia {  hardware ethernet 0:0:c0:5d:bd:95;/*指定目标主机的mac地址*/  filename "vmunix.passacaglia";/*启动文件名称(用于无盘工作站)*/  server-name "toccata.fugue.com";}# Fixed IP addresses can also be specified for hosts.   These addresses# should not also be listed as being available for dynamic assignment.# Hosts for which fixed IP addresses have been specified can boot using# BOOTP or DHCP.   Hosts for which no fixed address is specified can only# be booted with DHCP, unless there is an address range on the subnet# to which a BOOTP client is connected which has the dynamic-bootp flag# set.host fantasia {  hardware ethernet 08:00:07:26:c0:a5;/*指定目标主机的mac地址*/  fixed-address fantasia.fugue.com;/*为目标主机指定IP地址*/}# You can declare a class of clients and then do address allocation# based on that.   The example below shows a case where all clients# in a certain class get addresses on the 10.17.224/24 subnet, and all# other clients get addresses on the 10.0.29/24 subnet.class "foo" {  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";}shared-network 224-29 {  subnet 10.17.224.0 netmask 255.255.255.0 {    option routers rtr-224.example.org;  }  subnet 10.0.29.0 netmask 255.255.255.0 {    option routers rtr-29.example.org;  }  pool {    allow members of "foo";    range 10.17.224.10 10.17.224.250;  }  pool {    deny members of "foo";    range 10.0.29.10 10.0.29.230;  }}

DHCP服务的配置与实现

1.DHCP服务端配置

根据工作需要对/etc/dhcp/dhcpd.conf配置文件进行相应配置,修改完成后,将修改内容写入配置文件;

重启dhcp服务(rpm安装执行/etc/init.d/dhcpd restartservice dhcpd restart,源码包安装根据启动脚本进行重启);

此时dhcp服务端配置即为生效;

查看dhcp客户端数量(vi /var/lib/dhcpd/dhcpd.leases,如果有dhcp客户端接入,那么会在dhcpd.leases下生成相关记录)

2.DHCP客户端配置

修改/etc/sysconfig/network-script/ifcfg-eth0配置文件,设IP获取方式为dhcp;


重启客户端网络服务(/etc/init.d/network restartservice network restart);

客户端查看租约信息(vi /var/lib/dhclient/dhclient-eth0.leases)


0 0