29.1 dhcp服务简介
dhcp服务简介
当集群内的主机达到一定规模时,我们就需要由手动运维转向自动化运维,以提高我们运维的效率,同时也是为减少我们平均故障修复时间。自动化运维的最新技术是docker,而更加传统的方法则是以 ansible 为代表的配置系统。配置系统的基础是标准化,我们需要为我们的主机配置同样的操作系统,并为相同服务集群内的主机提供相同的配置文件。
不考虑虚拟技术,我们的自动化运维工具可以如下几个层面:
- BootStraping: 用于引导安装操作系统的,os isntallation,常用工具就是 pxe,cobbler
- Configuration: 配置系统,定义好了每一个被管理主机的目标状态,被管理主机能基于 agent 或 ssh 被配置系统所管理, 常用工具包括 ansible,puppet,saltstack
- Command & Control: 批量运行程序,常用工具包括 ansible
本章的内容主要包括两个部分
- 自动化安装: 基于 PXE 自动化安装系统
- 配置系统: 基于 ansible 的配置系统
1. DHCP 简介
DHCP(Dynamic Host Configuration Protocol) 全称是动态主机配置协议,主要用于为主机配置IP 地址。将一台主机接入互联网时,我们需要为其配置 IP/Netmask
,Gateway
,DNS Server
等等网络参数。我们可以手动配置,也可以借助于 DHCP 协议实现动态分配。dhcp 的前身是 bootp
引导协议,出现于无盘工作站,这种类型的机器没有硬盘,所以操作系统不会安装在本地。此时需要借助网卡的特定功能,它能在开机时被唤醒,并能作为 bootp 协议客户端去请求服务端去获取地址,并加载属于自己的操作系统文件。第一次获取地址时是动态,之后获取的地址则是固定的,因为要实现客户端操作系统与 IP 地址绑定。
1.1 工作过程
dhcp 可以理解成引入租约概念的 bootp 协议,能在主机开机时自动分配地址,并在主机关机时收回临时分配的 IP 地址并在分配,同时也保留了 bootp 保留地址的功能。
dhcp 在动态分配地址的过程中,首先在局域网中有一台 dhcp 服务,其维护着一组可用地址列表(地址池),也包含要为其他主机配置的网关,DNS 服务器等等。某主机开机之后如果其配置了通过 DHCP 动态获取地址,其将发送一个 RARP 的广播报文
- arp: address resolving Protocol,IP -> MAC
- rarp: reverse arp, MAC -> IP
服务器收到,主机的 Rarp 请求之后,就会为其提供一个地址,整个过程如下所示:
dhcp 提供的 IP 地址时存在续租期限的,一般主机要在租约期限到一半时进行续租,此时
- Client: 向服务器发送一个 dhcp request
- Server: 如果同意续租则回复 dhcp ack,不同意在回复 dhcp nak
服务器端不允许续租的原因可能是因为管理员更改了可用的地址池,客户端的IP 地址已经不可用。如果不能续租,此时客户端要重新进行广播获取 IP 地址。
如果客户端在续租时服务器端没有响应,客户端会在剩余时间过去一半的时候再次发起续租直至到达一个足够小的时间,此时将认定服务器不可用,客户端将重新广播获取 IP 地址。
需要注意的是开机获取 IP 地址是广播的,续租则是单播的。
1.2 dhcp 中继服务
dhcp 服务不能穿越网关(路由器),所以要为不同物理网络中的主机分配地址时,需要借助于 dhcp 的中继服务。中继的过程如下
dhcp 中继服务用的很少,了解即可。
1.3 dhcp 作用域
dhcp 每一个可分配的地址范围称为一个作用域,不同的作用域可以为不同的网络分配地址,还可以定义超级作用域。
dhcp 在分配地址时,还可以告诉客户端一个网络文件服务器地址,并告诉其到这个文件服务器上请求什么文件,这就是通过网络引导系统的基础。
2. dhcp 服务
Linux DHCP协议的实现程序
- dhcp
- dnsmasq: 同时实现了dns 和dhcp 服务,用于嵌入式环境中
2.1 程序组成
|
|
dhcp 的服务器端监听在 udp 的 67 号端口,dhcp 的客户端则监听在 68/udp
,因为dhcp 协议的客户端与服务器端随时需要相互通信,所以其客户端也必须作为一个守护进程监听在特定端口上。
2.2 服务配置
dhcp 的 rpm 包提供了一个dhcp 配置的参考文件 /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
,可复制直接使用
|
|
dhcp option 定义的参数可位于子域中,也可以位于全局配置中,子域中的配置优先级更高。
2.3 dhclient
dhclient options
- 作用: dhcp 客户端程序,可手动发起 dhcp 请求
- 选项:
-d
: 将 dhclient 工作于前台,显示 dhcp 的工作过程
2.4 已分配地址
|
|