当局域网中有大量的主机时,如果逐一为每台主机手动配置IP地址、默认网关、DNS服务器地址等网络参数,显示会非常费力。而DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)服务器的应用,正好可以解决这个问题。
1-)DHCP协议的工作方式:
(1)客户端:利用广播发送DHCP服务器的请求数据包
若客户端网络设置DHCP自动获取IP,则当客户端开机或者是重新启动网卡时,客户端主机会发送出查找DHCP服务器的UDP数据包给所有物理网段内的计算机。此数据包的目标IP会是255.255.255.255(广播),所以一般主机收到这个数据包后会直接丢弃,但局域网内若有DHCP服务器的话,则会进行后续行为。
(2)服务器端:提供客户端网络相关的租约以供选择
DHCP服务器在收到客户端的请求后,会针对这个客户端的硬件地址(MAC)与本身的设置数据来进行以下工作:
到服务器的日志文件中查找该用户之前是否曾经组用过某个IP,若有且该IP目前无人使用,则提供该IP给客户端
若配置文件针对MAC地址提供特定的固定IP时,则提供该固定IP给客户端
若不符合以上两个条件时,则随机选取当前没有使用的IP参数给客户端,并记录下来
总之,服务器会针对客户端的要求提供一组网络参数租约给客户端选择,由于此时客户端尚未有IP,因此在服务器端响应的数据包信息中,主要是针对客户端的MAC来给予回应的(单播响应客户端)。此时服务器会保留这个租约等待客户端的回应。
(3)客户端:决定选择DHCP服务器提供的网络参数租约并向服务器确认
由于局域网内并非仅有一台DHCP服务器,但客户机仅能接受一组网络参数租约。 若网络中有多台DHCP服务器响应客户端,则哪台DHCP服务器先响应客户端,客户端就会接受这台DHCP服务器提供的网络参数。当决定使用此服务器提供的网络参数租约后,客户端便开始使用这组网络参数来设置自己的网络环境。此外,客户端也会发送一个广播数据包给所有物理网段的主机,告知已经接受该服务器的的租约。此时若有两台以上的DHCP服务器时,则这些没有被接受的服务器会收回该IP租约。被接受的服务器会进行以下动作
(4)服务器端:记录该次租约行为并向客户端确认
当服务器收到客户端的确认选择后,服务器会回送确认的响应数据包,并且告知该客户端这个网络参数租约的期限,并且开始租约倒计时。
CentOS下配置主从DNS服务器以及DHCP下的DDNS
SUSE Linux 11 pxe+DHCP+tftp+ftp 无人值守安装
2-)关于租约期限:
除非客户端关闭网络接口、重新启动、关机等脱机行为,这个时候server端就会将该IP收回,并放到server的备用区中,以便日后使用。
既然有租约期限,那么是否代表在某个时间点还需手动获取新的IP呢?不需要的,目前的DHCP客户端程序大多会主动依据租约时间去重新申请IP(renew)。
一般来说,假设租约期限为T小时,那么客户端会在0.5T时主动向DHCP服务器发出重新要求网络参数的数据包(直接从第3步开始,不会再次广播查找DHCP服务器),若这次请求没有成功,则会在0.85T时再次发送数据包一次。 正因如此,服务器会启动Port67监听客户端请求,而客户端会启动Port 68主动向服务器请求。
3-)配置DHCP服务器:
先执行“rpm –q dhcp” 命令查看系统中是否已经安装了dhcp软件,若未安装则安装吧
安装完毕后,开始建立配置文件 /etc/dhcpd.conf(RHEL5),该文件中默认并不包含有效的配置,需管理员手动建立。我们可以根据文件范本来建立新的dhcpd.conf文件。需要注意的是:在RHEL6.X中dhcp的配置文件名为/etc/dhcp/dhcpd.conf(RHEL6),会在后续介绍。
3-1)/etc/dhcpd.conf文件的构成:
1-)全局设置(会影响整个dhcp服务器)
假设dhcpd管理的只有一个子网的局域网,那么除了IP之外的许多网络参数就可以放在全局设置的区域中,包括租约期限、DNS主机的IP地址、路由器的IP地址及动态DNS(DDNS)更新的类型等。当固定IP及动态IP内没有定义到某些设置时,则以全局设置为准。
default-lease-time 时间:默认的租约时间,单位秒,表示客户机租约这个IP的默认时间
max-lease-time 时间:最大租约时间,单位秒,表示允许客户机请求的最大租约时间
option domain-name “域名”:默认搜索区域,如果在/etc/resolv.conf里面设置了一个search google.com,这表示当你要查找主机名时,DNS系统会主动帮你在所要查找的主机名后面加上这个域名后缀。
option domain-name-serversIP1,IP2:为客户机指定解析域名时使用的DNS服务器地址,该配置选项可以修改客户端的/etc/resolv.conf文件,即nameserver后面接的DNS IP,多个DNS地址以逗号分隔
ddns-update-style 类型:因为DHCP客户端所取得的IP通常是一直变动的,所以某台主机的主机名与IP的对应就很难处理。此时DHCP可以通过ddns来更新主机名与IP的对应关系。可设为none
ignore client-updates:与上一个设置值有关,客户端可以通过dhcpd服务器来更新DNS相关的信息。不过在这里我们不谈这个,因此将它设置为ignore(忽略)了
option routers 路由器的地址:设定路由器的IP地址,routers记得需要加s才对!
2-)subnet网段声明
一台DHCP服务器可以为多个网段提供服务,因此subnet网段声明必须有而且可以有多个。
那么上图括号内还有什么参数呢?那就是到底IP是固定的还是动态的。
range IP1 IP2:在这个局域网中,给予一个连续的IP地址段用来发放给客户端使用,IP1 IP2指的是分配给客户端使用的IP范围。
host 主机名{ … }:这个host就是指定固定IP对应到MAC的设置值,主机名可以自行设置,在大括号内需要指定MAC与固定的IP了。那么这两个值怎么设置呢?看看下图吧