《Linux就该这么学》培训笔记_ch14_使用DHCP动态管理主机地址

文章最后会post上书本的笔记照片。

文章主要内容

动态主机地址管理协议

动态主机配置协议(DHCP)是一种基于UDP协议且仅限于在局域网内部使用的网络协议,主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中,其主要用途是让局域网中的主机自动获得网络参数(IP地址、子网掩码、网关地址以及DNS地址等参数)。

DHCP涉及的常见术语:

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

作用域=地址池+排除范围。地址池才是真正可分配的IP地址范围。

租约有默认租约(软限制)和最大租约(硬限制)。

预约是通过绑定设备MAC和IP地址,使得该设备总是获取该IP地址。


部署dhcpd服务程序

安装dhcp服务程序:yum install -y dhcp。

dhcpd服务的配置文件:/etc/dhcp/dhcpd.conf。内容只有几行注释,配置文件需要自行编辑。注释中有指明可以参考示例文件/usr/share/doc/dhcp*/dhcpd.conf.example。

dhcpd服务程序配置文件的架构:

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

dhcpd服务程序配置文件中使用的常见参数以及作用:

参数 作用

ddns-update-style 类型(ddns:动态DNS地址更新技术)

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

自动管理IP地址

实例1:保证至少100台设备能够使用机房的本地DHCP服务器自动获取IP地址并正常上网。

虚拟机先把服务端和客户机的自带dhcp服务关闭,以免冲突。

dhcp服务器192.168.10.10要做的:编辑dhcpd服务的配置文件,注意dhcpd服务配置文件中的每行参数后面都需要以分号(;)结尾,重启dhcpd服务并加入开机启动项。

vim /etc/dhcp/dhcpd.conf
ddns-update-style none; #设置DNS服务不自动进行动态更新
ignore client-updates; #忽略客户端更新DNS记录
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个IP地址)
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; #定义客户端的DNS地址
default-lease-time ; #定义默认租约时间(单位:秒)
max-lease-time ; #定义最大预约时间(单位:秒)
} #结束符
systemctl start dhcpd #重启dhcpd服务
systemctl enable dhcpd #把dhcpd服务加入启动项

客户机要做的:设置网卡为自动获取IP地址(多种配置网卡的方法,编辑网卡配置文件、nmtui、nm-connection-editor均可),重启网卡服务(systemctl restart network),查看网卡参数看是否自动获取了ip地址(ifconfig)。


分配固定IP地址

在DHCP中,“预约”用来确保局域网中特定的设备总是获取到固定的IP地址。即该地址只会分配给特定设备,即使特定设备不在该局域网内,该地址也不会分配出去。

MAC地址是网卡上面的一串独立的标识符,具备唯一性,不会存在冲突的情况。通过IP地址与设备MAC地址绑定即可实现为设备分配固定IP地址的功能。

dhcp服务器要做的:

  1. 获取特定设备的MAC地址(直接查看设备的网卡信息获得;或先通过启动dhcpd程序为设备分配IP地址,查看dhcp服务器本地的日志文件/var/log.message的相关记录,当中就会有分配过IP地址的设备的MAC地址信息);
  2. 按下面格式编辑dhcpd配置文件,重启dhcpd服务:
vim /etc/dhcp/dhcpd.conf
...
subnet x.x.x.x netmask x.x.x.x {
...
host 主机名称 { #包裹在作用域定义中
hardware ethernet 该主机的MAC地址;
fixed-address 欲指定的IP地址;
}
}

注意,Windows系统中看到的MAC地址,格式为xx-xx-xx-xx-xx-xx,间隔符为减号(-)。但是在Linux系统中,MAC地址的间隔符则为冒号(:),在Linux中配置dhcpd服务的IP地址与MAC绑定时,MAC的间隔符也为冒号(:)。

实例2:在实例1的基础上,配置dhcpd,使得特定客户机总是获取特定IP地址192.168.10.88。

dhcp服务器:

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 ;
max-lease-time ;
host linuxprobe {
hardware ethernet 00:0c:29:e9:be:e2;
fixed-address 192.168.10.88;
}
}
systemctl restart dhcpd

MAC地址为00:0c:29:e9:be:e2的客户机:重启网卡服务。查看网卡信息,能看到IP地址会变成192.168.10.88。


书本笔记

最新文章

  1. 视频 - 在 VirtualBox 中部署 OpenStack
  2. c#动态调用Webservices
  3. 022医疗项目-模块二:药品目录的导入导出-对XSSF导出excel类进行封装
  4. win7下Oracle 11的安装
  5. PostgreSQL异步客户端(并模拟redis 数据结构)
  6. python备忘录
  7. [转]用C#实现的条形码和二维码编码解码器
  8. weblogic启动报错之未修改hosts产生错误
  9. mysql数据表如何导入MSSQL中
  10. 【每日一摩斯】-Troubleshooting: High CPU Utilization (164768.1) - 系列4
  11. 项目检出JRE问题(Unbound classpath container: 'JRE System Library [JavaSE-1.7]' in project 'idweb')
  12. UI线程
  13. PHP获取服务器IP和客户端IP
  14. How to helloworld on Xcode
  15. JS分页条插件
  16. 51nod 1105(第K大数 二分套二分)
  17. spring IOC 和AOP 方面
  18. Oracle总结之plsql编程(基础九)
  19. 华为手机自带浏览器不支持 ES6 语法
  20. en_java去重排序

热门文章

  1. Regex 首字母转大写/小写,全大写,全小写
  2. python动态视频下载器
  3. 如何简单使用tensorboard展示(二)
  4. 详解Vue中的虚拟DOM
  5. Spring MVC + CXF实现webservice接口
  6. 跟着9张思维导图学习Javascript js 关键字和保留字 css3中的BFC,IFC,GFC和FFC
  7. 阿里云Mysql导入大数据文件
  8. 《linux就该这么学》课堂笔记20 LNMP架构部署动态网站环境
  9. <pre> 保留文本格式显示在网页上
  10. Linux下远程连接MySQL数据库