概念
dhcp(Dynamic Host configuration Protocol,动态主机配置协议 )是一个局域网的网络协议,它主要是通过客户端发送广播数据包给整个物理网段内的所有主机,若局域网内有DHCP服务器时,才会响应客户端的IP参数要求。
建立条件
- 拥有真实物理网卡,或者连接广播域的真实物理网卡;
- 该接口或者该物理网卡必须有一个合理的ip地址;
Firstinput firstoutput 先进先出的问题,所以有两台dhcp服务器时使用的是最先用最先配置的dhcp服务器 当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。
DHCP有三种机制分配IP地址
- 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
- 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
- 手工分配方式(Manual
Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
工作原理
DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口。详细的交互过程如下图。
DHCP八种报文类型
- DHCP Discover
DHCP客户端请求地址时,并不知道DHCP服务器的位置,因此DHCP客户端会在本地网络内以广播方式发送请求报文,这个报文成为Discover报文,目的是发现网络中的DHCP服务器,所有收到Discover报文的DHCP服务器都会发送回应报文,DHCP客户端据此就可以知道网络中存在的DHCP服务器的位置。 - DHCP Offer
DHCP服务器收到Discover报文后,就会在所配置的地址池中查找一个合适的ip地址,加上相应的租约期限和其他配置信息(网关,DNS服务器等),构造一个Offer报文,发送给客户,告知用户本服务器可以为其提供IP地址。(只是告诉client可以提供,是预分配,还需要client通过ARP检测该IP是否重复) - DHCP Request
DHCP客户端会收到很多Offer,所以必须在这些回应中选择一个。Client通常选择第一个回应Offer报文的服务器作为自己的目标服务器,并回应一个广播Request报文,通告选择的服务器。DHCP客户端成功获取IP地址后,在地址使用租期过去1/2时,会向DHCP服务器发送单播Request报文续延租期,如果没有收到DHCPACK报文,在租期过去3/4时,发送广播Request报文续延租期。 - DHCP ACK
DHCP服务器收到Request报文后,根据Request报文中携带的用户MAC来查找有没有相应的续约记录,如果有则发送ACK报文作为回应,通知用户可以使用分配的ip地址。 - DHCP NAK
如果DHCP服务器收到Request报文后,没有发现相应的租约记录或者由于某些原因无法正常分配ip地址,则发送ACK报文作为回应,通知用户无法分配合适的ip地址。 - DHCP Release
当用户不在需要使用分配ip地址时,就会向DHCP服务器发送Release报文,告知服务器用户不再需要分配ip地址,DHCP服务器会释放被绑定的租约。 - DHCP Decline
DHCP客户端收到DHCP服务器回应的ACK报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则发送Decline报文,通知服务器所分配的ip地址不可用。 - DHCP Inform
DHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息,则发送Inform报文向服务器进行请求,服务器收到该报文后,将根据租约进行查找,找到相应的配置信息后,发送ACK报文回应DHCP客户端(极少用到)。
动态分配
挂载
[root@redhat ~]
安装DHCP包
注意8的版本需要在后面加-server
[root@redhat ~]
启动服务
[root@redhat ~]
1、修改配置文件
示例文件 /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
[root@redhat ~]
//配置文件内容
subnet 192.168.12.0 netmask 255.255.255.0 { //声明网段和掩码
option domain-name-servers 114.114.114.114; //指定DNS
option routers 192.168.12.2; //指定网关
range dynamic-bootp 192.168.12.140 192.168.12.150; //指定地址池范围
default-lease-time 3600; //默认租约时间
max-lease-time 7200; //最大租约时间
}
1.2重启服务
[root@redhat ~]
2、客户端
在虚拟网络编辑器中将dhcp分配关掉
2.1在客户端命令窗口输入dhclient命令使用动态主机配置协议动态的配置网络接口的网络参数
网络进程接口为51346
[root@localhost ~]
dhclient(51346) is already running - exiting.
This version of ISC DHCP is based on the release available
on ftp.isc.org. Features have been added and other changes
have been made to the base software release in order to make
it work better with this distribution.
Please report for this software via the CentOS Bugs Database:
http://bugs.centos.org/
exiting.
2.2关掉之前的网络接口
[root@localhost ~]
2.3再次declient动态获取IP
[root@localhost ~]
2.4查看ip
[root@localhost ~]
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:4f:53:7d brd ff:ff:ff:ff:ff:ff
inet 192.168.12.141/24 brd 192.168.12.255 scope global dynamic ens33
valid_lft 3215sec preferred_lft 3215sec
inet6 fe80::fba6:88de:97e8:be1d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:d0:41:23 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:d0:41:23 brd ff:ff:ff:ff:ff:ff
手工分配
1、修改配置文件
[root@redhat ~]
//配置文件内容
subnet 192.168.12.0 netmask 255.255.255.0 {
option domain-name-servers 114.114.114.114;
option routers 192.168.12.2;
range dynamic-bootp 192.168.12.140 192.168.12.160;
default-lease-time 3600;
max-lease-time 7200;
}
host fantasia {
hardware ethernet 00:0c:29:4f:53:7d; //客户端硬件地址
fixed-address 192.168.12.150; //指定ip地址
}
1.2 重启服务
[root@redhat ~]
2、客户端
2.1 在客户端命令窗口输入dhclient命令使用动态主机配置协议动态的配置网络接口的网络参数
网络进程接口为51605
[root@localhost ~]
dhclient(51605) is already running - exiting.
This version of ISC DHCP is based on the release available
on ftp.isc.org. Features have been added and other changes
have been made to the base software release in order to make
it work better with this distribution.
Please report for this software via the CentOS Bugs Database:
http://bugs.centos.org/
exiting.
2.2 断开网络
[root@localhost ~]
2.3再次dhclient动态获取IP
[root@localhost ~]
2.4再次查看ip
[root@localhost ~]
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.12.150 netmask 255.255.255.0 broadcast 192.168.12.255
inet6 fe80::fba6:88de:97e8:be1d prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:4f:53:7d txqueuelen 1000 (Ethernet)
RX packets 3265 bytes 996836 (973.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 674 bytes 72295 (70.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|