Hello,你好哇,我是下一个艺术家!一个在学习Linux系统的小程序员!
今天给大家介绍的是Linux当中的dhcp服务。下面是详细的原理和实验步骤。
动态主机配置协议,一个局域网的网络协议,专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数。由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
·减少管理员的工作量
·避免输入错误的可能
·避免IP地址冲突
·当更改IP地址段时,不需要重新配置每个用户的IP地址
·提高了IP地址的利用率
·方便客户端的配置
分配方式 | 作用 |
---|---|
自动分配 | 分到一个IP地址后永久使用 |
手动分配 | 由DHCP服务器管理员专门指定IP地址 |
动态分配 | 使用完后释放该IP,供其它客户机使用 |
客户机从DHCP服务器获得IP地址的过程称为DHCP的租约过程。
四个步骤:
(1)客户端在网络中搜索服务器(Discover报文,广播)
(2)服务器向客户端响应服务(Offer报文,单播)
(3)客户端向目标服务器发出服务请求(Request报文,广播)
(4)服务器向客户端提供服务(Ack报文,单播)
详解:
第二步骤:客户机请求IP地址。当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址。那么这个DHCP客户机以广播方式发送DHCP Discover发现信息来寻找DHCP服务器。
第二步骤:DHCP服务器接收到来自客户机请求IP地址的信息时,会在自己的IP地址池中查找是否有合法的IP地址提供给客户机。如果有,DHCP服务器将此IP地址做上标记,加入到DHCP Offer的消息中,发送给客户机。
第三步骤:DHCP客户机从接收到的第一个DHCP Offer消息中获取IP地址,向DHCP服务器发送DHCP Request请求使用该IP地址。同时,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给其它DHCP客户机。
第四步骤:DHCP服务器接受到DHCP Request请求后,会向客户机发送DHCP ACK告诉客户机可以使用这个IP地址。客户机收到DHCP ACK确认信息,配置IP地址,完成TCP/IP出的初始化。
另:Linux的DHCP是两个广播两个单播,微软的DHCP是四个广播,放在DHCP server里。
DHCP客户机每次重新登录网络时,不需要再发送Discover报文,而是直接发送包含着上一次所获得分配的IP地址的Request报文向服务器请求使用该IP地址。如果该IP地址可以继续使用,DHCP服务器会向客户机发送ACK报文确定。如果该IP地址不可用了,服务器会发送NACK否定,客户机收到后会广播发送Discover报文重新请求IP地址。
客户机从服务器获得的IP地址是有租约时间的,这个时间会在服务器上设置好的,当服务器给客户机使用的IP地址的租期到达50%时,就会提醒客户机。客户机可以向提供IP地址的服务器发送Request报文更新现有所使用IP地址的租约。
·网卡的IP地址、子网掩码
·对应的网络地址、广播地址
·默认网关地址
·DNS服务器地址
·在Centos光盘中有dhcp软件包根据不同版本选择不同版本的软件包
·DHCP软件包的主配置文件:/etc/dhcpd.conf
·DHCP软件包的执行程序:/usr/sbin/dhcpd、/usr/sbin/dhcrelay
例:
subnet 192.168.100.0(网段) netmask 255.255.255.0 (子网掩码){
range 192.168.100.100 192.168.100.200(地址池)
option routers 192.168.100.1;(网关)
option broadcast-address 192.168.100.255; (广播地址)
option domain-name-servers 114.114.114.114,8.8.8.8; (域名服务器)
option domain-name “www.abcd.com”;(域名)
default-lease-time 21600;(默认租约时间)
max-lease-time 43200;(最大租约时间)
}
如果需要给某一台客户机分配一个固定的IP地址,可以加上:
host fantasia {
hardware ethernet 00:00:00:00:00:00; (填mac地址)
fixed-address 192.168.100.88;(填IP地址)
}
systemctl start dhcpd (启动dhcp服务)
netstat -anpu | grep “:67”(查看67端口的UDP的连接信息)
less /var/lib/dhcpd/dhcpd.lease
·修改网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=dhcp
ONBOOT=yes
修改后重启网络:systemctl restart network
·命令
dhclient -d ens33
准备三台初始化完成的虚拟机,两台作为客户端,一台作为服务器。
虚拟机初始化过程,之前文章有详细步骤
设置网卡类型为VMnet1,仅主机模式。
虚拟网络编辑器设置,取消本地虚拟机的DHCP服务,为了实现自己部署DHCP。
设置服务器的IP地址,网关,子网掩码,DNS
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.2
DNS1=192.168.1.2
重启网卡,并查看地址设置是否生效
设置真机VMnet1 IP地址为服务器的网关地址,更改网络适配器
安装DHCP服务
[root@server1 ~]# yum -y install dhcp
配置DHCP文件
vi /etc/dhcp/dhcpd.conf
ddns-update-style none; ##禁用DNS动态更新
default-lease-time 21600; #默认租约时间为6小时(单位为秒)
max-lease-time 43200; #最大租约时间为12小时
subnet 192.168.1.0 netmask 255.255.255.0 {
#声明网段地址和子网掩码
range 192.168.1.100 192.168.1.200; #设置地址池
option routers 192.168.1.2; #指定网关地址
option domain-name-servers 8.8.8.8 114.114.114.114; #指定DNS服务器地址
测试,启用DHCP服务并查看
客户机1自动获取IP地址的部署
获取到192.168.1.100的地址,查看效果,成功获取。
服务器通过绑定物理网卡地址指定客户机IP的方法
虚拟机客户机2,查看其物理地址:ip addr
在DHCP服务器上,修改配置文件如下,指定IP地址为192.168.1.200
重启DHCP服务
systemctl restart dhcpd
设置IP地址获取方式为DHCP
设置ens33网卡DHCP获取地址,获取到服务器指定的地址。
服务器查看客户机获取地址的情况
如客户机需要释放获取到的IP地址,在客户机上使用dhclient -r ens33
如果觉得对您有帮助的话,欢迎收藏评论转发哟!