tianchaoshangguo 2020-02-19
[ ~]# mount /dev/cdrom /mnt/ <!--挂载操作系统光盘--> mount: /dev/sr0 写保护,将以只读方式挂载 [ ~]# rm -rf /etc/yum.repos.d/CentOS-* <!--删除系统自动yum源--> [ ~]# yum -y install dhcp <!--安装DHCP服务 -->
[ ~]# vim /etc/dhcp/dhcpd.conf <!--编辑主配置文件--> :r /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example <!--读取默认配置文件--> ddns-update-style none; <!--禁用DNS动态更新--> option domain-name "benet.com"; <!--指定默认搜索域--> option domain-name-servers 202.106.0.10, 202.106.0.20; <!--指定DNS服务器地址--> default-lease-time 600; <!--默认租约时间--> max-lease-time 7200; <!--最大租约时间-->
在主配置文件dhcpd.conf中,可以使用声明、参数、选项这三种类型的配置,各自的作用和表现形式如下所述:
- 声明:用来描述dhcpd服务器中对网络布局的划分,是网络设置的逻辑范围。常见的声明是subnet、host,其中subnet声明用来约束一个网段。host声明用来约束一台特定主机。
参数:由配置关键字和对应的值组成,总是以“;”(分号)结束,一般位于指定的声明范围之内,用来设置所在范围的运行特性(如默认租约时间、最大租约时间等)。
- 选项:由“option”引导,后面跟具体的配置关键字和对应的值,也是以“;”结束,用于指定分配给客户机的各种地址参数(如默认网关地址、子网掩码、DNS服务器地址等)。
为了使配置文件的结构更加清晰、全局配置通常会放在配置文件dhcod.conf的开头部分,可以是配置参数,也可以是配置选项。常用的全局配置参数和选项如下所述:
ddns-update-style:动态DNS更新模式。用来设置与DHCP服务相关联的DNS数据动态更新模式。在实际的DHCP应用中很少用到该参数。将值设为“none”即可。
default-lease-time:默认租约时间。单位为秒,表示客户端可以从DHCP服务器租用某个IP地址的默认时间。
max-lease-time:最大租约时间。单位为秒,表示允许DHCP客户端请求的最大租约时间,当客户端未请求明确的租约时间时,服务器将采用默认租约时间。
option domain-name:默认搜索区域。未客户机指定解析主机名时的默认搜索域,该配置选项将体现在客户机的/etc/resolv.conf配置文件中,如“search benet.com”。
- option domain-name-servers:DNS服务器地址。为客户端指定解析域名时使用的DNS服务器地址,该配置选项同样将体现在客户机的/etc/resolv.conf配置文件中,如“nameserver 202.106.0.20”。需要设置多个DNS服务器地址时,以逗号进行分隔。
一台DHCP服务器可以为多个网段提供服务,因此subnet网段声明必须有而且可以有多个。例如,若要DHCP服务器为192.168.100.0/24网段提供服务,用于自动分配的IP地址范围为192.168.100。100~192.168.100.200,为客户机指定默认网关地址为192.168.100.254,则ke可以修改dhcpd.conf配置文件,参考以下内容调整subnet网段声明:
[ ~]# vim /etc/dhcp/dhcpd.conf <!--编辑主配置文件--> subnet 192.168.100.0 netmask 255.255.255.0 { <!--声明网段地址--> range 192.168.100.100 192.168.100.200; <!--设置地址池,可以有多个--> option routers 192.168.100.254; <!--指定默认网关地址--> }
host声明用于设置单个主机的网络属性,通常用于为网络打印机或个别服务器分配固定的IP地址(保留地址),这些主机的共同特点是要求每次获取的IP地址相同,以确保服务的稳定性。
host声明通过host关键字指定需要使用保留地址的客户机名称,并使用“hardware ethernet”参数指定该主机的MAC地址,使用“fixed-address”参数指定保留给该主机的IP地址。例如,若要为打印机prtsvr(MAC地址为00:0C:29:0D:BA:6B)分配固定的IP地址192.168.100.101,可以修改dhcpd.conf配置文件,参考以下内容在网段声明内添加host主机声明。
C:\Users\Administrator>getmac 物理地址 传输名称 =================== ======================================================= 00-0C-29-0D-BA-6B \Device\Tcpip_{92E3F48B-40F0-4A0D-9604-6386AAAE3233} <!--客户端获取MAC地址--> [ ~]# vim /etc/dhcp/dhcpd.conf host win7 { hardware ethernet 00:0C:29:0D:BA:6B; <!--客户机的MAC地址--> fixed-address 192.168.100.101; <!--分配给客户机的IP地址--> }
在启动dhcpd服务之前,应确认提供DHCP服务器的网络接口具有静态指定的固定IP地址,并且至少有一个网络接口的IP地址与DHCP服务器中的一个subnet网段相对应,否则将无法正常启动dhcpd服务。例如,DHCP服务器的IP地址为192.168.100.10,用于为网段192。168.100.0/24内的其他客户机提供自动分配地址服务。
安装dhcp软件包以后,对应的系统服务脚本位于/usr/lib/systemd/system/dhcpd.service,可以使用systemd服务进行控制。例如,执行以下操作可以启动dhcpd服务,并检查UDP的67端口是否在监听,以确认DHCP服务器是否正常。
[ ~]# systemctl start dhcpd <!--启动dhcp服务--> [ ~]# systemctl enable dhcpd <!--设置服务开机自动启动--> [ ~]# netstat -anptu | grep 67 <!--监听DHCP服务端口号--> udp 0 0 0.0.0.0:67 0.0.0.0:* 2102/dhcpd udp 0 0 0.0.0.0:67 0.0.0.0:* 1064/dnsmasq
注意:需要关闭、重启dhcpd服务时,只要将上述操作命令中的“start”改为“stop”或“restart”即可。
ipconfig /renew <!--可以为主机重新获取新的IP地址--> ipconfig /release <!--释放IP地址--> tracert IP地址 <!--可以测试从当前主机到目的主机经过的网络节点--> route print <!--查看路由表-->
在Linux客户机中可以设置使用DHCP的方式获取地址。只需要编辑对应网卡的配置文件,修改或添加“BOOTPROTO=dhcp”配置行,并重新加载配置文件或者重新启动network服务即可。例如,执行以下操作可修改网卡配置文件,并重新加载配置以通过DHCP方式自动获取地址:
[ ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes NAME=ens32 DEVICE=ens32 ONBOOT=yes [ ~]# ifdown ens32 ; ifup ens32 [ ~]# systemctl restart network
在Linux客户机中,还可以使用dhclient工具来测试DHCP服务器。若直接执行“dhclient”命令,则dhclient将尝试为除回环接口lo以外的所有网络接口通过DHCP方式申请新的地址,然后自动转入后台继续运行。当然,测试时可以指定一个具体的网络接口,并结合“-d”选项使其在前台运行,测试完毕后按Ctrl+C组合键终止。例如,执行“dhclient -d ens32”命令后,可以为网卡ens32自动获取新的IP地址,并显示获取过程。
[ ~]# dhclient -d ens32 Internet Systems Consortium DHCP Client 4.2.5 Copyright 2004-2013 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/ens32/00:0c:29:97:5c:9f Sending on LPF/ens32/00:0c:29:97:5c:9f Sending on Socket/fallback DHCPDISCOVER on ens32 to 255.255.255.255 port 67 interval 4 (xid=0x5364e17f) DHCPDISCOVER on ens32 to 255.255.255.255 port 67 interval 6 (xid=0x5364e17f) DHCPDISCOVER on ens32 to 255.255.255.255 port 67 interval 14 (xid=0x5364e17f) <!--DHCP发现--> DHCPREQUEST on ens32 to 255.255.255.255 port 67 (xid=0x5364e17f) <!--DHCP请求--> DHCPOFFER from 192.168.100.10 <!--DHCP提供--> DHCPACK from 192.168.100.10 (xid=0x5364e17f) <!--DHCP确认--> bound to 192.168.100.102 -- renewal in 229 seconds. ............ <!--按Ctrl+C组合键终止-->
客户端需要通过dhclient命令释放获取的IP租约时,可以结合“-r”选项。例如,执行以下的“dhclient -r ens32”将会释放之前为网卡ens32获取的IP租约。此时再通过执行“ifconfig ens32”命令就看不到分配的IP地址了。
[ ~]# dhclient -r ens32
———————— 本文至此结束,感谢阅读 ————————