DHCP学习笔记
DHCP:动态主机配置协议工作在应用层的局域网网络协议使用UDP报文进行数据传输,通常在大型局域网中使用,主要用于集中管理分配网络资源提升地址使用率
DHCP的工作原理
1、DHCP客户端进行IP请求:使用0.0.0.0的地址作为源地址,使用255.255.255.255作为目标地址,使用UDP 67端口作为目的端口来广播请求IP地址信息。广播信息DHCP Discover中包含了DHCP客户机的MAC地址和计算机名,以便使DHCP服务器能确定是哪个客户机发送的请求
2、DHCP服务器响应请求:DHCP服务器收到请求后检查自己的资源池中是否有可用的IP地址,如果有将此IP做上标记后 发送DHCP offer 广播包;其中包含客户端MAC地址、DHCP提供的合法IP地址、子网掩码、默认网关、租约期限、DHCP的MAC地址和IP,以DHCP服务器自己的IP地址为源地址、使用255.255.255.255为目标地址,使用UDP68端口作为源端口进行广播
3、客户端机选择IP:客户机从接收到的第一个DHCP OFFER消息中选择IP地址在客户机选择IP的过程中,虽然客户机选择了IP地址,但是还没有配置IP地址,而在一个网络中可能有几个DHCP服务器,所以客户机仍然使用0.0.0.0的地址作为源地址,使用255.255.255.255作为目标地址,使用UDP 67端口作为目的端口来广播DHCP REQUEST信息
4、DHCP服务器确认租约:虽然服务器确认了客户机的租约请求,但是客户机还没有收到服务器的DHCPACK消息,所以服务器仍然使用自己的IP地址作为源地址,使用255.255.255.255作为目标地址,使用UDP 68端口作为源端口来广播DHCP ACK信息。当客户机收到DHCP ACK消息时,它就配置了IP地址,完成了TCP/IP的初始化。
注意:如果DHCP客户机无法找到DHCP服务器,它将从TCP/IP的B类网段169.254.0.0/16中挑选一个IP地址作为自己的IP地址,继续每隔5分钟尝试与DHCP服务器进行通讯,一旦与DHCP服务器取得联系,则客户机放弃自动配置的IP地址,而使用DHCP服务器分配的IP地址。
DHCP客户机收到DHCP服务器回应的ACK报文后,通过地址冲突检测(arp)发现服务器分配的地址冲突或者由于其他原因导致不能使用,则发送DECLINE报文,通知服务器所分配的IP地址不可用。
续租过程
DHCP客户机会在租期过去50%的时候,直接向为其提供IP地址的DHCP服务器发送DHCP REQUEST消息包。如果客户机接收到该服务器回应的DHCP ACK消息包,客户机就根据包中所提供的新的租期以及其它已经更新的TCP/IP参数,更新自己的配置,IP租用更新完成。如果没有收到该服务器的回复,则客户机继续使用现有的IP地址,因为当前租期还有50%。
如果在租期过去50%的时候没有更新,则DHCP客户机将在租期过去87.5%的时候再次向为其提供IP地址的DHCP服务器联系。如果还不成功,到租约的100%时候,DHCP客户机必须放弃这个IP地址,重新申请。如果此时无DHCP服务器可用,DHCP客户机会使用169.254.0.0/16中随机的一个地址,并且每隔5分钟再进行尝试。
DHCP部署
安装DHCP服务
yum -y install dhcp #DHCP服务软件包
yum -y install dhcp-common #DHCP命令软件包(默认已安装)
cp -a /usr/share/doc/dhcp-4.*.*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf #生成配置文件(/etc/dhcp/dhcpd.conf此文件默认为空)
将配置文件的前几个subnet声明注释掉。修改最后一个subnet声明
subnet 192.168.88.0 netmask 255.255.255.0{ #声明要分配的网段和子网掩码
range 192.168.88.3 192.168.88.254; #声明可用IP地址池
option domain-name "kernel.com"; #设置DNS域
option domain-name-servers 8.8.8.8; #设置DNS服务器地址
option routers 192.168.88.2; #默认网关的地址
default-lease-time 600; #默认租约(s)
max-lease-time 7200; #最大租约(s)
}
修改完成后重启DHCP服务
service dhcpd restart
同时重启客户端机网卡(将网卡配置改为DHCP自动获取模式)
ifdown eth0;ifup eth0
DHCP固定地址分配
获取客户端机MAC地址
arp -a
修改/etc/dhcp/dhcpd.conf添加如下字段
host fantasia{
hardware ethernet mac地址; #客户机的mac地址
fixed-address IP地址; #固定分配给客户机的ip地址(可以使用地址池以外的IP)
}
重启DHCP服务
service dhcpd restart
重启客户端网卡
ifdown eth0;ifup eth0
DHCP超级作用域
DHCP服务器可为单个物理网络上的客户端提供多个作用域租约地址
设置DHCP服务器的单臂路由所需要的子网卡
cp -a ifcfg-eth0 ifcfg-eth0:0 #编辑此文件,修改网卡名和IP地址即可
修改内核参数开启路由转发
vim /etc/stsctl.conf
net.ipv4.ip_forward=1 #找到此选项 修改为1
sysctl -p #刷新内核参数
修改/etc/dhcp/dhcpd.conf文件
注释掉所有的网段声明
shared-network public {
subnet 192.168.88.0 netmask 255.255.255.0{
option routers 192.168.88.10;
range 192.168.88.100 192.168.88.100;}
subnet 192.168.99.0 netmask 255.255.255.0{
option routers 192.168.99.10;
range 192.168.99.100 192.168.99.110;}
}
剩余内容全部删除
重启DHCP服务
service dhcpd restart
重启客户机网卡
ifdown eth0;ifup eth0