DHCP动态管理主机地址

动态主机地址管理协议

  • 动态主机配置协议(DHCP)是一种基于UDP协议且仅限于在局域网内部使用的网络协议

  • 主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中

  • 主要用途是为局域网内部的设备或网络供应商自动分配IP地址等参数

  • 简单来说,DHCP协议就是让局域网中的主机自动获得网络参数的服务

  • DHCP涉及的常见术语:

    作用域:一个完整的IP地址段,DHCP协议根据作用域来管理网络的分布、分配IP地址及其他配置参数

    超级作用域:用于管理处于同一个物理网络中的多个逻辑子网段。超级作用域中包含了可以统一管理的作用域列表

    排除范围:把作用域中的某些IP地址排除,确保这些IP地址不会分配给DHCP客户端

    地址池:在定义了DHCP的作用域并应用了排除范围后,剩余的用来动态分配给DHCP客户端的IP地址范围

    租约:DHCP客户端能够使用动态分配的IP地址的时间

    预约:保证网络中的特定设备总是获取到相同的IP地址

部署dhcpd服务程序

  1. 安装dhcpd服务程序

    1
    # yum install dhcp
  2. 查看dhcpd服务程序的配置文件内容

    1
    2
    3
    4
    5
    6
    # vim /etc/dhcp/dhcpd.conf
    #
    # DHCP Server Configuration file.
    # see /usr/share/doc/dhcp*/dhcpd.conf.example
    # see dhcpd.conf(5) man page
    #

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 定义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. 配置dhcpd服务程序

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # vim /etc/dhcp/dhcpd.conf
    ddns-update-style none; #设置DNS服务不自动进行动态更新
    ignore client-updates; #忽略客户端更新DNS记录
    subnet 192.168.40.0 netmask 255.255.255.0 { #作用域为192.168.40.0/24网段
    range 192.168.40.50 192.168.40.100; #IP地址池为192.168.40.50-100
    option subnet-mask 255.255.255.0; #客户端默认子网掩码
    option routers 192.168.40.1; #客户端的网关地址
    option domain-name "zengzhilai.com"; #默认搜索域
    option domain-name-servers 192.168.40.1; #客户端的DNS地址
    default-lease-time 21600; #默认租约时间(单位:s)
    max-lease-time 43200; #最大预约时间
    }
  2. 启动dhcpd服务,并加入开机启动项

    1
    2
    3
    # systemctl start dhcpd
    # systemctl enable dhcpd
    ln -s '/usr/lib/systemd/system/dhcpd.service' '/etc/systemd/system/multi-user.target.wants/dhcpd.service'
  3. Linux客户机测试

    Linux客户机先虚拟网络编辑设置,去掉下图的功能,避免与自己配置的dhcpd服务程序产生冲突

    禁止本地DHCP分配IP地址给虚拟机

    客户机 Linux6.8 重启网络服务,查看此时的IP地址

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    # service network restart
    正在关闭接口 eth0: [确定]
    关闭环回接口: [确定]
    弹出环回接口: [确定]
    弹出界面 eth0:
    正在决定 eth0 的 IP 信息...完成。
    [确定]
    # ifconfig
    eth0 Link encap:Ethernet HWaddr 00:50:56:3E:86:08
    inet addr:192.168.40.50 Bcast:192.168.40.255 Mask:255.255.255.0
    inet6 addr: fe80::250:56ff:fe3e:8608/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:828 errors:0 dropped:0 overruns:0 frame:0
    TX packets:249 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:58920 (57.5 KiB) TX bytes:23319 (22.7 KiB)

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:16436 Metric:1
    RX packets:256 errors:0 dropped:0 overruns:0 frame:0
    TX packets:256 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:28791 (28.1 KiB) TX bytes:28791 (28.1 KiB)
  4. Window10客户端测试

    禁用WLAN、以太网

    禁用WLAN和以太网

    重启(即禁用再启用)VMware Network Adapter VMnet8

    在CMD中输入ipconfig/all查看网络信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    C:\Users\zengzhilai>ipconfig/all
    ......
    以太网适配器 VMware Network Adapter VMnet8:

    连接特定的 DNS 后缀 . . . . . . . : zengzhilai.com
    描述. . . . . . . . . . . . . . . : VMware Virtual Ethernet Adapter for VMnet8
    物理地址. . . . . . . . . . . . . : 00-50-56-C0-00-08
    DHCP 已启用 . . . . . . . . . . . : 是
    自动配置已启用. . . . . . . . . . : 是
    本地链接 IPv6 地址. . . . . . . . : fe80::f43d:45b2:8490:738e%14(首选)
    IPv4 地址 . . . . . . . . . . . . : 192.168.40.51(首选)
    子网掩码 . . . . . . . . . . . . : 255.255.255.0
    获得租约的时间 . . . . . . . . . : 2019年9月10日 3:10:56
    租约过期的时间 . . . . . . . . . : 2019年9月10日 9:10:56
    默认网关. . . . . . . . . . . . . : 192.168.40.1
    DHCP 服务器 . . . . . . . . . . . : 192.168.40.131
    DHCPv6 IAID . . . . . . . . . . . : 251678806
    DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-24-DB-67-0F-74-C6-3B-9A-E7-E9
    DNS 服务器 . . . . . . . . . . . : 192.168.40.1
    TCPIP 上的 NetBIOS . . . . . . . : 已启用
  5. 查看租约数据库/var/lib/dhcpd/dhcpd.leases

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    # cat /var/lib/dhcpd/dhcpd.leases
    # The format of this file is documented in the dhcpd.leases(5) manual page.
    # This lease file was written by isc-dhcp-4.2.5

    server-duid "\000\001\000\001%\011UV\000\014)J \342";

    lease 192.168.40.50 {
    starts 1 2019/09/09 19:00:58;
    ends 2 2019/09/10 01:00:58;
    cltt 1 2019/09/09 19:00:58;
    binding state active;
    next binding state free;
    rewind binding state free;
    hardware ethernet 00:50:56:3e:86:08;
    }
    lease 192.168.40.51 {
    starts 1 2019/09/09 19:10:56;
    ends 2 2019/09/10 01:10:56;
    cltt 1 2019/09/09 19:10:56;
    binding state active;
    next binding state free;
    rewind binding state free;
    hardware ethernet 00:50:56:c0:00:08;
    uid "\001\000PV\300\000\010";
    client-hostname "LAPTOP-VFVIEPCS";
    }

分配固定IP地址

  1. 获取boss主机的MAC地址

    先启动dhcpd服务程序,为boss的主机分配一个IP地址,然后查看DHCP服务器本地的日志文件(保存这次的IP地址分配记录),获取主机的MAC地址

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # tail -f /var/log/messages
    Sep 10 21:47:36 localhost dhcpd: DHCPOFFER on 192.168.40.51 to 00:50:56:c0:00:08 (LAPTOP-VFVIEPCS) via eno16777728
    Sep 10 21:47:37 localhost dhcpd: DHCPREQUEST for 192.168.40.51 (192.168.40.131) from 00:50:56:c0:00:08 (LAPTOP-VFVIEPCS) via eno16777728
    Sep 10 21:47:37 localhost dhcpd: DHCPACK on 192.168.40.51 to 00:50:56:c0:00:08 (LAPTOP-VFVIEPCS) via eno16777728
    Sep 10 21:47:38 localhost kernel: e1000: eno16777728 NIC Link is Down
    Sep 10 21:47:38 localhost NetworkManager[1227]: <info> (eno16777728): link disconnected (deferring action for 4 seconds)
    Sep 10 21:47:42 localhost NetworkManager[1227]: <info> (eno16777728): link disconnected (calling deferred action)
    Sep 10 21:47:44 localhost kernel: e1000: eno16777728 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
    Sep 10 21:47:44 localhost NetworkManager[1227]: <info> (eno16777728): link connected
    Sep 10 21:50:01 localhost systemd: Starting Session 31 of user root.
    Sep 10 21:50:01 localhost systemd: Started Session 31 of user root.
  2. 配置dhcpd服务文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # vim /etc/dhcp/dhcpd.conf
    ddns-update-style none;
    ignore client-updates;
    subnet 192.168.40.0 netmask 255.255.255.0 {
    range 192.168.40.50 192.168.40.100;
    option subnet-mask 255.255.255.0;
    option routers 192.168.40.1;
    option domain-name "zengzhilai.com";
    option domain-name-servers 192.168.40.1;
    default-lease-time 21600;
    max-lease-time 43200;
    #主机分配固定IP地址
    host boss { #boss是主机名(随意取)
    hardware ethernet 00:50:56:c0:00:08; #主机的MAC地址
    fixed-address 192.168.40.88; #欲指定的IP地址
    }
    }
  3. 查看boss主机的IP地址

    客户端网络信息

注意:有时候dhcpd服务启动没报错不代表配置参数没错,下面的出错点在hardware ehternet这里,很明显拼错单词了,应该是ethernet

DHCP配置错误