注意:
服务器使用静态IP地址,不能使用DHCP协议动态获取地址。
(1)客户机请求IP地址
(2)服务器响应
(3)客户机选择IP地址
(4)服务器确定租约
(5)重新登录
(6)更新租约
DHCP的四个过程:
客户端在网络中搜索服务器——发送discover报文
服务器向客户端响应服务——发送offer报文
客户端向目标服务器发出服务请求——发送request报文
服务器向客户端提供服务——发送ack报文
DHCP自动获取IP地址的工作原理:
第一步:客户端在网络中搜索服务器。
客户端通过广播发送DHCP Discover报文寻找服务器端。
第二步:服务器向客户端响应服务。
服务器端通过广播(只有华为设备单播发送)发送DHCP offer报文向客户端提供IP地址等网络信息,从IP地址池中挑选一个尚未分配的IP地址分配给客户端。
第三步:客户端向服务器发出服务请求。
如果有多台DHCP服务器向该客户端发来DHCP-offer报文,客户端只接受第一个收到的DHCP-offer报文并提取IP地址,然后客户端通过广播发送DHCP Request报文告知服务器端本地选择使用该IP地址。
第四步:服务器向客户端提供服务。
服务器通过广播(只有华为设备单播发送)发送DHCP Ack报文告知客户端IP地址是合法可用的,并在选项字段中增加IP地址的使用租期信息。
(5)重新登录
DHCP客户机每次重新登录网络时,不需要再发送DHCP Discover信息,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息。
(6)更新租约
当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约。客户机直接向提供租约的服务器发送DHCP Request包,要求更新现有的地址租约。
注意:
服务端使用67号端口接收用户发来的DISCOVER报文和REQUEST报文;客户端使用68号端口接收服务器端发来的OFFER报文和ACK报文==。
[root@clr ~]# systemctl stop firewalld #临时关闭防火墙
[root@clr ~]# setenforce 0
[root@clr ~]# mount /dev/sr0 /mnt #将光盘/dev/sr0挂载到/mnt目录下
mount: /dev/sr0 写保护,将以只读方式挂载
[root@clr ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
tmpfs 394M 28K 394M 1% /run/user/0
/dev/sr0 4.4G 4.4G 0 100% /mnt #新挂载的光盘
[root@clr ~]# cd /mnt/
[root@clr /mnt]# ls
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@clr /mnt]# ls Packages/ | grep dhcp #查询Packages/目录下是否存在dhcp的配置文件
dhcp-4.2.5-82.el7.centos.x86_64.rpm
dhcp-common-4.2.5-82.el7.centos.x86_64.rpm
dhcp-libs-4.2.5-82.el7.centos.x86_64.rpm
[root@clr /mnt]# yum install -y dhcp^C #k可以直接使用yum install直接安装dhcp服务
[root@clr /mnt]# rpm -ivh Packages/dhcp-4.2.5-82.el7.centos.x86_64.rpm #使用rpm -ivh安装Packages目录中存在的dhcp安装包
警告:Packages/dhcp-4.2.5-82.el7.centos.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:dhcp-12:4.2.5-82.el7.centos ################################# [100%]
[root@clr /etc/dhcp]# vim dhcpd.conf
# see /usr/share/doc/dhcp*/dhcpd.conf.example #原始的dhcpd.conf配置文件中内容为空,需要将这个文件下面的/usr/share/doc/dhcp*/dhcpd.conf配置文件复制到dhcpd.conf
[root@clr ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf #将/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example这个文件中的内容复制到/etc/dhcp/dhcpd.conf这个文件中
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes
[root@clr ~]# vim /etc/dhcp/dhcpd.conf
[root@clr ~]# systemctl start dhcpd #开启dhcp服务器
[root@clr ~]# netstat -lnup | grep 67 #根据dhcp服务器端口号查看dhcp服务状态
udp 0 0 0.0.0.0:67 0.0.0.0:* 2829/dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 1307/dnsmasq
[root@clr ~]# netstat -lnup | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 2829/dhcpd
实验要求:
(1)给DHCP服务器配备两张网卡,ens33:192.168.80.20/24,ens35:12.0.0.20/24;
(2)DHCP服务器实现分别给内网和外网用户动态提供IP地址,内网网段为192.168.80.100——192.168.80.200,外网网段为12.0.0.110——12.0.0.220,并且内网处于VMnet 2,外网处于VMnet 3;
(3)DHCP服务器需要给内网特殊用户(myboss)分配长期永久固定地址:192.168.80.188;
实验坏境总结:
服务器: 主机CentOS 7-2
内网网卡地址ens33:192.168.80.20/24;外网网卡地址ens36:12.0.0.20/24;
myboss: WIN10 (VMnet 2) 192.168.80.188
内网主机: CentOS 7-3 (VMnet 2)
外网主机: CentOS 7-1 (VMnet 3)
服务器CentOS 7-2命令和服务配置;
[root@clr ~]# systemctl stop firewalld #临时关闭防火墙
[root@clr ~]# setenforce 0
[root@clr ~]# mount /dev/sr0 /mnt #将光盘/dev/sr0挂载到/mnt目录下
mount: /dev/sr0 写保护,将以只读方式挂载
[root@clr ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
tmpfs 394M 28K 394M 1% /run/user/0
/dev/sr0 4.4G 4.4G 0 100% /mnt #新挂载的光盘
[root@clr ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.80.20 netmask 255.255.255.0 broadcast 192.168.80.25 #内网网卡地址 192.168.80.20
[root@clr ~]# ifconfig ens35 12.0.0.20/24 #给ens35外网网卡添加IP地址
[root@clr ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.80.20 netmask 255.255.255.0 broadcast 192.168.80.255
ens35: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 12.0.0.20 netmask 255.255.255.0 broadcast 12.0.0.255
[root@clr ~]# vim /etc/dhcp/dhcpd.conf
#内网网段声明
subnet 192.168.80.0 netmask 255.255.255.0 { #声明要分配的网段地址
range 192.168.80.100 192.168.80.200; #设置地址池
option routers 192.168.80.200; #指定默认网关地址
}
#外网网段声明
subnet 12.0.0.0 netmask 255.255.255.0 { #声明要分配的网段地址
range 12.0.0.110 12.0.0.220; #设置地址池
option routers 12.0.0.254; #指定默认网关地址
}
#内网host主机声明(给myboss主机分配固定的IP地址)
host myboss {
hardware ethernet 00:0C:29:86:00:18;
fixed-address 192.168.80.188;
}
在CentOS 7-2服务器上抓包,查看DHCP的工作过程;
外网主机 CentOS 7-1命令和服务配置如下所示:(处于VMnet 3)
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 #修改外网网卡ens33的网卡配置,
将外网主机放置到VMnet 3中;
[root@clr ~]# systemctl stop firewalld
[root@clr ~]# setenforce 0 #临时关闭防火墙
[root@localhost ~]# systemctl restart network #重新刷新网卡
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1280
inet 12.0.0.112 netmask 255.255.255.0 broadcast 12.0.0.255 #IP地址12.0.0.112通过DHCP服务器获得的动态地址
inet6 fe80::c09c:2b7e:80e9:eb2c prefixlen 64 scopeid 0x20<link>
内网主机 CentOS 7-3命令和服务配置如下所示:(处于VMnet 2)
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 #修改外网网卡ens33的网卡配置,
将内网主机放置到VMnet 2中;
[root@clr ~]# systemctl stop firewalld
[root@clr ~]# setenforce 0 #临时关闭防火墙
[root@myhost2 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.80.157 netmask 255.255.255.0 #内网主机通过DHCP服务器获得的IP地址192.168.80.157
myboss主机WIN 10的命令和服务配置如下所示:(处于VMnet 2)
取消原有的ip地址,并在网络连接中设置为自动获得IP地址;
将内网主机放置到VMnet 2中;
查看获取到的IP地址:WIN 10主机为指定IP地址192.168.80.188的myboss主机;