使用DHCP动态管理主机地址
动态主机配置协议(DHCP,Dynamic Host Configuration Protocol).
动态主机配置协议(DHCP)是一种基于 UDP 协议且仅限于在局域网内部使用的网络协
议,主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中,其主要用途是
为局域网内部的设备或网络供应商自动分配 IP 地址等参数。
==作用域:==一个完整的IP地址段,DHCP协议根据作用域来管理网络的分布、分配IP地址及其他配置参数。
==超级作用域:==用于管理处于同一个物理网络中的多个逻辑子网段。超级作用域中包含了可以统一管理的作用域列表。
==排除范围:==把作用域中的某些IP地址排除,确保这些IP地址不会分配给DHCPClinet
==地址池:==再定义了DHCP的作用域并应用了排除范围后,剩余的用来动态分配 给DHCP客户端的IP地址范围。
==租约:==DHCP客户端能够使用动态分配的IP地址的时间。
==预约:==保证网络中的特定设备总是获取到相同的IP地址。
部署dhcpd服务程序
dhcpd使Linux系统中用于提供DHCP协议的服务程序。
软件包名:dhcp
服务名:dhcpd
主配置文件:/etc/dhcp/dhcp.conf
格式:
ddns-update-sty;e interim;#全局配置参数
ignore client-updates;#全局配置参数
subnet 192.1.1.0 netmask 255.255.255.0 {#子网网段声明
........;
.........;
option routers 192.1.1.1;#地址配置选项
option subnet-mask 255.255.255.0;
..........;
default-lease-time 21600;#地址配置参数
max-lease-time 43200;
...........;
}
y一个标准的配置文件应包括:全局配置参数、子网网段声明、地址配置选项、以及地址配置参数。其中,
全局配置参数用于定义dhcpd服务程序的整体运行参数;
子网网段声明用于配置整个子网段的地址属性。
其中的参数:
参数 | 作用 |
---|---|
ddns-update-style[类型] | 定义DNS服务动态更新的类型,包括none[不支持动态更新]、interim[互动更新模式]、ad-hocp[特殊更新模式] |
[allow|ignore] client-updates | 允许/忽略客户端更新DNS记录 |
default-lease-time [21600] | 默认超时时间 |
mac-lease-time[43200] | 最大超时时间 |
option domain-name-servers[8.8.8.8] | 定义DNS服务器地址 |
option domain-name [“domain.org”] | 定义DNS域名 |
rang | 定义用于分配的IP地址池 |
option subnet-mask | 定义客户端的子网掩码 |
option routers | 定义客户端的网关地址 |
broadcase-address[广播地址] | 定义客户端的广播地址 |
ntp-server[IP地址] | 定义客户端的NTP服务器 |
nis-server [IP地址] | 定义客户端的NIS域服务器的地址 |
Hardware [网卡mac] | 指定网卡接口的类型与mac地址 |
server-name[主机名] | 向DHCP客户端通知DHCP服务器的主机名 |
fixed-address[IP地址] | 将某个固定的IP地址分配给指定主机 |
time-offset[偏移误差] | 指定客户端与格林尼治时间的偏差 |
自动管理IP地址
“机房运营部门:明天会有100 名学员自带笔记本电脑来我司培训学习,请保证他 们能够使用机房的本地DHCP 服务器自动获取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 地址等网络信息配置妥当后就可以配置 dhcpd 服务程序了。请 注意,在配置 dhcpd 服务程序时,配置文件中的每行参数后面都需要以分号(;)结尾,这是 规定。另外,dhcpd 服务程序配置文件内的参数都十分重要,因此刘遄老师在表 14-4 中罗列 出了每一行参数,并对其用途进行了简单介绍。
[root@linuxprobe ~]# 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;
}
参数 | 作用 |
---|---|
ddns-update-style none; | 设置DNS服务不自动进行动态更新 |
ignore client-updates; | 忽略客户端更新DNS记录 |
subnet 192.1.1.0 netmask 255.255.255.0{ | 作用域为192.168.1.0/24网段 |
range 192.1.1.50 192.1.1.150; | IP地址池为192.1.1.50-150 |
option subnet-mask 255.255.255.0; | 定义客户端默认的子网掩码 |
option routers 192.1.1.1; | 定义客户端的网关地址 |
option domain-name “example.com”; | 定义默认的搜索域 |
option domian-name-servers 192.1.1.1 | 定义客户端的DNS地址 |
default-lease-time 21600; | 定义默认租约时间 |
max-lease-time 43200; | 定义最大预约时间 |
} | 结束符 |
把 dhcpd 服务程序配置妥当之后就可以开启客户端来检验 IP 分配效果了。重启客户端的网卡服务后即可看到自动分配到的 IP 地址
分配固定IP地址
在 DHCP 协议中有个术语是“预约”,它用来确保局域网中特定的设备总是获取到固定的 IP 地址。换句话说,就是 dhcpd 服务程序会把某个 IP 地址私藏下来,只将其用于相匹配的特定设备。要想把某个 IP 地址与某台主机进行绑定,就需要用到这台主机的 MAC 地址。MAC 地址是网 卡上面的一串独立的标识符,具备唯一性,因此不会存在冲突的情况,如图 14-6 所示。
在 Linux 系统或 Windows 系统中,都可以通过查看网卡的状态来获知主机的 MAC 地址。在 dhcpd 服务程序的配置文件中,按照如下格式将 IP 地址与 MAC 地址进行绑定。
格式
host 主机名称{
hardware ethernet macaddress;
fixed-address ipaddress;
}
如果不方便查看主机的 MAC 地址,该怎么办呢?比如,要给老板使用的主机绑定 IP 地 址,总不能随便就去查看老板的主机信息吧。针对这种情况,刘遄老师告诉大家一个很好的 办法。我们首先启动 dhcpd 服务程序,为老板的主机分配一个 IP 地址,这样就会在 DHCP 服 务器本地的日志文件中保存这次的 IP 地址分配记录。然后查看日志文件,就可以获悉主机的 MAC 地址了(即下面加粗的内容)。
[root@linuxprobe ~]# tail -f /var/log/messages
Mar 30 05:33:17 localhost dhcpd: Copyright 2004-2013 Internet Systems Consortium.
Mar 30 05:33:17 localhost dhcpd: All rights reserved.
Mar 30 05:33:17 localhost dhcpd: For info, please visit https://www.isc.org/
software/dhcp/
Mar 30 05:33:17 localhost dhcpd: Not searching LDAP since ldap-server, ldap-
port and ldap-base-dn were not specified in the config file
Mar 30 05:33:17 localhost dhcpd: Wrote 0 leases to leases file.
Mar 30 05:33:17 localhost dhcpd: Listening on LPF/eno16777728/00:0c:29:c4:a4:
09/192.168.10.0/24
Mar 30 05:33:17 localhost dhcpd: Sending on LPF/eno16777728/00:0c:29:c4:a4:09/
192.168.10.0/24
Mar 30 05:33:17 localhost dhcpd: Sending on Socket/fallback/fallback-net
Mar 30 05:33:26 localhost dhcpd: DHCPDISCOVER from 00:0c:29:27:c6:12 via eno16777728
Mar 30 05:33:27 localhost dhcpd: DHCPOFFER on 192.168.10.50 to 00:0c:29:27:c6:
12 (WIN-APSS1EANKLR) via eno16777728
Mar 30 05:33:29 localhost dhcpd: DHCPDISCOVER from 00:0c:29:27:c6:12 (WIN-
APSS1EANKLR) via eno16777728
Mar 30 05:33:29 localhost dhcpd: DHCPOFFER on 192.168.10.50 to 00:0c:29:27:c6:
12 (WIN-APSS1EANKLR) via eno16777728
Mar 30 05:33:29 localhost dhcpd: DHCPREQUEST for 192.168.10.50 (192.168.10.10)
from 00:0c:29:27:c6:12 (WIN-APSS1EANKLR) via eno16777728
Mar 30 05:33:29 localhost dhcpd: DHCPACK on 192.168.10.50 to 00:0c:29:27:c6:12
(WIN-APSS1EANKLR) via eno16777728
Windows 系统中看到的 MAC 地址,其格式类似于 00-0c-29-27-c6-12,间隔符为减号(-)。但 是 在 Linux 系统中,MAC 地址的间隔符则变成了冒号(:)。
vim /etc/dhcp/dhcp.conf
ddns-update-style none;
ignore client-updates;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.50 192.168.1.150;
option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
option domain-name "example.com";
option domain-name-servers 192.168.1.1;
default-lease-time 21600;
max-lease-time 42300;
**host example {**
**hardware ethernet 00:00:00:00:00:00;**
**fixed-address 192.168.1.66;**
}
}
确认参数填写正确后就可以保存退出配置文件,然后就可以重启 dhcpd 服务程序了。
[root@linuxprobe ~]# systemctl restart dhcpd
需要说明的是,如果您刚刚为这台主机分配了 IP 地址,则它的 IP 地址租约时间还没有 到期,因此不会立即换成新绑定的 IP 地址。要想立即查看绑定效果,则需要重启一下客户端 的网络服务即可。