linux的dhcp常见问题 (linux中dhcp服务器配置详细步骤)

了解DHCP

DHCP是一种为网络设备提供IP地址的快捷方式。 DNS和DHCP紧密相关 - 一个提供IP地址,另一个提供IP地址到主机名的映射,反之亦然。 DHCP可以与DNS集成,以便在将DHCP IP地址传递给网络设备时,然后更新DNS以反映设备的名称。 或者,可以为DHCP IP地址指定预定名称,因此无需动态更新DNS。 DHCP在企业中使用的原因有很多,例如提供以下内容:

  • 使用Kickstart在主机配置期间的IP地址
  • 企业网络中无线客户端的IP地址,例如笔记本电脑和智能手机
  • 互联网协议语音(VoIP)客户端IP地址,例如VoIP电话
  • 桌面IP地址
  • 员工,访客和承包商的笔记本电脑IP地址

服务器通常没有DHCP IP地址; 相反,它们被赋予静态IP地址。

DHCP企业架构

企业的安全工程师可能会对DHCP不满,因为很难跟踪DHCP分配的IP地址。例如,如果攻击是从给定的IP地址发生的,则在静态IP地址分配的情况下,可以在IP地址管理数据库中查找IP所属的设备,然后将其跟踪。使用DHCP,除非进行DHCP预留,否则IP地址可能属于网络上任何启用DHCP的节点。对于有线DHCP客户端,您必须查看路由器/交换机媒体访问控制(MAC)地址表,以确定设备连接到哪个端口,以及MAC地址的供应商ID,然后从那里开始。如果DHCP IP地址来自无线设备,则跟踪IP变得更加困难,除非使用某种可扩展的身份验证协议(EAP)。

DHCP仍然可以在企业架构中发挥作用。使用保留的DHCP IP地址,您可以为给定的MAC地址分配IP,这有助于您跟踪网络上的设备。但是,MAC地址可能是欺骗性的;它们是攻击者必须穿透的另一层复杂性。

那么问题就出现了:哪些设备应该在企业中使用DHCP?确切地说,不要将DHCP IP地址用于服务器。为服务器提供静态IP地址;使用静态IP地址管理它们要容易得多。将DHCP用于无线客户端和使用网络的guest虚拟机。如果使用EAP,使用Radius身份验证,则可以将DHCP分配的IP地址跟踪到用户名,从而使会计更容易。

对于启动Linux主机,请根据服务器的MAC地址使用DHCP进行静态预留。这使您可以使用PXE引导,同时确保不将DHCP IP地址分配给恶意设备。

在开始部署DHCP服务器之前,企业需要多少个DHCP服务器才能回答这个问题。每个服务器的位置也很重要。一种方法是,在每个服务器网络上,使用IP帮助程序设置路由器,以将所有DHCP请求转发到一对DHCP服务器。由于DHCP将被谨慎使用(仅在PXE引导安装过程中),因此不需要大量DHCP服务器。一个强大的DHCP服务器一次可以处理数千个请求,因此,例如1000个客户端的几个DHCP服务器就足够了。如果一个给定的站点有5000台服务器,那么五对DHCP服务器 - 每1000个客户机一对 - 就足够了。 DHCP服务器在给定时间可以提供的DHCP客户端的实际数量取决于所使用的硬件和同时请求的数量。

主DHCP服务器

要设置第一个DHCP服务器,您可以*载下**ISC DHCP或使用Linux发行版附带的DHCP服务器。 与BIND类似,DHCP可用作ESV,当前或当前稳定版。 建议将电流稳定用于生产,ESV也是如此。 在撰写本文时,版本4.1-ESV-R10是最新的ESV。 对于喜欢最新稳定版本的企业,选择current-stable,对于喜欢不经常更新但更稳定的企业,选择ESV。 从https://www.isc.org/downloads*载下**DHCP后,下一步就是编译它。

### Configure will automatically select the most suitable otions
### make will build DHCP and make install will install it in /usr/local
$ ./configure
# make
# make install

大多数Linux发行版都附带DHCP。 例如,使用CentOS,您可以使用yum存储库安装DHCPD。

$ yum search dhcp | egrep -i ’^dhc’
dhcping.x86_64 : DHCP daemon ping program
dhcp-common.x86_64 : Common files used by ISC dhcp client and server
dhcp-devel.i686 : Development headers and libraries for interfacing to the DHCP
dhcp-devel.x86_64 : Development headers and libraries for interfacing to the
dhclient.x86_64 : Provides the dhclient ISC DHCP client daemon and
dhcp.x86_64 : Dynamic host configuration protocol software

您需要的软件包是dhclient,dhcp-common和dhcp。 使用分发yum存储库安装软件包可能会省去编译自己的软件包的麻烦。

DHCP由两个不同的组件组成:一个是客户端,另一个是服务器。 您不需要服务器上的客户端。 服务器配置文件是/etc/dhcp/dhcpd.conf。 如果您希望服务器本身使用DHCP获取IP地址,则应在/ etc / sysconfig / network-scripts / ifcfg-eth0中指定,您可以在其中设置BOOTPROTO = dhcp。

注意

如果在CentOS / RedHat默认安装中缺少/var/lib/dhcpd/dhcpd.leases,则DHCPD无法启动。 您可以触摸此文件以启动DHCPD。

服务器的主配置文件有许多语句,这些语句按子句分组。 DHCP在语法方面非常讲究,因此请确保在进行更改后仔细检查语法; 否则,DHCP无法启动。 练习8-4中显示了一个示例DHCPD.conf文件。

全局设置是适用于所有客户端的设置。 通常,它们列在文件的顶部。 在全局设置中,有些参数以option关键字开头,即DHCP选项。 不以option关键字开头的其他参数专门用于DHCPD。 DHCPD可以对给定网络具有权威性,这意味着即使它不知道IP地址,它也会响应所有DHCP请求。 unknown-clients参数允许DHCP响应来自DHCPD文件中未明确定义的客户端的请求。 对于企业来说,拥有众多权威的DHCPD服务器是很常见的。 DHCPD服务器连接有多个物理网络或一个中继的物理网络,并在DHCPD服务器上配置虚拟局域网(vlans)。

#global settings
authoritative;
allow unknown-clients;
allow bootp;
option domain-name "example.com";
option domain-name-servers 10.1.1.2,10.1.1.3;
option ntp-servers 10.1.1.4,10.1.1.5;

租用时间是DHCP配置的重要组成部分。如果配置较短的租约时间,则客户端会反复返回IP地址,这可能会使DHCP服务器过载。另一方面,如果配置较长的DHCP租约时间,则可能导致客户端保留IP地址。理想的时间取决于DHCP客户端的使用。例如,如果DHCP主要用于服务器映像,则短暂的租用时间是有意义的,因为客户端在安装操作系统期间只需要DHCP IP地址,之后可以为其分配静态IP地址。如果DHCP服务器用于虚拟专用网络(VPN)客户端和无线客户端,则较长的租用时间可能有助于减少DHCP服务器上的负载。时间以秒为单位指定,在这种情况下,默认设置为一小时,最大租约设置为两小时。 default和max之间的区别在于,当客户端未请求特定的租约时间时,将分配默认值。另一方面,如果客户端请求特定的租约时间,则它不能超过最长租约时间。

default-lease-time 3600;
max-lease-time 7200;

对于需要DHCP服务并连接到DHCPD服务器的每个子网,都需要子网声明。 DHCP范围选项指定DHCPD服务器向客户端分发的IP地址范围。 此范围取决于子网中的可用IP地址。 在我们的例子中,子网掩码为/ 24,我们为DHCP范围选择了从10.1.1.50到10.1.1.250的200个IP地址。 其他IP地址仅用于管理目的,例如路由器,DNS服务器,DHCP服务器本身和其他服务。

#subnet declaration
subnet 10.1.1.0 netmask 255.255.255.0 {
 option routers 10.1.1.254;
 option subnet-mask 255.255.255.0;
 option broadcast-address 10.1.1.255;
 option domain-name "dev.example.com";
 range 10.1.1.50 10.1.1.250;
}

组是一种为一组DHCP客户端进行通用设置的方法。 例如,假设我们必须确保两个特定的笔记本电脑处于特定时区。 我们可以使用选项时间偏移来使用DHCP指定它。 此外,我们希望确保两个特定客户端使用与以前相同的IP重新联机,因此我们将host语句用作组的一部分。

#groups
group {
 # Specific TZ for database servers
 option time-offset -21000;
 host myclient1 {
 option host-name "db001.example.com";
 hardware ethernet XX:XX:XX:XX:XX:XX;
 fixed-address 10.1.1.20;
 allow booting;
 }
 host myclient2 {
 option host-name "db002.example.com";
 hardware ethernet XX:XX:XX:XX:XX:XX;
 fixed-address 10.1.1.21;
 allow booting;
 }

对于企业,DHCPD配置文件中的设置取决于底层网络基础结构和DHCP客户端的数量。 但是,作为一般规则,只需要尽可能多的DHCP服务器 - 而不是更多 - 因为如果恶意设备出现在网络上,向网络设备发出IP地址可能会成为潜在的安全风险。

有些企业甚至只向已知的MAC地址发出DHCP IP地址。 虽然这种策略不是防故障的,但由于MAC地址可以被欺骗,它确实提供了一层保护。

abc