安装DHCP服务

本篇,和大家一起学习如何在CentOS7里面安装我们自己的DHCP服务。DHCP被用来分配IP地址,或者其他一些特殊的和client端相关的地址需求。如果一个系统已经配置了静态地址,那么它已经具有了所有必要的网络信息,如果一个系统配置IP地址通过DHCP广播请求的方式,需要等待DHCP服务响应一下地址请求。

Getting ready

学习本篇,需要有一个CentOS系统,联网,且需要管理员权限。

注意

在同一个局域网里面,最好只有一个DHCP服务,避免响应冲突导致的网络不稳定。很多路由器已经具有了DHCP功能,所以,在部署自己的DHCP前,先检查确认下局域网里是否已经有了DHCP服务。

How to do it...

大家跟随我的脚本来配置DHCP服务:

  • 安装dhcp软件包
yum install dhcp
  • 复制软件包已经有的配置文件来作为我们的起始配置文件:
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  /etc/dhcp/dhcpd.conf
  • 打开我们准备好的dhcpd.conf文件:
vi /etc/dhcp/dhcpd.conf
  • 根据我们的环境,修改配置文件。一般情况下,我们需要配置如下选项:domain-name、domain-name-servers、subnet、dynamic-bootp range、boradcast-address 以及 routers。下面是一个两个子网的例子:
# option definitions common to all supported networksoption domain-name localdomain;option domain-name-servers ns1.localdomain;default-lease-time 600;max-lease-time 7200;# This DHCP server is the official DHCP server for the# local networkauthoritative;# No service will be given on this subnet, but declaring# it helps the server to understand the network topology.subnet 192.168.56.0 netmask 255.255.255.0 {}# This is a basic subnet declarationsubnet 192.168.56.0 netmask 255.255.255.128 { range 192.168.56.110 192.168.56.120; option domain-name-servers ns1.localdomain; option domain-name "localdomain"; option routers 192.168.56.1; option broadcast-address 192.168.56.127;}# This is the second subnetsubnet 192.168.56.128 netmask 255.255.255.128 { range 192.168.56.200 192.168.56.210; option domain-name-servers ns2.sub.localdomain; option domain-name "sub.localdomain"; option routers 192.168.56.129; option broadcast-address 192.168.56.255;}
  • 保存更改,退出文件。
  • 启动服务,并将服务设置成开机自启动:
systemctl start dhcpdsystemctl enable dhcpd
  • 打开系统防火墙,允许dhcp服务通过(开启了67和68端口,真神奇,一个命令同时开两个端口):
firewall-cmd --zone=public --permanent --add-service=dhcpfirewall-cmd --reload

How it works...

如果我们的系统配置成DHCP获取地址,那么它会广播一个请求,然后等待一个DHCP服务器的响应。服务器的响应使得我们的客户端系统知道哪个IP地址、掩码、网关等信息。DHCP服务分配的地址一般是租用的,意思是,过了一定的时间后,分配的地址会过期,客户端系统需要重新请求。DHCP服务器,除了分发连接信息之外,必须跟踪自己分配出去的地址,保证客户端系统不会和其他客户端拿到一样的IP地址(避免冲突)。

我们从安装dhcpd软件包开始,包括服务端和配置示例。拷贝配置示例作为我们配置的起点:

cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

在配置文件中,有一些笛梵需要我们根据实际网络需求做出修改。案例中提供的最小配置文件反映了划分为两个子网的网络。每个子网都有自己的定义。

仔细看看第一个子网的定义,subnet ID是192.168.56.0,掩码255.255.255.128。range选项限制了DHCP服务在分配IP地址时候的方位是192.168.56.110到120(其他地址依然有效,只是DHCP服务器不会分配,其他静态地址客户端可以自行配置使用)。其他选项配置了子网的广播地址和网关,以及domain name和dns服务器(覆盖了全局的选项):

# This is a basic subnet declarationsubnet 192.168.56.0 netmask 255.255.255.128 { range 192.168.56.110 192.168.56.120; option domain-name-servers ns1.localdomain; option domain-name "localdomain"; option routers 192.168.56.1; option broadcast-address 192.168.56.127;}

配置DHCP服务需要了解计算机网络。这是一个复杂的话题,我们不能面面俱到。建议大家阅读dhcpd.conf的手册。手册可以通过如下方式获得:

man 5 dhcpd.conf




centos 7网卡配置 centos7网卡配置dhcp_子网

dhcpd.conf 手册



一旦 DHCP 服务器配置并运行, 我们就需要在防火墙上戳一个洞, 以允许请求和响应自由流动。DHCP 请求使用 UDP 和端口67和 68 (您可以允许它们使用为 FirewallD 定义的服务):

firewall-cmd --zone=public --permanent --add-service=dhcpfirewall-cmd --reload

See also

For more information on setting up a DHCP server, refer to the following resources:

  • The dhcpd.conf manual page (man 5 dhcpd.conf)
  • RHEL 7 Networking Guide: DHCP Servers (https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/ch-DHCP_Servers.html)
  • Quick Start: Setup CentOS 7 as a DHCP Server (www.yoyoclouds.com/2015/01/quick-start-setup-centos-7-as-dhcp.html)
  • Subnet Calculator (www.subnet-calculator.com)

后记

本篇文章翻译自《CentOS 7 Server Deployment Cookbook》。