实验目的:搭建一台dhcp服务器给一台客户机分配ip地址、dns和网关,并使客户机顺利上网
系统:Centos7
软件:VMware Workstation 15.0.0
准备一台虚拟机作为dhcp服务器,以下操作都在服务器上进行
安装dhcp软件包
ping www.baidu.com -c 2 # 确认能上网
yum install dhcp -y
[root@localhost ~]$ cd /etc/dhcp/ # 主目录
[root@localhost dhcp]$ ls
dhclient.d dhclient-exit-hooks.d dhcpd6.conf dhcpd.conf scripts
其中,
dhcpd.conf是ipv4的主要配置文件
dhcpd6.conf是ipv6的主要配置文件
[root@localhost dhcp]$ vim dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
~
~
发现有个样例文件,复制到/etc/dhcp目录,覆盖原文件
[root@localhost dhcp]$ cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@localhost dhcp]$ ls
dhclient.d dhclient-exit-hooks.d dhcpd6.conf dhcpd.conf scripts
[root@localhost dhcp]$ vim dhcpd.conf
只保留如下最基础的配置
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
# A slightly different configuration for an internal subnet.
subnet 10.5.5.0 netmask 255.255.255.224 {
range 10.5.5.26 10.5.5.30;
option domain-name-servers ns1.internal.example.org;
option domain-name "internal.example.org";
option routers 10.5.5.1;
option broadcast-address 10.5.5.31;
default-lease-time 600;
max-lease-time 7200;
}
编辑配置
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7; # 指定日志类型,local7的日志在/var/log/boot.log/目录下
# A slightly different configuration for an internal subnet.
subnet 192.168.88.0 netmask 255.255.255.0 { # 分配ip地址的网段号和子网掩码
range 192.168.88.1 192.168.88.254; # 地址池范围
option domain-name-servers 114.114.114.114; # 域名服务器,一个就行了
option routers 192.168.88.1; # 网关地址
# 广播地址这里没有配置
default-lease-time 600; # 租约时长,单位s
max-lease-time 7200; # 最大时长两个小时
}
[root@localhost dhcp]$ service dhcpd start # 启动服务
Redirecting to /bin/systemctl start dhcpd.service
[root@localhost dhcp]$ ps aux|grep dhcpd # 检查进程
dhcpd 1696 0.0 0.8 105892 8124 ? Ss 17:53 0:00 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid
root 1698 0.0 0.0 112828 988 pts/0 S+ 17:54 0:00 grep --color=auto dhcpd
[root@localhost dhcp]$ netstat -anplut|grep dhcp # 检查端口
udp 0 0 0.0.0.0:67 0.0.0.0:* 1696/dhcpd
如上则启动成功
启动服务时如果出现如下错误提示
[root@localhost dhcp]# service dhcpd start
Redirecting to /bin/systemctl start dhcpd.service
Job for dhcpd.service failed because the control process exited with error code. See "systemctl status dhcpd.service" and "journalctl -xe" for details.
可以执行journalctl -xe查看执行日志,根据标红提示检查配置哪里出错了
配置一台虚拟机用于做dhcp客户机,建议客户机的原ip地址不在dhcp服务器分配范围内,这样效果更明显,以下操作在客户机上进行
修改ip配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33,只保留其中四行,配置如下
BOOTPROTO="dhcp" # 指定ip地址获得方式,dhcp为动态获得,none为静态配置
NAME="ens33"
DEVICE="ens33" # 网卡的名字
ONBOOT="yes" # 开机启动网卡
此时释放IP地址 dhclient -r 后再启用ip地址 dhclient ens33 后,可能会出现以下情况:
一.还是原ip地址
先检查防火墙是否关闭,防火墙不关闭可能无法释放ip地址,输入service firewalld stop关闭防火墙
其次可能是第一次连接新的dhcp服务器,所以ip请求会慢一点,稍等一会儿再查看ip地址
如果ip释放不掉的时候可以尝试 dhclient -v 命令后再尝试释放就可以了,-v选项可以启动dhcp服务的同时输出详细信息,至于为什么执行后就可以释放ip,具体原理小伙伴们感兴趣的可以自行查阅资料
最后还是原IP地址的话,则是因为客户端虚拟机会保留之前用过的ip地址,dhcp请求时也会请求之前的ip地址,而VMware服务虚拟了一个dhcp服务来给我们的虚拟机分配了原来的ip,换句话说,VMware的虚拟dhcp服务在和我们的dhcp服务器抢生意,并且我们的客户机更乐意去照顾老朋友VM的生意,导致ip地址不变。那我们可以在启用ip地址时指定我们搭建的dhcp服务器:
dhclient -s 这里写我们配置的dhcp服务器ip地址 ens33
此时我们的ip就是新dhcp服务器分配的了
二.搭建的dhcp服务器分配的ip地址
这样一次成功的情况应该只会发生在新机器身上,我们搭建的dhcp服务器抢到了这个新用户
三.同时拥有两个ip地址
一个是原地址,一个是我们搭建的dhcp服务器分配的地址,这是因为一张网卡可以有多个ip地址,所以这样也算是成功了,不过这样可能不能确定出新的ip地址能不能正常上网,所以建议和第一种情况一样,启用dhcp服务时指定我们搭建的dhcp服务器
最后测试客户机能否上网
此时可用ping www.baidu.com来测试一下新的ip地址是否可以上网
不能上网则要检查dhcp服务器的dns和网关是否配置正确了,注意修改服务器的配置文件后记得重启dhcp服务:service dhcpd restart。
到这里整个dhcp服务器的搭建实验差不多就结束了,该实验只是搭建了一个基础的dhcp服务,更高级的配置小伙伴们可以自行查阅资料,如果有问题的小伙伴可以在评论区提问哦