一、引言
DHCP全称Dynamic Host Configure Protocol,动态主机配置协议,用于向网络中的计算机分配IP地址及一些TCP/IP配置信息。DHCP提供了安全,可靠且简单的TCP/IP网络设置,避免了TCP/IP网络地址的冲突,同时大大降低了工作负担。
二、DHCP工作流程
DHCP采用C/S架构,即Server/Client,它的简要工作流程如下
1、client:dhcp discover
客户端向局域网内广播dhcp discover报文,查找dhcp服务器
2、server:dhcp offer
服务器端接受到请求报文后会向客户端发送dhcp offer包,先根据客户端的MAC地址来查找决定是为此客户端分配新的IP地址还是续租已经分配给客户的IP,并向客户端发送带有租约的dhcp offer包
3、client:dhcp request
由于局域网内可能有不止一台dhcp服务器,客户端依然使用广播的形式来告知各dhcp服务器它选择的dhcp服务器,没有被选中的dhcp服务器会收回ip租约
4、server:dhcp ack
被选中的服务器会回送dhcp ack包,并告知客户端租约的期限,同时开始租约计时
默认情况下,客户端会在租约快到期前向dhcp服务器提交续租申请,注意,有3个重要的时间点
50%: 租赁时间达到50%时来续租,向dhcp服务器发出dhcp request请求,如果dhcp服务没有拒绝,则回应dhcp ack信息。当dhcp客户端收到该应答信息后,就重新开始新的租用周期 75%: 如果在租约时间的50%还没有联系到dhcp服务器,在租约期的75%的时候会再次联系dhcp服务器 87.5%: 如果期间dhcp server没有回应,等到租约期的87.5%时,主机会再一次发送一次请求,这时也会尝试发送新的dhcp请求
简要流程图如下:
三、DHCP安装配置
DHCP安装比较简单
[root@node2~]# yum install dhcp [root@node2~]# cp /usr/share/doc/dhcp-version_number/dhcpd.conf.example /etc/dhcp/dhcpd.conf #复制模版
修改模版,如下:
option domain-name "lurker.com"; option domain-name-servers 172.16.0.1; default-lease-time 43200; max-lease-time 86400; log-facility local7; subnet 172.16.0.0 netmask 255.255.0.0 { range 172.16.100.33 172.18.100.35; }
在客户端用dhclient命令动态获取ip资源
注意:首次启动dhcp服务器时,如果没有dhcpd.leases文件就会失败,如果没有该文件,可使用命令touch /var/lib/dhcpd/dhcpd.leases生成该文件。如果同一服务器还作为dns服务器运行bind,那么就不需要执行这一步操作,因为named服务会自动检查该文件。
例1、最小的DHCP服务
#server(172.16.47.101)端配置 option domain-name "lurker.com"; option domain-name-servers 172.16.0.1; default-lease-time 43200; max-lease-time 86400; log-facility local7; subnet 172.16.0.0 netmask 255.255.0.0 { range 172.16.100.40 172.18.100.50; }
重启服务:systemctl restart dhcpd;在客户端获取ip地址:dhclient -d
注意:因为该客户端已经从服务器获取过ip,所以运行dhclient -d后,它会向原dhcp服务器请求续租,所以会先有2个DHCPREQUEST,但是原来的dhcp服务器的地址池已经发生变化,里面没有了它使用的这个ip,所以它就只能再重新DHCPDISCOVER
例2、指定路由
#server(172.16.47.101)端配置 option domain-name "lurker.com"; option domain-name-servers 172.16.0.1; option routers 172.16.100.100; default-lease-time 43200; max-lease-time 86400; log-facility local7; subnet 172.16.0.0 netmask 255.255.0.0 { range 172.16.100.40 172.18.100.50; }
重启服务:systemctl restart dhcpd;在客户端重新获取ip地址:dhclient -d
route -n查看路由,如果没有生效,请重启网络服务
注意:可以在全局和subnet中同时指定路由和domainserver,但是subnet中设定的优先级更高
例3、在subnet中指定domainserver
#server(172.16.47.101)端配置 option domain-name "lurker.com"; option domain-name-servers 172.16.0.1; option routers 172.16.100.100; default-lease-time 43200; max-lease-time 86400; log-facility local7; subnet 172.16.0.0 netmask 255.255.0.0 { range 172.16.100.40 172.18.100.50; option domain-name-servers 172.16.100.60; }
重启服务:systemctl restart dhcpd;在客户端重新获取ip地址:dhclient -d
例4、不希望dhcp服务更改/etc/resolve.conf文件
在client端修改/etc/sysconfig/network-scripts/ifcfg-eno16777736里的PEERDNS=no
例5、固定分配IP给指定主机
#server(172.16.47.101)端配置 option domain-name "lurker.com"; option domain-name-servers 172.16.0.1; option routers 172.16.100.100; default-lease-time 43200; max-lease-time 86400; log-facility local7; subnet 172.16.0.0 netmask 255.255.0.0 { range 172.16.100.40 172.18.100.50; } host lurker{ hardware ethernet 00:0c:29:d9:db:32; fixed-address 172.16.100.33; }
重启服务:systemctl restart dhcpd;在客户端重新获取ip地址:dhclient -d
注意:绑定的IP不能和IP地址池里的IP重复
原创文章,作者:Lurker,如若转载,请注明出处:http://www.178linux.com/66216