Linux DHCP 服务器的配置
11.1 DHCP概述
11.1.1 采用DHCP的必要性
在TCP/IP网络上,每台工作站要能存取网络上的资源之前,都必须进行基本的网络配置,一些主要参数诸如IP地址,子网掩码,缺省网关,DNS等必不可少,还可能需要一些附加的信息如IP管理策略之类。对于一个稍微大点的网络而言,网络的管理和维护的任务是相当繁重的。一台计算机从一个子网转移到另一个子网,就要重新对系统进行配置。对于普通水平的工作站用户是不能赋予他们配置自己的工作站网络的权限,而且也没有这个必要。如果一个没有相应技术水平的用户出于好奇或想学习一下的目的错误地更改了工作站的网络配置,造成网络故障,后果不言而喻。因此,需要有一种机制来让TCP/IP的配置和管理从用户端转移到网络管理端,实现IP的集中式管理。解决方案就是用DHCP。
11.1.2 DHCP的主要功能
DHCP的全称是动态主机配置协议(Dynamic Host Configuration Protocol),由IETF(Internet 网络工程师任务小组)设计,详尽的协议内容在RFC文档rfc2131和rfc1541里。目的就是为了减轻TCP/IP网络的规划、管理和维护的负担,解决IP地址空间缺乏问题。运行DHCP的服务器把TCP/IP网络设置集中起来,动态处理工作站IP地址的配置,用DHCP租约和预置的IP地址相联系,DHCP租约提供了自动在TCP/IP网络上安全地分配和租用IP地址的机制,实现IP地址的集中式管理,基本上不需要网络管理人员的人为干预。而且,DHCP本身被设计成BOOTP(自举协议)的扩展,支持需要网络配置信息的无盘工作站,对需要固定IP的系统也提供了相应支持。
11.2 DHCP的工作原理
11.2.1 几个DHCP名词
在介绍DHCP工作原理以前,先解释这几个名词的含义:
DHCP客户:DHCP客户是一通过DHCP来获得网络配置参数的Internet主机,通常就是普通用户的工作站。
DHCP服务器:DHCP服务器是提供网络设置参数给DHCP客户的Internet主机。
DHCP/BOOTP 中继代理:在DHCP客户和服务器之间转发 DHCP 消息的主机或路由器。
DHCP是基于客户机/服务器模型设计的,DHCP客户和DHCP服务器之间通过收发DHCP消息进行通讯。
11.2.2 DHCP 消息的格式:
0 | 1 | 2 | 3 |
0123456789 | 0123456789 | 0123456789 | 0123456789 |
op (1) | htype (1) | hlen (1) | hops (1) |
xid (4) | |||
secs (2) | flags (2) | ||
ciaddr (4) | |||
yiaddr (4) | |||
siaddr (4) | |||
giaddr (4) | |||
chaddr (16) | |||
sname (64) | |||
file ( 128) | |||
options ( 312) |
DHCP 消息的格式与BOOTP消息大部分相同, 这样设计可以增强BOOTP服务器工具,同时为BOOTP和DHCP两种客户服务。另外,BOOTP的中继代理可用来转发跨子网的DHCP请求。
各段描述如下
括号里的数字代表这个段以8位组为单位的大小,除options外,其余的段的长度都是固定的,options段的长度至少是312个8位组。
如op(1)代表这个段的长度为一个8位组
op 是消息操作代码,值为1 代表BOOTREQUEST(自举请求)值为2 代表BOOTREPLY(自举响应)
在DHCP客户和DHCP服务器对话期间,op段被DHCP客户设置为BOOTREQUEST(1), 被DHCP服务器设置为 BOOTREPLY(2)。
htype 是硬件地址类型
hlen 是硬件地址长度