之前查看了很多博客和相关DHCP的一些相关信息,但是都没能完全理解(各有各的理解方式),感觉还是写一篇自己能理解的博客,当然有不足之处,在模拟DHCP分配IP之前首先来了解一下DHCP的相关知识
网络配置的两种方式(可以简单理解为IP地址的获取方法):
静态指定
动态获取 :bootp dhcp
bootp:boot protocol 它的实现方式是MAC与IP绑定在一起,但是如果服务器不开启则占用一个IP,如果服务器较少还可以,但是如果服务器较多显然IP是不够用的,而那些占着IP 却不开机的服务器造成了很大的资源浪费这时DHCP就解决了这一问题
DHCP服务 Dynamic Host Configuration Protocol 动态主机配置协议,服务器一旦开机则自动分配IP,并有一定的租期,租期到了则收回,IP可以续租,续租失败则收回并重新分配,如果服务器关闭则收回IP,先到先得的原则,哪台主机先申请就优先分配,并且基于广播机制(服务器和客户端必须在一个网段)
dhcp的主要用途:
1、用于内部网络和网络服务供应商自动分配ip地址给用户
2、用于内部网络管理员作为对所有电脑做集中管理的手段
dhcp的使用场景:
1、自动化安装系统
2、解决IPV4资源不足问题
dhcp的客户端工具dhclient(默认后台运行)
dhclient -d 前台运行 可以观察其执行过程(前四个报文)
dhcp工作原理(前4种经常用到)
DHCP DISCOVER:客户端到服务端 客户端设置为自动获取后一开机就会向网络发广播
DHCP OFFER:服务器到客户端 如果网络中有DHCP服务器就会分配一个IP并同时在网络中进行标记此IP已被占用
DHCP REQUEST:客户端到服务器 网络中有多个DHCP同时分配IP这时就需要进行选择一个
DHCP ACK:服务器到客户端 服务器最终确认
DHCP NAK:服务器到客户端,通知用户无法分配合适的ip地址
DHCP DECLINE:客户端到服务器,只是地址已被使用
DHCP RELEASE: 客户端到服务器,放弃网络地址和取消剩余的租约时间
DHCP INFORM: 客户端到服务器,客户端如果需要从DHCP服务器端获取更为详细的配置信息 ,则发行inform报文向服务器进行请求,极少用到
模拟dhcp的实现过程
准备:两台虚拟机(centos7模拟DHCP服务器,centos6模拟客户端)
centos7本身使用静态获取,centos6为动态获取 并且为仅主机模式
关闭防火墙 iptables -vnL
关闭SELinux 检查状态getenforce
vim /etc/sysconfig/selinux 改为SELinux=disabled 重启后生效
对centos7设置,使其成为dhcp服务器
打开虚拟机--->编辑---->虚拟网络设置--->选中仅主机--->取消下面DHCP设置
取消DHCP服务就意味着网络中没有了DHCP服务器,那么客户端如果设置DHCP获取那么是不能获取到IP
在客户机将其获取方式改为DHCP vim /etc/sysconfig/network-scripts/ifcfg-eth0
设置完之后重启,客户机将不能获取IP,因为网络中没有DHCP服务器
开始配置DHCP服务器(centos7)
配置前首先安装包
在其他的服务安装后就可以开启服务,但dhcp比较特殊,所以此时应先复制模板到配置文件进行相关设置,然后再开启服务
如果此时开启服务肯定是失败的
复制模板
配置文件
重启服务
重启完之后再次重启客户端
此时获得的IP就是刚才指定IP范围的第一个IP,至此已经实现一个模拟的DHCP服务器。