我架设DHCP服务使用的是CentOS 7.0.1406,核心版本号为3.10.0-123.el7.x86_64。CentOS系统安装在虚拟机上面,然后通过虚拟网卡来串接到GNS 3中架设的虚拟网络上面。整个网络拓扑是这样的:
如 果你不是很清楚虚拟机中的CentOS系统到底是怎么接到GNS 3中的虚拟网络上面,也没关系,就把上图中的那个标注为虚拟机的PC看做是运行着CentOS 7系统的服务器就行了。我这篇文章也只是介绍怎么在CentOS 7系统上架设DHCP服务,并不介绍关于GNS 3的使用和网络的知识。
要架设DHCP服务,可按照如下步骤进行:
1. 安装DHCP软件
安装DHCP软件使用命令:yum install dhcp
安装完成后,就可看到有dhcp.x86_64这个软件,如下图所示。另外两个软件(dhcp-common.x86_64和dhcp-libs.x86_64)是连带安装上去的。
2. 设置配置文件/etc/dhcp/dhcpd.conf
安 装好DHCP软件后,就需要设置配置文件/etc/dhcp/dhcpd.conf。要设置dhcpd.conf这个配置文件,可以先看一下档案/usr /share/doc/dhcp*/dhcpd.conf.example,里面有一些例子和简单的说明。也可以使用命令man 5 dhcpd.conf查看更详细的说明。
在我这个案例中,我是这么设置dhcpd.conf文档的:
---------------------------------------------------------------------------------------------------------------------------------
[root@localhost~]# vim /etc/dhcp/dhcpd.conf
authoritative;
default-lease-time600;
max-lease-time7200;
optiondomain-name "test.com";
optiondomain-name-servers 114.114.114.114;
#
#authoritative指明本DHCP服务器是所服务网段的官方DHCP服务器。一般情况下,配置文件中要设置authoritative,如果不设置,可能会有一些问题。
#default-lease-time设置默认租约有效期,以秒为单位。如果客户端在请求IP地址时并未要求租约有效期,DHCP服务器就会将租约有效期设置为这个值。
#max-lease-time,单位为秒。在鸟哥的书中,这个值是设置客户端可请求的最大租约有效期,而不是客户端所能使用一个IP的最长时间。man文档里面也有解释“Time should be the maximumlength in seconds that will be assigned to a lease”,不过这到底是哪个意思,我就不太确定了。
#optiondomain-name设置域名。
#optiondomain-name-servers设置DNS服务器,这里只设置了一个DNS服务器,也可以设置两个 ,格式参照文档/usr/share/doc/dhcp*/dhcpd.conf.example。
#
subnet172.31.3.0 netmask 255.255.255.0 {
range 172.31.3.10 172.31.3.200;
option routers 172.31.3.254;
option broadcast-address 172.31.3.255;
}
host pc2 {
hardware ethernet 00:50:79:66:68:01;
fixed-address 172.31.3.201;
}
#
subnet172.31.1.0 netmask 255.255.255.0 {
range 172.31.1.10 172.31.1.200;
option routers 172.31.1.254;
option broadcast-address 172.31.1.255;
}
host pc4 {
hardware ethernet 00:50:79:66:68:03;
fixed-address 172.31.1.201;
}
host pc5 {
hardware ethernet 00:50:79:66:68:04;
fixed-address 172.31.1.202;
}
#
#subnet语句指定子网和子网掩码。
#range语句指定可动态分配的IP的IP地址范围。
#option routers语句指定网关地址。
#optionbroadcast-address指定广播地址。这个不是很确定是不是一定要设置,在我这个虚拟网络中,不设置也能正常运行,但在实际网络中,不设置的话不知道会不会有问题。
#host语句可以给指定MAC地址(hardware ethernet所设置的值)的主机分配固定的IP地址(fixed-address所设置的值)。host后面接的那个是一个名称来的(如pc2),这个名称是可以随便设置的,不用跟实际的主机名一致,但是该名称在本配置文件中必须是唯一的。
---------------------------------------------------------------------------------------------------------------------------------
3. 启动dhcpd服务
设置完配置文件后,最后就是启动dhcpd服务了,使用命令:systemctl start dhcpd.service
如果没什么问题的话,DHCP服务器就部署好了。此时,可以查看到dhcpd在监听端口67,如下图所示:
如 果服务未成功启动的话,此时可以查看一下/var/log/messages日志文件(使用命令cat/var/log/messages | grep dhcp),默认DHCP的日志都会记录在该文件中。如果要查看已分配的IP,可以查看文件/var/lib/dhcpd/dhcpd.leases,不 过好像里面只会记录了动态分配的IP,而不会记录固定IP(如前面配置文件中的172.31.3.201),即使该IP已被分配出去。正如前面已经提到 的,要了解配置文件dhcpd.conf的更详细配置信息,可查看man文档(使用命令man 5 dhcpd.conf)。而要了解配置文件dhcpd.conf里面各option的详细信息,则要查看另一个man文档(使用命令man 5 dhcp-options)。
要 查看服务状态的话,可使用命令systemctl statusdhcpd.service。如果要停止DHCP服务的话,则是使用命令systemctl stop dhcpd.service。修改配置文件后,要使配置文件生效,则可使用命令systemctl restart dhcpd.service。当然,如果是在实际生产环境中,就不能随意改变配置文件并重启DHCP服务了,而是要使用omshell这个命令,按官方文 档的说法,这个命令可以在服务不中止的情况下改变配置。
4. 设置服务开机启动
要设置dhcpd服务开机启动,使用命令:systemctl enable dhcpd.service。
如果要检查服务是否的确已设置为开机启动,可使用命令systemctl list-unit-files。如果要取消服务开机启动,可使用命令systemctldisable dhcpd.service。
5. 检查测试
到上面为止,所有的配置都已完成。最后,就是要看一下客户端能否通过DHCP协议正常获取IP了:
可以看到,所有客户端都有正常获取到IP,子网掩码和网关也都是正确的。
注:上面的很多信息主要来自于红帽的官方文档,附上链接https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/,打开链接后,里面有个Networking Guide,就在这个文档里面有介绍如何架设DHCP服务器,有兴趣可以看看。