vanturman 2020-01-23
博主本人平和谦逊,热爱学习,读者阅读过程中发现错误的地方,请帮忙指出,感激不尽
动态主机配置协议(DHCP)是一种基于UDP协议且仅限于在局域网内部使用的网络协议,主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中,其主要用途是为局域网内部的设备或网络供应商自动分配IP地址等参数。
简单来说,DHCP协议就是让局域网中的主机自动获得网络参数的服务。在图14-1所示的拓扑图中存在多台主机,如果手动配置每台主机的网络参数会相当麻烦,日后维护起来也让人头大。而且当机房内的主机数量进一步增加时(比如有100台,甚至1000台),这个手动配置以及维护工作的工作量足以让运维人员崩溃。借助于DHCP协议,不仅可以为主机自动分配网络参数,还可以确保主机使用的IP地址是唯一的,更重要的是,还能为特定主机分配固定的IP地址。
DHCP协议的应用十分广泛,无论是服务器机房还是家庭、机场、咖啡馆,都会见到它的身影。比如,某位同学开了一家咖啡厅,在为顾客提供咖啡的同时,还为顾客免费提供无线上网服务。这样一来,顾客就可以一边惬意地喝着咖啡,一边连着无线网络刷朋友圈了。但是,作为咖啡厅老板,肯定不希望(也没有时间)为每一位造访的顾客手动设置IP地址、子网掩码、网关地址等信息。另外,考虑到咖啡馆使用的内网网段一般为192.168.10.0/24(C类私有地址),最多能容纳的主机数为200多台。而咖啡厅一天的客流量肯定不止200人。如果采用手动方式为他们分配IP地址,则当他们在离开咖啡厅时并不会自动释放这个IP地址,这就可能出现IP地址不够用的情况。这一方面会造成IP地址的浪费,另外一方面也增加的IP地址的管理成本。而使用DHCP协议,这一切都迎刃而解—老板只需安心服务好顾客,为其提供美味的咖啡;顾客通过运行DHCP协议的服务器自动获得上网所需的IP地址,等离开咖啡厅时IP地址将被DHCP服务器收回,以备其他顾客使用。
作用域:一个完整的IP地址段,DHCP协议根据作用域来管理网络的分布、分配IP地址及其他配置参数。
超级作用域:用于管理处于同一个物理网络中的多个逻辑子网段。超级作用域中包含了可以统一管理的作用域列表。
排除范围:把作用域中的某些IP地址排除,确保这些IP地址不会分配给DHCP客户端。
地址池:在定义了DHCP的作用域并应用了排除范围后,剩余的用来动态分配给DHCP客户端的IP地址范围。
租约:DHCP客户端能够使用动态分配的IP地址的时间。
预约:保证网络中的特定设备总是获取到相同的IP地址。
server:192.168.181.17
desktop:192.168.181.18
[ ~]# yum install dhcp -y
[ ~]# cd /etc/dhcp/[ dhcp]# lsdhclient.d dhclient-exit-hooks.d dhcpd6.conf dhcpd.conf scripts [ dhcp]# cp -a dhcpd.conf dhcpd.conf.bak [ dhcp]# vim dhcpd.conf # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page # ddns-update-style none; #none表示不支持动态更新。interim:互动更新模式。ad-hoc:特殊更新模式。不过这两个模式基本不会使用 ignore client-updates; subnet 192.168.181.0 netmask 255.255.255.0 { #子网段声明 option routers 192.168.181.2; #网关 range 192.168.181.100 192.168.181.200; #定义IP范围 option subnet-mask 255.255.255.0; #子网掩码 default-lease-time 3600; #默认时间,DHCP客户端能够使用动态分配的IP地址的时间 max-lease-time 7200; #最大超时时间 option domain-name-servers 8.8.8.8; #DNS option domain-name "tansk.com"; #域名 } [ dhcp]# [ dhcp]# systemctl enable dhcpd.service 配置完成养成顺手开机启动的好习惯 [ dhcp]# systemctl restart dhcpd.service
为了避免与自己配置的dhcpd服务程序产生冲突,应该先按照下图所示将虚拟机软件自带的DHCP功能关闭。
注释静态网卡:[ ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=f4009924-d1ca-46a8-8a05-dc9569ee6c3d DEVICE=ens33 ONBOOT=yes #IPADDR=192.168.181.18 # # #PREFIX=24 #DNS1=8.8.8.8 #GATEWAY=192.168.181.2 [ ~]# service network restart 3.6.绑定固定IP server(添加配置为红色): [ dhcp]# cat dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page # ddns-update-style none; ignore client-updates; subnet 192.168.181.0 netmask 255.255.255.0 { option routers 192.168.181.2; range 192.168.181.100 192.168.181.150; option subnet-mask 255.255.255.0; default-lease-time 3600; max-lease-time 7200; option domain-name-servers 8.8.8.8; option domain-name "tansk.com"; host localhost{ hardware ethernet 00:0c:29:95:54:1d; fixed-address 192.168.181.125; } } [ dhcp]# desktop:
dhcpd服务程序配置文件内的参数都十分重要,因此在下表中罗列出了每一行参数,并对其用途进行了简单介绍。
参数 | 作用 |
ddns-update-style 类型 | 定义DNS服务动态更新的类型,类型包括: |
allow/ignore client-updates | 允许/忽略客户端更新DNS记录 |
default-lease-time 21600 | 默认超时时间 |
max-lease-time 43200 | 最大超时时间 |
option domain-name-servers 8.8.8.8 | 定义DNS服务器地址 |
option domain-name "domain.org" | 定义DNS域名 |
range | 定义用于分配的IP地址池 |
option subnet-mask | 定义客户端的子网掩码 |
option routers | 定义客户端的网关地址 |
broadcase-address 广播地址 | 定义客户端的广播地址 |
ntp-server IP地址 | 定义客户端的网络时间服务器(NTP) |
nis-servers IP地址 | 定义客户端的NIS域服务器的地址 |
hardware 硬件类型 MAC地址 | 指定网卡接口的类型与MAC地址 |
server-name 主机名 | 向DHCP客户端通知DHCP服务器的主机名 |
fixed-address IP地址 | 将某个固定的IP地址分配给指定主机 |
time-offset 偏移差 | 指定客户端与格林尼治时间的偏移差 |