1. DHCP 服务简介
DHCP(Dynamic Host Configuration Protocol), 动态主机配置协议,DHCP 协议主要是用来自动为局域网中的客户机分配 TCP/IP 信息的网络协议,并完成每台客户机的 TCP/IP 协议配置。当我们将局域网中客户机 IP 地址设置为动态获取方式时,DHCP 服务器就会根据 DHCP 协议给客户机自动分配 IP 地址,使得客户机能够使用这个 IP 地址。
DHCP 的前身是 BOOTP 协议(Bootstrap Protocol),BOOTP 被创建出来为连接到网络中的设备自动分配地址,后来被 DHCP 取代了,DHCP 比 BOOTP 更加复杂,功能更强大。所有的 IP 网络参数(包括 IP 地址、网关和 DNS 服务器地址等)都由 DHCP 服务器集中管理,并负责处理客户端的 DHCP 要求;而客户端则会使用从服务器分配的 IP 网络参数。
2. 使用 DHCP 的优点
3. DHCP 的工作过程
4. DHCP 客户机自动更新 IP 租约
客户机租约期限已过去 50%,自动尝试更新租约;当期限过去 87.5% 时,发出广播再次更新租约;若租约已经到期 (100%),客户机必须立即停止使用当前的 IP 地址。然后客户机开始新的 DHCP 租约过程,尝试租用新的 IP 地址。
二、系统环境
系统平台: CentOS 7.3
DHCP Server: 192.168.8.88
更改主机名,写 / etc/hosts 记录
# vim /etc/hosts 192.168.8.88 DHCP -- 最后添加 DHCP 服务器 IP 地址和主机名 / 别名 |
关闭防火墙
# systemctl stop firewalld -- 临时关闭防火墙 # systemctl disable firewalld -- 永久关闭防火墙 |
关闭 selinux
临时关闭:
# setenforce 0 |
永久关闭:
# vim /etc/selinux/config SELINUX=disabled -- 将 enforcing 改为 disabled # reboot -- 重启系统永久生效 |
三、CentOS 下的 DHCP 服务
准备两台机器,一台作为 DHCP 服务器,一台作为客户机,如下图:
1. 在服务器上安装 DHCP 软件包
# yum -y install dhcp* -- 安装 dhcp 软件包 如果已经安装过了,则显示 "无须任何处理" |
安装好后,配置文件目录:/etc/dhcp/dhcpd.conf
分给客户端 IP 的记录文件:/var/lib/dhcpd/dhcpd.leases
2. 配置 DHCP
把系统默认的样例复制到 / etc/dhcp/dhcpd.conf 文件里
# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf cp:是否覆盖 "/etc/dhcp/dhcpd.conf"? y -- 输 y 覆盖原文件 |
# vim /etc/dhcp/dhcpd.conf -- 修改配置文件 7 option domain-name "example.org"; --DNS 域名 8 option domain-name-servers ns1.example.org, ns2.example.org; --DNS 的域服务器 9 10 default-lease-time 600; -- 默认的租约时间,秒为单位 11 max-lease-time 7200; -- 最大的租约时间,秒为单位 14 #ddns-update-style none; -- 表示要不要把 IP 地址的更新情况告诉 DNS 服务器,默认是关闭的 22 log-facility local7; -- 定义日志服务,可以在日志配置文件中查看具体日志位置,默认是:/var/log/boog.log,但是在 / var/log/messages 里面也会记录 dhcp 日志 47 subnet 192.168.8.0 netmask 255.255.255.0 { -- 分配的网段及子网掩码,代表只在 192.168.8.x 这个 C 类网段里生效,子网掩码设为 255.255.255.048 range 192.168.8.30 192.168.8.60; -- 代表给客户机分配可用的 IP 范围,起始到结束, 尽量不要包含 DHCP 服务器的 IP 地址 49 option domain-name-servers 192.168.8.88; -- 配置要分配给客户端的 DNS 地址,这里我们设为 DHCP 服务器的 IP 地址 50 option domain-name "internal.example.org"; --DNS 的域名51 option routers 192.168.8.88; -- 配置分配给客户机的路由网关,这里我们设为 DHCP 服务器的 IP 地址 52 option broadcast-address 192.168.8.255; -- 给客户机指定广播地址,配置 192.168.8.x 这个网段的广播地址 53 default-lease-time 600; -- 指定租约时间,秒为单位 54 max-lease-time 7200; -- 指定最大租约时间,秒为单位 55 } 75 host fantasia { -- 将 MAC 地址和 IP 绑定,host 后面的名字随意,如:fantasia 76 hardware ethernet 08:00:07:26:c0:a5; --MAC 地址 77 fixed-address fantasia.fugue.com; --IP 地址 78 } 85 class "foo" { -- 定义多个子网,class 后面写组名 86 match if substring (option vendor-class-identifier, 0, 4) = "SUNW"; 87 } 88 89 shared-network 224-29 { -- 定义多个子网,要从大往小写 90 subnet 10.17.224.0 netmask 255.255.255.0 { 91 option routers rtr-224.example.org; 92 } 93 subnet 10.0.29.0 netmask 255.255.255.0 { 94 option routers rtr-29.example.org; 95 } 96 pool { 97 allow members of "foo"; 98 range 10.17.224.10 10.17.224.250; 99 } 100 pool { 101 deny members of "foo"; 102 range 10.0.29.10 10.0.29.230; 103 } 104 } |
修改红色标注位置就可以了,修改完成之后,保存退出。
3、启动 DHCP 服务
# systemctl restart dhcpd.service -- 重启 DHCP 服务 # systemctl enable dhcpd.service -- 设置为开机自启动 # netstat -anlp | grep dhcpd -- 查看 dhcp 服务端口为 67 |
4、来到客户机验证
把客户端机的网卡配置成 dhcp, 再重启网络服务
# vim /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO=dhcp -- 网卡指定方式改为 dhcp # systemctl restart network.service -- 重启网卡 |
打开日志文件查看分配的 IP 地址
服务器:
# tail -f /var/log/messages -- 在服务器上监听日志 |
客户机:
打开两个终端窗口:一个查看日志,一个重启网络。
查看日志
# tail -f /var/log/messages |
重启网络
# systemctl restart NetworkManager -- 重启这个服务,每次重启网络服务时,系统都会重新去 DHCP 服务器上获取 IP 地址 |
查看 IP
# ifconfig -- 查看 IP |
查看网关
# route -n | grep UG -- 查看网关 |
查看路由
# cat /etc/resolv.conf -- 查看路由 |
5、如果要把客户机分配的 IP 给固定的话,可以在服务器做如下配置
# vim /etc/dhcp/dhcpd.conf -- 分给客户机 IP 的记录文件 在文件的最下面加上下面一段代码即可 75 host Client { --host 后面接的是客户机主机名称,可以自定义,建议为主机名 76 hardware ethernet 00:0c:29:82:6f:db; -- 代表客户机的物理 MAC 地址 77 fixed-address 192.168.8.40; -- 代表如果有遇到物理 MAC 地址为上面一行的,则分配这行的 IP 给它 78 } |
6、客户机获取 IP
先清除客户机 IP 地址缓存
# systemctl restart dhcpd.service -- 重启 DHCP 服务 测试,重复第 4 步 |
# systemctl restart NetworkManager -- 重启这个服务,每次重启网络服务时,系统都会重新去 DHCP 服务器上获取 IP 地址 # ifconfig -- 查看 IP,应该为设定的 IP,即 192.168.8.40 |
来源: http://www.bubuko.com/infodetail-2438910.html