我架设DHCP服务使用的是CentOS 7.0.1406,核心版本号为3.10.0-123.el7.x86_64。CentOS系统安装在虚拟机上面,然后通过虚拟网卡来串接到GNS 3中架设的虚拟网络上面。整个网络拓扑是这样的:

   在CentOS 7系统上架设DHCP服务_架设

如果你不是很清楚虚拟机中的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)是连带安装上去的。

       在CentOS 7系统上架设DHCP服务_DHCP_02

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,如下图所示:

   在CentOS 7系统上架设DHCP服务_架设_03

如果服务未成功启动的话,此时可以查看一下/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了:

   在CentOS 7系统上架设DHCP服务_CentOS 7_04

可以看到,所有客户端都有正常获取到IP,子网掩码和网关也都是正确的。

 

 

注:上面的很多信息主要来自于红帽的官方文档,附上链接https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/,打开链接后,里面有个Networking Guide,就在这个文档里面有介绍如何架设DHCP服务器,有兴趣可以看看。