DHCP协议
DHCP(Dynamips Host configuration Protocal)动态主机配置协议是一种基于UDP协议且仅限于在局域网内部使用的网络协议,主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中,其主要用途是用于自动管理局域网内主机的IP地址、子网掩码、网关地址及DNS地址等参数,可以有效地提升IP地址的利用率,提高配置效率,并降低管理与维护成本。
在DHCP的工作原理中,DHCP服务器提供了三种IP分配方式:自动分配、手动分配和动态分配。
自动分配是当DHCP客户端第一次成功的从DHCP服务器获取一个IP地址后,就永久的使用这个IP地址。
手动分配是由DHCP服务器管理员专门制定的IP地址。
动态分配是由客户端第一次从DHCP服务器获取到IP地址后,并非永久使用该地址,每次使用完后,DHCP客户端就需要释放这个IP,供其他客户端使用。
- 准备工作
准备俩台linux 虚拟机,centos7作为DHCP服务器,让centos8自动获取IP地址和 绑定固定IP地址。
关闭iptables,selinux服务
[root@centos7 ~]# iptables -F
[root@centos7 ~]# systemctl stop firewalld
[root@centos7 ~]# setenforce 0
[root@centos7 ~]# vim /etc/selinux/config selinux=disabled
- 安装DHCP服务包并启动dhcp服务
[root@centos7 ~]# yum install dhcp
[root@centos7 ~]# systemctl start dhcpd.service
- 发现dhcpd服务启动失败,原因是未配置dhcp.conf⽂件
[root@centos7 ~]# systemctl status dhcpd.service
● dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Tue 2019-11-12 10:35:00 CST; 36s ago
Docs: man:dhcpd(8)
man:dhcpd.conf(5)
Process: 4413 ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid (code=exited, status=1/FAILURE)
Main PID: 4413 (code=exited, status=1/FAILURE)
Nov 12 10:35:00 centos7.localdomain dhcpd[4413]: Internet Systems Consortium DHCP Se...5
Nov 12 10:35:00 centos7.localdomain dhcpd[4413]: Copyright 2004-2013 Internet System....
Nov 12 10:35:00 centos7.localdomain dhcpd[4413]: All rights reserved.
Nov 12 10:35:00 centos7.localdomain dhcpd[4413]: For info, please visit https://www..../
Nov 12 10:35:00 centos7.localdomain dhcpd[4413]: Not searching LDAP since ldap-serve...e
Nov 12 10:35:00 centos7.localdomain dhcpd[4413]: Wrote 0 leases to leases file.
Nov 12 10:35:00 centos7.localdomain systemd[1]: dhcpd.service: main process exited, ...E
Nov 12 10:35:00 centos7.localdomain systemd[1]: Failed to start DHCPv4 Server Daemon.
Nov 12 10:35:00 centos7.localdomain systemd[1]: Unit dhcpd.service entered failed state.
Nov 12 10:35:00 centos7.localdomain systemd[1]: dhcpd.service failed.
Hint: Some lines were ellipsized, use -l to show in full.
- 修改dhcp配置⽂件
[root@centos7 ~]# rpm –ql dhcp | grep example
[root@centos7 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@centos7 ~]# vim /etc/dhcp/dhcpd.conf
#其中全局语句块和subnet语句块均可使配置生效,subnet语句块优先级高于全局语句块:
#全局语句块:
# option definitions common to all supported networks...
#指定获取主机域后缀:
option domaim-name "wxlinux.com"
#指定DNS,可选
option domain-name-servers 114.114.114.114,8.8.8.8
#结合生产环境,ip越充足,租期越大越好
default-least-time 86400
#最大租期时间
max-lease-time 100000
**自动分配IP**
#subnet语句块:
# This is a very basic subnet declaration. subnet 192.168.30.0 netmask 255.255.255.0 {
#指定ip地址范围
range 192.168.30.10 192.168.30.100;
#指定网关
option router 192.168.30.1
}
**绑定固定IP**
# Fixed IP addresses can also be specified for hosts. These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP. Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
host centos8 {
hardware ethernet 00:0c:29:67:bf:e0;
fixed-address 192.168.39.55;
}
- 重启dhcp服务,并设置开机⾃启动:
[root@centos7 ~]# systemctl start dhcpd.service
[root@centos7 ~]# systemctl enable dhcpd.service
- 切换到另外⼀台CentOS8虚拟机,查看是否获取到ip地址
[root@CentOS8 ~]#ip a
ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:67:bf:e0 brd ff:ff:ff:ff:ff:ff
inet 192.168.39.49/24 brd 192.168.39.255 scope global dynamic noprefixroute ens33
valid_lft 1358sec preferred_lft 1358sec
inet6 fe80::b5ac:cb7a:3885:5034/64 scope link noprefixroute
valid_lft forever preferred_lft forever
执⾏命令重新获取ip地址
dhclient –d
ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:67:bf:e0 brd ff:ff:ff:ff:ff:ff
inet 192.168.39.49/24 brd 192.168.39.255 scope global dynamic noprefixroute ens33
valid_lft 1297sec preferred_lft 1297sec
inet 192.168.39.45/24 brd 192.168.39.255 scope global secondary dynamic ens33
valid_lft 1846sec preferred_lft 1846sec
inet6 fe80::b5ac:cb7a:3885:5034/64 scope link noprefixroute
valid_lft forever preferred_lft forever
利用systemctl status dhcpd分发地址的过程,dhcp服务搭建成功
[root@centos7 ~]# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2019-11-12 10:55:00 CST; 3min 44s ago
Docs: man:dhcpd(8)
man:dhcpd.conf(5)
Main PID: 4524 (dhcpd)
Status: "Dispatching packets..."
CGroup: /system.slice/dhcpd.service
└─4524 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcp...
Nov 12 10:55:00 centos7.localdomain dhcpd[4524]: Sending on Socket/fallback/fallba...t
Nov 12 10:55:00 centos7.localdomain systemd[1]: Started DHCPv4 Server Daemon.
Nov 12 10:55:58 centos7.localdomain dhcpd[4524]: DHCPREQUEST for 192.168.39.53 from ...0
Nov 12 10:55:58 centos7.localdomain dhcpd[4524]: DHCPACK on 192.168.39.53 to 00:0c:2...0
Nov 12 10:57:02 centos7.localdomain dhcpd[4524]: DHCPDISCOVER from 00:0c:29:67:bf:e0...0
Nov 12 10:57:03 centos7.localdomain dhcpd[4524]: DHCPOFFER on 192.168.39.45 to 00:0c...0
Nov 12 10:57:05 centos7.localdomain dhcpd[4524]: DHCPDISCOVER from 00:0c:29:67:bf:e0...0
Nov 12 10:57:05 centos7.localdomain dhcpd[4524]: DHCPOFFER on 192.168.39.45 to 00:0c...0
Nov 12 10:57:05 centos7.localdomain dhcpd[4524]: DHCPREQUEST for 192.168.39.45 (192....0
Nov 12 10:57:05 centos7.localdomain dhcpd[4524]: DHCPACK on 192.168.39.45 to 00:0c:2...0
Hint: Some lines were ellipsized, use -l to show in full.