首页 > 代码库 > DHCP服务器的构建

DHCP服务器的构建



DHCP:Dynamic Host Configuration Protocol(动态主机配置协议)

服务器端监听在UDP/67进行客户端的响应

客户端监听在UDP/68向服务器端进行请求


当一个区域中有多个DHCP-Server时,则客户端发起请求后谁先响应就用谁的IP,具体过程如下:

  1. 客户端发起广播,向区域内所有DHCP服务器请求获取一个IP(依靠MAC地址进行表示自己)

  2. DHCP服务器收到后以单播响应给客户端一个IP、DNS、Gateway(这是客户端还没有IP,依靠MAC地址进行识别)

  3. 客户端使用最先给它响应的DHCP服务器分发的地址,并以广播的形式通知区域内所有DHCP服务器,用了谁的IP

  4. 客户端使用了哪个DHCP服务器的IP,哪个DHCP服务器就给予确认一下



具体的四个报文如下

client-->DHCPDISCOVERY 发现报文(广播)

server-->DHCPOFFER 提供报文(单播)

client-->DHCPREQUEST 请求报文(广播)

server-->DHCPACK 确认报文(单播)


而一般来说如果DHCP服务器分发的IP都是有时间限定的,比如定义IP有效时间为6小时,则客户端使用到只剩3小时时就必须进行IP续租,但是如果去续租的时候服务器没有给予响应,则会在等一半时间,到了只剩1.5小时是再去续租,如果一直到时间结束还没有续租成功则客户端会释放此IP(发一个release报文),重新申请一个IP


注:续租是以单播形式进行的


如果DHCP服务器和客户端没有在一个网段(中间有路由器相隔),则就不能直接分发IP,因为路由器不传递广播报文,这时可以将路由器配置成为一个DHCP中继器,让中继器收到客户端的广播后以单播的形式转发给DHCP服务器便可

  1. 客户端已广播形式发起请求(discovery)

  2. 路由器(有中继功能)收到广播后以单播形式转发请求

  3. DHCP服务器收到请求后以单播进行响应(offset)

  4. 路由器收到DHCP的响应后以广播形式转发给client

  5. client以广播形式确认用了哪个DHCP服务器的IP(request)

  6. 路由器以单播形式转发client的确认给DHCP服务器

  7. DHCP服务器以单播形式进行ACK确认(ACK)

  8. 路由器以单播形式将ACK确认发送给client


一般来说一个DHCP服务器可以为多个网段的客户机提供DHCP服务,但必须有一个地址池中的IP与DHCP服务器的网卡IP处在一个网段(表示为本地客户端提供DHCP服务)


此外DHCP服务器还能以标示MAC地址的方式,为某个特定主机提供特定的IP(此IP必须不在地址池中)

比如为你老板的主机单独分发IP


[root@node1 ~]# yum install dhcp -y

[root@node1 ~]# rpm -ql dhcp

/etc/dhcp/dhcpd.conf dhcp的配置文件

/usr/sbin/dhcpd 将服务器配置成为dhcp服务器用的

/usr/sbin/dhcrelay 将服务器配置成为中继器用的

/var/lib/dhcpd/dhcpd.leases 记录了哪个IP被续租了


[root@node1 ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample  /etc/dhcpd.conf

[root@node1 ~]# vim /etc/dhcpd.conf 



subnet 192.168.0.0 netmask 255.255.255.0 {


  range 192.168.0.128  192.168.0.254; 地址池范围为192.168.0.128-192.168.0.254,linux系统从最大的IP开始分配,而windows从最小的分配

  option domain-name-servers 192.168.1.1,192.168.1.2,192.168.1.3 ;指定三个DNS服务器(Linux最多指定三个)

  option domain-name "internal.example.org"; 指定/etc/resolve.conf中的搜索域

  option routers 192.168.0.1;指定默认网关,分发IP时直接将网关也指定

  option broadcast-address 192.168.0.23; 指定广播地址

 

 default-lease-time 600; 默认租约时间长为600秒

 max-lease-time 7200; 最大租约时间长为7200秒

}


host passacaglia { 依据MAC地址提供一个特定的IP

  hardware ethernet 0:0:c0:5d:bd:95; 为0:0:c0:5d:bd:95主机分发IP192.168.0.188

  fixed-address  192.168.0.188;

}



[root@node1 ~]# service dhcpd start 启动服务器


这样一个dhcp服务器就配置完成了分配的地址范围为192.168.0.128 到192.168.0.254;

DNS服务器为192.168.0.1,192.168.0.2,192.168.0.3

网关为192.168.0.1

本文出自 “11097124” 博客,请务必保留此出处http://11107124.blog.51cto.com/11097124/1900612

DHCP服务器的构建