其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做“双机热备”的。
1. 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
2. DHCP应当可以给用户分配永久固定的IP地址。
3. DHCP应当可以同用其他方法获得IP地址的 主机共存(如手工配置IP地址的主机)。
4. DHCP 服务器应当向现有的BOOTP 客户端提供服务。
DHCP缺点:
当网络上存在多个DNCP服务器时,1个DHCP服务器不能查出已经被其他服务器租出去的ip;
DHCP服务器不能跨路由器与客户机通信,除非路由器允许bootp协议转发
BOOTP协议:引导程序协议,可以让无盘工作站从中心服务器上获的ip地址,为局域网中的无盘工作站分配动态ip地址,并不需要为每个用户设置静态ip地址。
BOOTP协议缺点:在设定前需先获得客户端的硬件地址,而且,MAC地址与IP的对应是静态的。换言之,BOOTP非常缺乏动态性,若在有限的ip资源环境中,BOOTP的一对一性会造成非常客观的资源浪费。
DHCP可一说是BOOTP协议的增强版,它分为两部分,客户端与服务端,所有的ip网络设定数据都由DHCP服务器集中管理,并负责处理客户端的DHCP请求;而客户端则会使用从服务器分配下来的ip环境数据。
相比BOOTP,DHCP通过“租约”概念,高效且动态地分配客户端的tcp-ip设定,而且,作为兼容考虑,DHCP完全考虑了BOOTP Client的请求
DHCP服务器运行原理:
DHCP Client以广播的方式(目标ip:255.255.255.255)发出DHCP Discover报文。
所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文。
DHCP Offer报文中“Your(Client) IP Address”字段就是DHCP Server能够提供给DHCP Client使用的IP地址,且DHCP Server会将自己的IP地址放在“option”字段中以便DHCP Client区分不同的DHCP Server。DHCP Server在发出此报文后会存在一个已分配IP地址的纪录。
DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文。
DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址。
DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。
DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程。
DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配。
客户端DHCP DISCOVER后如果没有DHCP服务器响应,客户端会随机使用169.254.0.0\16(windows的自动专有IP寻址范围,也就是无法通过DHCP获得ip时,由系统自动分配的ip地址段)网段中的一个ip配置本机地址。
1、安装DHCP
[root@fan_host_30 Packages]# rpm -ivh dhcp-4.1.1-38.P1.el6.x86_64.rpm
warning: dhcp-4.1.1-38.P1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [100%]
1:dhcp ########################################### [100%]
[root@fan_host_30 Packages]#
[root@fan_host_30 Packages]# rpm -ivh dhcp-common-4.1.1-38.P1.el6.x86_64.rpm
warning: dhcp-common-4.1.1-38.P1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [100%]
package dhcp-common-12:4.1.1-38.P1.el6.x86_64 is already installed
[root@fan_host_30 Packages]#
2、DHCP配置文件
主配置文件范本文件:
[root@fan_host_30 dhcp-4.1.1]# ls /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample
/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample
主配置文件:
[root@fan_host_30 dhcp-4.1.1]# ls /etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd.conf
用范本主配置文件覆盖空的主配置文件:
[root@fan_host_30 dhcp-4.1.1]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
cp: overwrite `/etc/dhcp/dhcpd.conf'? y
[root@fan_host_30 dhcp-4.1.1]#
3、启动
[root@fan_host_30 dhcp-4.1.1]# service dhcpd restart
Starting dhcpd: [FAILED]
[root@fan_host_30 dhcp-4.1.1]#
应为默认配置文件中分配的是10.17.224.0网段的ip地址,而本机是192.168.1.30,不在同一网段
4-1、修改配置文件,使客户机 自动获取192.168.1.100 —19.168.1.105 的IP地址
[root@fan_host_30 Packages]# vim /etc/dhcp/dhcpd.conf
添加已下内容
subnet 192.168.1.0 netmask 255.255.255.0 { #确保和服务器ip在同一网段
option routers 192.168.1.1; #指定客户机默认ip地址
range 192.168.1.100 192.168.1.105; #指定动态ip范围
option domain-name-servers 8.8.8.8; #指定客户端DNS服务器
option broadcast-address 192.168.1.255;
default-lease-time 600; #默认租约时间
max-lease-time 6000; #最大租约时间
}
重启dhcpd服务:service dhcpd restart
验证:
IPv4 CONFIGURATION
重启网络服务
[root@fangle-server20 ~]# service network restart
Restarting network (via systemctl): [ OK ]
查看ip
[root@fangle-server20 ~]# ifconfig
eno16777736: flags=4163 mtu 1500
inet 192.168.1.101 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fe82:53f0 prefixlen 64 scopeid 0x20
ether 00:0c:29:82:53:f0 txqueuelen 1000 (Ethernet)
RX packets 701 bytes 70339 (68.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 609 bytes 186677 (182.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
已实现ip自动获取,为192.168.1.101
4-2,ip地址绑定,使指定客户端开机自动获取特定ip地址
添加以下配置:
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
range 192.168.1.200 192.168.1.205;
option domain-name-servers 8.8.8.8;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 6000;
host fangle-server20 {
hardware ethernet 00:0c:29:82:53:f0;
fixed-address 192.168.1.20;
}
}
重启dhcpd
重启客户机网络服务
[root@fangle-server20 ~]# ifconfig
eno16777736: flags=4163 mtu 1500
inet 192.168.1.20 netmask 255.255.255.0 broadcast 192.168.1.255
已成功绑定ip