早期的动态地址分配协议未bootp,地址一旦发放给客户机,就与客户机MAC永久绑定。这是为了适应早期硬件资源有限,众多客户机上无硬盘,硬盘和操做系统均位于服务器上,服务器上经过把ip和硬盘OS一一对应分配给客户机来完成工做的场景。bash
后来硬盘等硬件愈来愈便宜,客户机上也能够有本身的硬盘,不用放到服务器上集中管理,服务器只须要作分配地址的事就能够了。这时的ip地址反而成为了紧俏资源,把ip地址都与客户机永久绑定太浪费。因而在新的协议DHCP中就加入了租约的概念,即客户机能够动态获取ip地址,可是有使用期限的,超过了使用期限,分配出去的ip地址就会被服务器回收到地址池,而后又能够从新租给其余人。服务器
1.安装软件dom
dhcp-common.i686 这是dhcp的客户端包,通常会随系统一并安装 dhcp.i686 这是dhcp的服务端包,要手动安装 dhcp-devel.i686 这是dhcp的开发包,能够不用安装
安装服务包后会生成一些文件,其中有几个比较重要操作系统
/etc/dhcp/dhcpd.conf 主配置文件,但默认里面只有注释信息,没有实质内容 /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample 配置文件样例 /var/lib/dhcpd/dhcpd.leases 保存了租约信息 /etc/rc.d/init.d/dhcpd 服务脚本 /etc/sysconfig/dhcpd 服务脚本的配置文件
2.主配置文件日志
option domain-name "abc.com"; #定义搜索域 option domain-name-servers 172.16.0.1,8.8.8.8; #全局域名服务器,这里指定的信息会自动写入到客户机的/etc/resolv.conf中 default-lease-time 600;#租约默认期限 max-lease-time 7200; #租约最长期限 log-facility local7; #local7在/etc/rsyslog.conf中定义,表示记录日志文件位置 subnet 172.16.0.0 netmask 255.255.255.0 {#地址池定义,只要同时有网段/掩码/地址池就能够正常使用了 range 172.16.0.10 172.16.0.20; #地址池 range dynamic-bootp 172.16.0.10 172.16.0.20;#专为bootp提供的地址池,能够没有 option broadcast-address 172.16.0.255; #为客户机指广播地址 option routers 172.16.0.1; #为客户机指定默认网关地址,网关必须能跟本地主机直接通讯,因此这个地址必须与地址池在同一个网段,不然不会应用到客户机上 } host hahaha {#网卡绑定,名称能够随意指定。这一堆均可以没有 hardware ethernet 08:00:07:26:c0:95; #须要绑定ip的客户机MAC地址 fixed-address 172.16.0.100; #与上一行MAC地址绑定的ip地址 filename ""; #在自动安装系统时,用于指定kickstart文件存放位置,能够不要 }
3.启动服务code
dhcp服务端默认监听在udp的67号端口,客户端程序则默认监听在udp的68号端口。router
启动服务前必须为服务所在主机指定一个静态ip。并且服务主配置文件中,必须指定一个与本身ip同网段的地址池,不然服务会拒绝启动。server
169.254.0.0/16网段是在客户端获取动态地址失败后,客户机本身指定默认使用的网段,后面两位随机肯定。ip
只要从新启动客户机的network服务就能够自动从新从服务端请求ip。ci
在客户机上中止network服务后,能够用dhclient命令来手动获取地址(它就是客户端程序,默认监听在udp/68端口上)
dhclient eth0