dhcp的祖先:bootp

    出现在无盘工作站时代,现在已经被dhcp彻底替代,不过有些服务器为了向下

兼容,仍旧支持bootp

DHCP (Dynamic Host configuration protocol)

DHCP 引入了租约的概念lease(租约),这个彻底解决了“僧多粥少”的情况,

在今天主机迅速暴增的前提下,dhcp显得那么必须,必要,想象一下,如果全球没

了dhcp是多么的……

DHCP工作方式

  当一个网内client需要一个ip地址,它就会要发出广播寻求得到一个ip地址(前提

是你是要求动态获取方式),这时如果你所在区域有DHCP服务器,它就会试图响应

你,这时双方就开始了正式的关于“谈判”关于获取IP的过程了

client:发一个dhcpdiscover包,寻找一个可用ip (广播,因为没有ip只能广播)

server:回应一个dhcpoffer包,回应请求(当有多个DHCP服务器响应时,一个原

则,先到先用)

client:dhcprequest 给你使用的DHCP服务器一个回应(相当于,给服务器说:

“好,哥们儿,就用你了”)

server:回应一个dhcpack包,确认。(相当于,服务器告诉client说:好的)

经过这样一个过程,双方就相当于签订了一个“合同”,即一个租约,租约里规定

了ip地址,租约时间,默认网关,掩码等信息 (更多信息可以查

看/usr/share/doc/dhcp-3.05/dhcpd.conf.sample)(租约var/lib/dhclient)

由于在请求过程中,双反均是以广播的形式广播,所以dhcp只能在同一网段内实现

(dhcp中继除外,后面会说)

DHCP服务器是理论上是随机分配地址的,但其实当一个地址被分给一个主机后,当

此主机再次请求时,DHCP服务器会试图尽量将原来的地址分配给它,而且linux分

配地址的次序是有大到小的

RedHat linux DHCP 安装包

dhcp.i386

DHCP启动后进程的名字是dhcpd

默认安装后dhcp没有给我们配置文件,不过它给我们了一个样板,拷贝一下

# cp  /usr/share/doc/dhcp-3.05/dhcpd.conf.sample  /etc/dhcpd.conf

看一下配置文件

 

2010-08-04 21-02-19

下面解释全局参数

2010-08-04 21-04-12

全局参数是应用在全局的,不过在声明过全局参数后,你仍然可以在subnet中在次

声明,且应用以后者为主

下面是subnet部分

 

2010-08-04 21-07-51

这部分需要注意的是subnet后面的网段,必须对应于你的某一块网卡,真的需要特

别注意,想象一下如果你是5.0的,你分发6.0的,是不是先得多管闲事,特别注意

这一点,还有一点是注意,如果你也分给了别人router(网关),需要与subnet的

对应,不能错了 rangge后的地址叫pool(地址池)

想象一下这样的场景,你的boss要你给他一个88.88的地址,你要怎么办呢?

我们的DHCP服务器也定义了这样的mac绑定功能,去看一下

2010-08-04 21-14-53

如果你也多块网卡,你想要定义dhcp服务只从其中的某些网卡服务,你可以去定义/etc/sysconfig/dhcpd

#DHCPDARGS=“eth0‘

DHCP的端口号

udp :server:67

         client :68

前面说过dhcp服务器只能在一个广播域能提供dhcp服务,试想如果一个网络流量

很大,内网需要划分n个小的子网,那么按照之前的说法,我们就得架设n个dhcp服

务器,这显然不是我们希望看到的,有人说我们可以用静态啊,是的,可以但一定

会发生的情况就是地址冲突,这要怎么办呢?

这时就出现了中继,我们可以找一个中继代理(如router)代理

2010-08-04 21-32-14

那么怎么设置中继代理呢?去看一下

2010-08-04 21-34-09

这就是dhcp的个人理解