●DHCP全称Dynamic Host Configuration Protocol,动态主机配置协议
●由Internet工作任务小组设计开发
●专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议
●减少管理员的工作量
●免输入错误的可能
●避免IP地址冲突
●解决IP地址匮乏问题(NAT地址转换也是)
●当更改IP地址段时,不需要重新配置每个用户的IP地址
●自动分配:从DHCP服务器分配到一个IP地址后永久使用
●手动分配:由DHCP服务器管理员专门指定的IP地址
●动态分配:使用完后释放IP,供其他客户机使用
注意:
自动分配和手动分配都是常用一个IP地址,但是自动分配的IP地址不是固定的,手动分配是常用一个固定IP地址。
1:discover 请求IP地址,客户端寻找服务器,借助广播
2:offer 服务器回应客户端可用IP信息(可用IP,子网掩码,网关,dns,租约期限),借助广播
3:request 客户端向服务器请求确认可用IP,借助广播
此处有一种特殊情况:如果offer中的IP被占用,服务器会直接回应noack,然后又从发送discover报文重新开始
4:ack 服务器向客户端确认IP可用,借助广播
注意:在客户端发送完discover报文后,如果有两台dhcp服务器,谁先发offer报文响应,客户端就和哪台服务器联系,但是不一定会使用这个IP地址,要request确认可用才行,否则noack后重新开始。
DHCP客户机每次重新登录网络时,不需要再发送DHCPdiscover信息,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息
IP地址的默认租约期限为8天,租约期限过半即第五天就需要更新租约;续约的时候是从request开始,这时候是单播。
注意:
如果dhcp服务器宕机了,会继续租用,直到第8天到期再释放IP地址;
这时客户端会一直广播discover报文寻找dhcp服务器,如果一直得不到响应,会获取到169.254.0.0/24的网络地址(不可用),同时一直广播discover报文直到可用的dhcp服务器响应。
169.254.0.0/24是本地链路的地址,是在本地网络通讯的,不通过路由器转发,因此网关0.0.0.0,掩码255.255.255.0
CentOS光盘中的dhcp-4.2.5-47.el7.centos.x86_64.rpm
主配置文件:/etc/dhcp/dhcpd.conf
执行程序:/usr/sbin/dhcpd、/usr/sbin/dhcrelay
注意:
Linux系统中的配置文件决定了服务的功能,一般扩展名为.conf和.cfg;
执行程序—外部命令独立文件,作为服务启动脚本
全局配置参数针对整个服务有效;子网段的配置参数只对某个网段有效,且优先级比全局高
vi /etc/dhcp/dhcp.conf
ddns-update-style none; ##禁用dns更新
defaults-lease-time 21600; ##默认租约期限(默认单位是秒)
max-lease-time 43200; ##最大租约期限(默认单位是秒)
subnet 192.168.11.0 network 255.255.255.0{ ##下发的网段
range 192.168.11.100 192.168.11.200; ##地址范围
option routers 192.168.11.1; #设定默认网关地址
option subnet-mask 255.255.255.0; ##子网掩码
option domain-name “www.aa.com”; ##域名
option domain-name-servers 8.8.8.8, 114.114.114.114; ##分配一个dns地址给客户机
host prtvr{ ##设置保留地址
hardware ethernet 00:23:23:54:f3:2d; #微软默认MAC地址
fixed-address 192.168.11.11;
}
}
●range参数:设置用于分配的IP地址池
●option subnet-mask参数:设置客户机的子网掩码
●option routers参数:设置客户机的默认网关地址
注意:
(1)sub:子 net:网段
(2)IP地址池定义了可分配地址的范围,(黑客可以通过DHCP欺骗,不断向IP地址池请求IP,耗尽IP地址池中的地址)
(3)在子网段中定义的配置比全局配置更优先
●hardware ethernet参数:指定对应主机的MAC地址
●fixed-address参数:指定为该主机保留的IP地址
注意:
(1)服务器中显示MAC地址数字中间是“:”,客户机中显示MAC数字中间用“-”
(2)fixed-address ##分配给某台主机固定地址,其实是基于MAC地址绑定,一定要声明MAC地址,例如打印机
(3)指定的地址可以是不在IP地址池中的
systemctl start dhcpd
netstat -anpu | grep dhcpd #查看DHCP服务是否开启
服务器:UDP 67端口
客户机:UDP 68端口
文件位置:/var/lib/dhcpd/dhcpd.leases
在这里插入图片描述
关闭核心防护和清空防火墙阻拦规则
setenforce 0;iptables -F(如果一开始忘了,后面才关的,记得重启DHCP服务)
1.dhcp固定IP地址
2.安装dhcp软件包
3.修改配置文件(根据模板复制,位置/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example)
设置subnet{地址池、子网掩码、网关、dns地址}
每个参数后面记得加 分号!
4.启动服务
客户端:ipconfig /release
ipconfig /renew