1.客户端利用DHCP取得IP参数的过程:
1).客户端:利用广播数据包发送搜索DHCP服务器的数据包 当客户端开机或者重新启动网卡时,客户端住交会发出查找DHCP服务器的UDP数据包(DHCP discover包)给所有物理网段内的计算机,此数据包的来源IP为0.0.0.0目标IP是255.255.255.255 ,所以一般主机接收到此数据包后直接给予丢弃,若局域网有DHCP服务器则进行后续动作。 2).服务器端:提供客户端网络相关的租约等以供选择 DHCP服务器接收到客户端的要求后,会针对客户端的MAC与本身的设置进行如下动作(发送DHCP offer包): ----到服务器的日志文件中查找该用户之前是否曾经租用过某个IP,若有且该IP目前无人使用,则提供该IP给客户端; ----若配置文件针对该MAC地址提供特定的固定IP时,则提供固定IP给客户端; ----若不符合上述两个条件,则随机选取当前没有被使用的IP参数给客户端,并记录这个租约等待客户端的回应。 3).客户端:决定选择DHCP服务器提供的网络参数并向服务器确认(DHCP request包): 由于局域网中可能并不只是一台DHCP服务器,但客户端仅能接受一组参数(一般采用先到先用的原则)。当 Client 端接收到响应的讯息之后,Client 端也会对发送一个广播数据包给所有物理网段的主机,告知已经接受该服务器的租约。其他没被接受的服务器则收回IP租约。同时,会以 ARP 封包在网域内发出讯息,以确定来自DHCP 主机发放的 IP 并没有被占用!如果该 IP 已经被占用了,那么 Client 对于这次的DHCP 信息将不接受,而将再次向网域内发出 DHCP 的需求广播封包;若该 IP 没有被占用,则client 可以接受 DHCP 主机所给的网络的参数,那么这些参数将会被使用于 client端的网络设定当中。 4).服务器端:记录这次的租约行为,并向客户端发送想要数据包确认(DHCP ACK包) 当服务器端收到客户端确认的选择后,服务器会会送确定的响应包,并告知这个网络参数租约的期限,并开始计时。那么该租约何时回到期而被解约?有如下几个情况: ----客户端脱机:关闭网络接口(ifdown),重新启动(reboot),关机(shutdown)等,都算是脱机,这时Server就会将该IP回收,并防止Server的备用区。 ----客户端租约到期:当客户端使用的IP到达期限规定的时间,而没有重新提出DHCP的申请时(一般客户端会在租约的1/2,3/4的时间点上向服务器端提出继续使用该IP的申请),Server会将该IP回收。但客户端可以向DHCP再次要求分配IP。 2.一个局域网的DHCP服务器设置的例子 ----/etc/dhcp/dhcpd.conf #整体的环境设定 ddns-update-style none; //不要更新DDNS的设置 ignore client-updates; //忽略客户端的DNS更新功能 default-lease-time 259200; //默认租约时间,以秒计算,3天 max-lease-time 518400; //最大租约时间,6天 option routers 192.168.1.1; //默认路由 option domain-name "luyx30.no-ip.org"; //给予一个域名 option domain-name-servers 119.233.255.229,58.22.96.66; //这个设定会修改/etc/resolv.conf文件内容 ##关于动态分配的IP subnet 192.168.1.0 netmask 255.255.255.0{ range 192.168.1.100 192.168.1.200; host lulu.luyx30.no-ip.org { hardware ethernet 00:16:6F:0A:7B:8D; //客户端网卡MAC地址 fixed-address 192.168.1.30; //给予固定的IP地址 } } ----由于存在多个网卡,所以在CentOS5.X以前需要做一下设置: ####/etc/sysconfig/dhcpd DHCPDARGS="eth0" ----放行防火墙规则,启动服务器,并观察日志文件 /etc/init.d/dhcpd start tail -n 30 /var/log/messages ----检查服务器的租约文件 cat /var/lib/dhcpd/dhcpd.leases ----DHCP客户端设置 1).在网卡设置中加入以下设置:BOOTPROTO=dhcp 2).查看客户端租约的信息:cat /var/lib/dhclient/dhclient-eth0.leases 3.使用ether-wake实现远程自动开机 ----需要BIOS和网卡及主板支持网络唤醒的功能 ----需要主机接上网线,且电源也是接通的 ----ether-wake -i eth0 00:16:6F:0A:7B:8D