Linux--使用DHCP动态管理主机地址

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除

一、动态主机地址管理协议

动态主机配置协议(DHCP)是一种基于UDP协议且仅限于在局域网内部使用的网络协议,主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中,用途是为局域网内部的设备或网络供应商自动分配IP地址等参数,提供网络配置的“全家桶”服务。

简单来说,DHCP协议就是让局域网中的主机自动获得网络参数的服务。借助于DHCP协议,不仅可以为主机自动分配网络参数,还可以确保主机使用的IP地址是唯一的,更重要的是,还能为特定主机分配固定的IP地址。

DHCP常见术语:

  • 作用域:一个完整的IP地址段,DHCP协议根据作用域来管理网络的分布、分配IP地址及其他配置参数。
  • 超级作用域:用于管理处于同一个物理网络中的多个逻辑子网段,包含了可以统一管理的作用域列表。
  • 排除范围:把作用域中的某些IP地址排除,确保这些IP地址不会分配给DHCP客户端。
  • 地址池:在定义了DHCP的作用域并应用了排除范围后,剩余的用来动态分配给客户端的IP地址范围。
  • 租约:DHCP客户端能够使用动态分配的IP地址的时间。
  • 预约:保证网络中的特定设备总是获取到相同的IP地址

二、部署dhcpd服务程序

dhcpd是Linux系统中用于提供DHCP协议的服务程序;其软件包名称为dhcp-server:

 [root@Linux ~]# yum install -y dhcp-server

查看dhcpd服务程序的配置文件内容:

 [root@Linux ~]# cat /etc/dhcp/dhcpd.conf
 #
 # DHCP Server Configuration file.
 #   see /usr/share/doc/dhcp-server/dhcpd.conf.example
 #   see dhcpd.conf(5) man page
 #

全是注释,意味我们需要自行编写这个文件,示例:

 [root@Linux ~]# vim /etc/dhcp/dhcpd.conf
 ddns-update-style interim;      # 全局配置参数
 ignore client-updates;
 subnet 192.168.10.0 netmask 255.255.255.0 {  # 子网网段声明
     ...;
     option routers      192.168.10.1;       # 地址配置选项
     option subnet-mask  255.255.255.0;
     ...;
     default-lease-time 21600;       # 地址配置参数
     max-lease-time 43200;
     ...;
 }

一个标准的配置文件应该包括全局配置参数、子网网段声明、地址配置选项以及地址配置参数。其中,全局配置参数用于定义dhcpd服务程序的整体运行参数;子网网段声明用于配置整个子网段的地址属性。常用参数:

参数作用
ddns-update-style 类型定义DNS服务动态更新的类型,类型包括:none(不支持动态更新)interim(互动更新模式)与ad-hoc(特殊更新模式)
allow/ignore client-updates允许/忽略客户端更新DNS记录
default-lease-time 21600默认超时时间
max-lease-time 43200最大超时时间
option domain-name-servers 8.8.8.8定义NDS服务器地址
option domain-name "domain.org定义DNS域名
range定义用于分配的IP地址池
option subnet-mask定义客户端的子网掩码
option routers定义客户端的网关地址
broadcast-address广播地址定义客户端的广播地址
ntp-serverlP地址定义客户端的网络时间服务器(NTP)
nis-servers lP地址定义客户端的NIS域服务器的地址
hardware 硬件类型 MAC地址指定网卡接口的类型与MAC地址
server-name 主机名向DHCP客户端通知DHCP服务器的主机名
fixed-address lP地址将某个固定的IP地址分配给指定主机
time-offset 偏移差指定客户端与格林尼治时间的偏移差

三、自动管理IP地址

DHCP协议的设计初衷是为了更高效地集中管理局域网内的IP地址资源

DHCP服务器会自动把IP地址、子网掩码、网关、DNS地址等网络信息分配给有需要的客户端,而且当客户端的租约时间到期后还可以自动回收所分配的IP地址,以便交给新加入的客户端。

模拟示例:机房所用网络地址及参数信息:

参数作用
默认租约时间21600秒
最大租约时间43200秒
IP地址范围192.168.10.50~192.168.10.150
子网掩码255.255.255.0
网关地址192.168.10.1
DNS服务器地址192.168.10.1
搜索域linuxprobe.com

按照下面进行配置DHCP服务端以及客户端

主机类型操作系统IP地址
DHCP服务器RHEL 8192.168.10.1
DHCP客户端Windows 10DHCP自动获取地址

作业域是一个完整的IP地址段,而地址池的IP地址才是真正供客户端使用的,因此地址池应该小于或等于作用域的IP地址范。由于VM虚拟机自带DHCP服务,将其关闭

DHCP客户端与服务器需要处于同一种网络模式—仅主机模式(Hostonly),否则会产生物理隔离;

配置dhcpd服务程序时,配置文件中的每行参数后面都需要以分号(;)结尾,

 [root@Linux ~]# cat /etc/dhcp/dhcpd.conf 
 ddns-update-style none;     # 设置DNS服务不自动进行动态更新
 ignore client-updates;      # 忽略客户端更新NDS记录
 subnet 192.168.10.0 netmask 255.255.255.0 { # 作用域为192.168.10.0/24网段
     range 192.168.10.50 192.168.10.150; # IP地址池为192.168.10.50-150(100个)
     option subnet-mask 255.255.255.0;   # 定义客户端默认的子网掩码
     option routers 192.168.10.1;        # 定义客户端的网关地址
     option domain-name "linuxprobe.com";    # 定义默认的搜索域
     option domain-name-servers 192.168.10.1;    # 定义客户端的NDS地址
     default-lease-time 21600;   # 定义默认租约时间
     max-lease-time 43200;       # 定义最大预约时间
 }   # 结束
 [root@Linux ~]# systemctl start dhcpd
 [root@Linux ~]# systemctl enable dhcpd
 Created ...

在Windows系统的网卡设置为DHCP模式,稍等片刻即可自动获取都网卡信息;

如果是在生产环境配置的dhcpd服务,有可能会因为DHCP协议没有被防火墙放行而实验失败,则执行下面命令即可

 [root@Linux ~]# firewall-cmd --zone=public --permanent --add-service=dhcp
 success
 [root@Linux ~]# firewall-cmd --reload
 success

DHCP协议的运作会经历四个过程--请求、提供、选择和确认

四、分配固定IP地址

在DHCP协议中有个术语是“预约”,它用来确保局域网中特定的设备总是获取到固定的IP地址

要想把某个IP地址与某台主机进行绑定,就需要用到这台主机的MAC地址。即网卡上面的一串独立的标识符,具备唯一性,因此不会在冲突的情况;Linux系统中:

Windows系统中:

在Linux系统或Windows系统中,都可以通过查看网卡的状态来获知主机的MAC地址。在dhcpd服务程序的配置文件中,按照如下格式将IP地址与MAC地址进行绑定;

 host 主机地址 {
     hardware        ethernet        该主机的MAC地址;
     fixed-address   欲指定的IP地址;
 }

我们首先启动dhcpd服务程序,为老板的主机分配一个!P地址,这样就会在DHCP服务器本地的日志文件中保存这次的IP地址分配记录。然后查看日志文件,就可以获悉主机的MAC地址了(即下面加粗的内容)。

 [root@linuxprobe ~]# tail -f /var/log/messages
 ………省略部分输出信息……
 Mar 22 88:28:54 linuxprobe cupsd[1206]: REQUEST linuxprobe.com-- "POST / HTTP/1.1" 208 183 Renew-Subscription client-error-not-found
 Mar 22 88:29:35 linuxprobe dhcpd[38959]: DHCPREQUEST for 192.168.10.50 from 00:0c:29:dd:f2:22 (DESKTOP-30GV58E)via ens160
 Mar 22 00:29:35 linuxprobe dhcpd[30959]: DHCPACK on 192.168.10.50 to 00:c:29:dd:f2:22 (DESKTOP-30GV5E) via ens160   # 这行中的就是MAC地址

在Windows系统中看到的MAC地址,其格式类似于00-0c-29-dd-f2-22,间隔符为减号(-)。但是在Linux系统中MAC地址的间隔符则变成了冒号(:)

 [root@Linux ~]# vim /etc/dhcp/dhcpd.conf 
 ddns-update-style none;     
 ignore client-updates;  
 subnet 192.168.10.0 netmask 255.255.255.0 {
     range 192.168.10.50 192.168.10.150; 
     option subnet-mask 255.255.255.0;   
     option routers 192.168.10.1;        
     option domain-name "linuxprobe.com";    
     option domain-name-servers 192.168.10.1;    
     default-lease-time 21600;   
     max-lease-time 43200;
     host linuxprobe {
         hardware ethernet 00:0c:29:dd:f2:22;
         fixed-address 192.168.10.88;
         }
 }   
 [root@Linux ~]# systemctl restart dhcpdFV

重启客户端的网络服务;

致谢

在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。 

学习永无止境,让我们共同进步!!

  • 27
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小李学不完

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值