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
看一下配置文件
下面解释全局参数
全局参数是应用在全局的,不过在声明过全局参数后,你仍然可以在subnet中在次
声明,且应用以后者为主
下面是subnet部分
这部分需要注意的是subnet后面的网段,必须对应于你的某一块网卡,真的需要特
别注意,想象一下如果你是5.0的,你分发6.0的,是不是先得多管闲事,特别注意
这一点,还有一点是注意,如果你也分给了别人router(网关),需要与subnet的
对应,不能错了 rangge后的地址叫pool(地址池)
想象一下这样的场景,你的boss要你给他一个88.88的地址,你要怎么办呢?
我们的DHCP服务器也定义了这样的mac绑定功能,去看一下
如果你也多块网卡,你想要定义dhcp服务只从其中的某些网卡服务,你可以去定义/etc/sysconfig/dhcpd
#DHCPDARGS=“eth0‘
DHCP的端口号
udp :server:67
client :68
前面说过dhcp服务器只能在一个广播域能提供dhcp服务,试想如果一个网络流量
很大,内网需要划分n个小的子网,那么按照之前的说法,我们就得架设n个dhcp服
务器,这显然不是我们希望看到的,有人说我们可以用静态啊,是的,可以但一定
会发生的情况就是地址冲突,这要怎么办呢?
这时就出现了中继,我们可以找一个中继代理(如router)代理
那么怎么设置中继代理呢?去看一下
这就是dhcp的个人理解