DHCP(dynamic host configuration protocal) 动态主机配置协议
使用UDP协议工作
主要有两个用途:
给用户或者内部网络管理员作为对所有计算机作中央管理的手段,配合其他服务,实现集成化管理功能,如无人职守安装。
DHCP有3个端口,
其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做“双机热备”的。
DHCP具有以下功能:
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 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 <Automatic>
重启网络服务
[root@fangle-server20 ~]# service network restart
Restarting network (via systemctl): [ OK ]
查看ip
[root@fangle-server20 ~]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> 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<link>
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<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.20 netmask 255.255.255.0 broadcast 192.168.1.255
已成功绑定ip
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 <Automatic>
重启网络服务
[root@fangle-server20 ~]# service network restart
Restarting network (via systemctl): [ OK ]
查看ip
[root@fangle-server20 ~]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> 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<link>
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<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.20 netmask 255.255.255.0 broadcast 192.168.1.255
已成功绑定ip