1.DHCP服务的原理
1.DHCP服务的端口
DHCP采用UDP作为传输协议,客户端发送消息到DHCP服务器的的67号端口,服务器返回消息给客户端的68号端口。 下面用科来抓包的端口
2.DHCP工作步骤
- Client通过DHCP Discover报文向网络中DHCP服务器请求服务。 -> 广播
- DHCP Server 根据自身的配置向客户端发送Offer报文应答Client的请求。-> 单播
- Client收到Offer报文通过Request报文进行确认。-> 广播
- 最终Server通过一个ACK确认报文把Client认可的地址分配给网卡。->单播
如果我们的客户端获得了ip地址以后,会保存曾经使用的ip地址,下次去续约的时候,直接发dhcp request包申请以前使用过的ip地址
客户端每次发的都是广播包的原因:
看抓包无论是目的ip地址还是目的mac地址都是广播包,因为客户端现在不知道DHCP的IP地址和mac地址,自己没有ip地址,只能用全0代替。
2.DHCP服务器搭建
1.保证服务器能上网,安装dhcp相关的软件包
root@localhost ~]# hostnamectl set-hostname dhcp
[root@localhost ~]# su
su
[root@dhcp ~]# ping www.baidu.com
PING www.baidu.com (36.155.132.76) 56(84) bytes of data.
64 bytes from 36.155.132.76 (36.155.132.76): icmp_seq=1 ttl=128 time=31.0 ms
64 bytes from 36.155.132.76 (36.155.132.76): icmp_seq=2 ttl=128 time=30.9 ms
^C
--- www.baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1007ms
rtt min/avg/max/mdev = 30.986/30.997/31.009/0.176 ms
[root@dhcp ~]# yum install dhcp -y
2.修改配置文件,配置dhcp服务器
[root@dhcp ~]# cd /etc/dhcp/
[root@dhcp dhcp]# ls
dhclient.d dhcpd6.conf scripts
dhclient-exit-hooks.d dhcpd.conf
#dhcpd.conf 是我们的主要的配置文件--》ipv4
#dhcpd6.conf 是ipv6的配置文件
[root@dhcp dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
subnet 192.168.249.0 netmask 255.255.255.0 {
range 192.168.249.180 192.168.249.190; #指定地址池的范围,必须是上面的网段里的ip
option domain-name-servers 114.114.114.114; # 指定dns服务器
option routers 192.168.249.160; # 指定网关
default-lease-time 600; #最短租约时间600秒
max-lease-time 7200;#最长租约时间7200秒
}
[root@dhcp dhcp]# service dhcpd start
Redirecting to /bin/systemctl start dhcpd.service
3. 启动服务,调试
DHCP服务器的ip地址要手动配置,不然会受到自己DHCP服务器的影响。此外,DHCP要有snat功能,不然客户机不能上网。
dhclient -r ens33 释放ens33网卡的ip地址
cat /var/lib/dhcpd/dhcpd.leases 在dhcp服务器上看给哪些客户机分配的ip地址