如何在 CentOS 和 Ubuntu 上设置 DHCP 服务器和客户端
DHCP(动态主机配置协议的缩写)是一种客户端/服务器协议,使服务器能够自动分配 IP 地址和其他相关配置参数(例如子网掩码)和默认网关)到网络上的客户端。
DHCP 非常重要,因为它可以防止系统或网络管理员为添加到网络的新计算机或从一个子网移动到另一个子网的计算机手动配置 IP 地址。
DHCP服务器分配给DHCP客户端的IP地址是“租用”的,租用时间通常根据租用时间的长短而变化。客户端计算机可能需要连接或 DHCP 配置。
在本文中,我们将解释如何在 CentOS 和 Ubuntu Linux 发行版中配置 DHCP 服务器,以自动为客户端计算机分配 IP 地址。
在 CentOS 和 Ubuntu 中安装 DHCP 服务器
DCHP服务器包在主流Linux发行版的官方仓库中都有,安装非常简单,只需运行以下命令即可。
yum install dhcp #CentOS
sudo apt install isc-dhcp-server #Ubuntu
安装完成后,在配置文件 /etc/default/isc-dhcp-server 或 /etc/default/isc-dhcp-server 或 > /etc/sysconfig/dhcpd。
vim /etc/sysconfig/dhcpd #CentOS
sudo vim /etc/default/isc-dhcp-server #Ubuntu
例如,如果您希望 DHCPD 守护进程侦听 eth0
,请使用以下指令进行设置。
DHCPDARGS=”eth0”
保存文件并退出。
在 CentOS 和 Ubuntu 中配置 DHCP 服务器
主要的 DHCP 配置文件位于 /etc/dhcp/dhcpd.conf
,其中应包含要执行的操作、在何处执行操作以及要提供的所有网络参数的设置给客户。
该文件基本上由分为两大类的语句列表组成:
- 全局参数:指定如何执行任务、是否执行任务或向 DHCP 客户端提供哪些网络配置参数。
- 声明:定义网络拓扑、客户端所在状态、为客户端提供地址或将一组参数应用于一组声明。
现在,打开并编辑配置文件以配置 DHCP 服务器。
------------ On CentOS ------------
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vi /etc/dhcp/dhcpd.conf
------------ On Ubuntu ------------
sudo vim /etc/dhcp/dhcpd.conf
首先在文件顶部定义所有支持的网络通用的全局参数。它们将适用于所有声明:
option domain-name "tecmint.lan";
option domain-name-servers ns1.tecmint.lan, ns2.tecmint.lan;
default-lease-time 3600;
max-lease-time 7200;
authoritative;
接下来,您需要为内部子网定义一个子网,即 192.168.1.0/24,如图所示。
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-search "tecmint.lan";
option domain-name-servers 192.168.1.1;
range 192.168.10.10 192.168.10.100;
range 192.168.10.110 192.168.10.200;
}
请注意,需要特殊配置选项的主机可以在主机语句中列出(请参阅dhcpd.conf手册页)。
现在您已经配置了 DHCP 服务器守护程序,您需要同时启动该服务并使其在下次系统启动时自动启动,并使用以下命令检查其是否已启动并运行。
------------ On CentOS ------------
systemctl start dhcpd
systemctl enable dhcpd
systemctl enable dhcpd
------------ On Ubuntu ------------
sudo systemctl start isc-dhcp-server
sudo systemctl enable isc-dhcp-server
sudo systemctl enable isc-dhcp-server
接下来,通过运行允许对防火墙上的 DHCP 守护程序发出请求,该守护程序侦听端口 67/UDP。
------------ On CentOS ------------
firewall-cmd --zone=public --permanent --add-service=dhcp
firewall-cmd --reload
#------------ On Ubuntu ------------
sudo ufw allow 67/udp
sudo ufw reload
配置 DHCP 客户端
最后,您需要测试DHCP服务器是否工作正常。登录到网络上的几台客户端计算机并将它们配置为自动从服务器接收 IP 地址。
修改客户端自动接收 IP 地址的接口的相应配置文件。
CentOS 上的 DHCP 客户端设置
在CentOS上,接口配置文件位于/etc/sysconfig/network-scripts/。
vim /etc/sysconfig/network-scripts/ifcfg-eth0
添加以下选项:
DEVICE=eth0
BOOTPROTO=dhcp
TYPE=Ethernet
ONBOOT=yes
保存文件并重新启动网络服务(或重新启动系统)。
systemctl restart network
Ubuntu 上的 DHCP 客户端设置
在Ubuntu 16.04上,您可以在配置文件/etc/network/interfaces中配置所有接口。
sudo vi /etc/network/interfaces
在其中添加这些行:
auto eth0
iface eth0 inet dhcp
保存文件并重新启动网络服务(或重新启动系统)。
sudo systemctl restart networking
在 Ubuntu 18.04 上,网络由 Netplan 程序控制。例如,您需要编辑目录 /etc/netplan/ 下的相应文件。
sudo vim /etc/netplan/01-netcfg.yaml
然后在特定接口下启用dhcp4,例如在以太网、ens0下,并注释掉静态IP相关配置:
network:
version: 2
renderer: networkd
ethernets:
ens0:
dhcp4: yes
保存更改并运行以下命令以使更改生效。
sudo netplan apply
有关详细信息,请参阅 dhcpd 和 dhcpd.conf 手册页。
man dhcpd
man dhcpd.conf
在本文中,我们解释了如何在 CentOS 和 Ubuntu Linux 发行版中配置 DHCP 服务器。如果您需要对任何问题进行更多说明,您可以通过下面的反馈表提出问题,或者直接与我们分享您的意见。