查看: 3133|回复: 21
收起左侧

[其他] [原创]关于dhcp

[复制链接]
拿贝马凡
发表于 2010-9-1 14:22:46 | 显示全部楼层 |阅读模式
本帖最后由 拿贝马凡 于 2010.9.8 14:52 编辑

最近学习了dhcp---Dynamic Host Configuration Protocol(动态主机分配协议),我的理解就是server将pool的将ip地址分配给请求的主机。至于“动态”分配,就是主机从server租用到 IP 地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放(release)这个 IP 地址,server在将该地址分配给其他主机。
hdcp是典型的c/s模式,有client端首先发送广播包,(这里注意client是没有ip add的,但是3层需要source ip add,就以0.0.0.0来代表,这里不是表示默认路由,而是表示未知ip add),当server收到该广播后会查看自己的pool,如果有未租出的地址,将最小的地址分配给client并封装成packet发送给client。
dhcp的packet应该是这样
ethernetIIipudpdhcpfcs
当client收到该packet将发送一个request 给server,告之已接收,然后server在发送ack确认,该机制是因为udp协议是不可靠的,需要该机制来确保可靠性。
dhcp的packet包含:
                                        1、分配的ip
                                        2、netmask
                                        3、default-router
                                        4、dns-server
                                        5、[size=-1]lease(默认是1天)



这是我配置的一个例子
环境:一台层3交换,一台路由,若干台交换(没有任何配置,当傻瓜交换机),若干host模拟lan,而另一台路由模仿wan,
本来想把 router1配置成dhcp server,但是3560不支持ip help-address,只好把3560配置成dhcp server。每一个傻瓜交换机一个vlan,考验3560跨网段分配ip地址呢,其实不用担心,ip add的分配是与接口有关,比如图有n个svi,每个接口的地址是固定(也是每个vlan的gateway),而3560的pool,是根据svi的地址下发ip的,比如说,vlan2的地址只可能分配给svi 是vlan2的ip add,不可能分给其他vlan的------这点就是dhcp是根据接口来分配ip add的

另外,有些地址是不能下发的,比如说,该图上svi的地址是不能分配,file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/moz-screenshot.png可以先配置一个地址段,将不能分配的地址包含其中,当dhcp开始分配,会忽略这些地址从最小的地址分配。
该图中就是:

  • ip dhcp excluded-address 192.168.2.1
  • ip dhcp excluded-address 192.168.3.1
  • ip dhcp excluded-address 192.168.4.1
  • ip dhcp excluded-address 192.168.5.1

确定pool的范围:
  • ip dhcp pool vlan2
  • network 192.168.2.0 255.255.255.0
  • default-router 192.168.2.1
  • dns-server 202.102.192.68
  • ip dhcp pool vlan3
  • network 192.168.3.0 255.255.255.0
  • default-router 192.168.3.1
  • dns-server 202.102.192.68
  • ip dhcp pool vlan4
  • network 192.168.4.0 255.255.255.0
  • default-router 192.168.4.1
  • dns-server 202.102.192.68
  • ip dhcp pool vlan5
  • network 192.168.5.0 255.255.255.0
  • default-router 192.168.5.1
  • dns-server 202.102.192.68

从哪个svi分配

  • interface Vlan2
  • ip address 192.168.1.1 255.255.254.0
  • !
  • interface Vlan3
  • ip address 192.168.2.1 255.255.255.0
  • !
  • interface Vlan4
  • ip address 192.168.3.1 255.255.255.0
  • !
  • interface Vlan5
  • ip address 192.168.4.1 255.255.255.0
  • !
  • interface Vlan6
  • ip address 192.168.5.1 255.255.255.0
  • !
vlan3的主机通过dhcp获得ip add


再说下另外一种情况,dhcp server与client即不是直连(即不在同一个[size=-1]Broadcast Domain中),而是隔着路由,图如下:



图中,R2做为dhcp-server,为R1 ethernet所连接的lan分配ip add。

因为host是发送dhcp请求时,destination add是255.255.255.255即广播地址,而路由是隔离broadcast的,当host的请求到达路由时,路由解封装后就直接丢弃了,那么请求就到达不了dhcp-server,当然host也就没有ip add了。
这里就需要一个帮助地址了,将destination add转换成dhcp的地址(而且知道怎么到达dhcp-server)
好了ip help-address就这么登场了,他的作用就是将host发送的请求ip地址的broadcast转换成dhcp-server 的地址(这里都是ip地址啊),这里罗嗦一句:
如果没有经过nat,ip add在拓扑中是不会改变的。

但是这里也有转换(或者说就是借用这个接口去请求地址)
source ip add :0.0.0.0            ---->网关的ip address

destination ip add:255.255.255.255 ---->ip helper-address就是将该地址转换(或者说改成与自己连接的dhcp-server接口的ip add,然后封装发送出去)

这里因为source address与destination address都是确定或者说早已分配好的,就等于把brondcast packet解封装,将其的udp与hdcp header留下,source地址改为请求主机的gateway 的ip address,destination地址改成hdcp-server的入口地址(这个接口入还是出相对啊),这样才能发单播,不然当packet到达hdcp-server,他知道source是谁?怎么单播回来?
好了,当dhcp-server的packet到达路由,路由接封装查看,知道是一个dhcp的offer(即分配ip地址的回应)。解到3层的时候知道了ip地址,这时,他将source地址与desination地址改成:
source add:192.168.2.1
destination add:255.255.255.255(这里还是广播----因为gateway不知道是谁发的,哪个主机的ip还是0.0.0.0呢)----这个与代-理arp的原理很相似。


(这个图主要是看source add 与destination add)
封到2层的时候,查看arp table,看从哪个接口发送。
当广播到达发送地址请求的主机,他会在发送一个request到达gateway,然后gateway把这个request转发给DHCP-Server,DHCP-Server在发ack给gateway,在转发到client。(这里都是单播了)



  • interface FastEthernet0/0.10
  • encapsulation dot1Q 10
  • ip address 192.168.1.1 255.255.255.0
  • ip helper-address 10.1.1.2
  • !
  • interface FastEthernet0/0.20
  • encapsulation dot1Q 20
  • ip address 192.168.2.1 255.255.255.0
  • ip helper-address 10.1.1.2
另外,要注意dhcp-server在这个例子里面并不是分配与R1 serial相连的地址,而是与fastethernet相同网段的地址。2个vlan都是向dhcp-server发送请求,但是并不是先到先得,而是与每个vlan网关相同网段的地址。


  • ip dhcp pool A
  • network 192.168.1.0 255.255.255.0
  • default-router 192.168.1.1
  • dns-server 202.102.192.68
  • ip dhcp pool B
  • network 192.168.2.0 255.255.255.0
  • default-router 192.168.2.1
  • dns-server 202.102.199.68
  • interface Serial0/0
  • ip address 10.1.1.2 255.255.255.0



对于这点:我的理解是,如果dhcp-server与client在同一broadcast domain中,有多个server向client分配ip add,client本着先到先用原则,然后继续broadcast request,(第一,对使用分配该ip的dhcp-server来说,等于发送一个ack,对于没有使用分配ip的dhcp-server来说,让其回收分配的ip add),然后dhcp-server在回一个ack。对于跨网段的请求,client端并不管这些,都是要gateway用自己的地址来做一个Unicast(单播)来转发请求,而hdcp-server分配的ip add就肯定与该网段gateway处于同一网段中。。。


评分

参与人数 11经验 +20 魅力 +1 人气 +12 收起 理由
穿越星空 + 20 + 1 现在补上
spencer + 3 =。=|||
fengtaks + 1 慢慢看懂大半了,继续~呵呵: ]
chen_c_yaun + 1 感谢提供分享
Hopesky + 1 你好!你的文章写得很不错哦~!我想问下,你 ...

查看全部评分

拿贝马凡
 楼主| 发表于 2010-9-1 18:08:30 | 显示全部楼层
回复 2楼 缩头者  的帖子

晕,我写blog上的,竟然copy不行,明天整改
   
reizhi
发表于 2010-9-1 18:50:18 | 显示全部楼层
这个还真复杂
卡巴007 该用户已被删除
发表于 2010-9-2 22:58:45 | 显示全部楼层
网络安全管理,卡饭关注这方面的不多啊!
拿贝马凡
 楼主| 发表于 2010-9-3 15:36:46 | 显示全部楼层
回复 4楼 卡巴007  的帖子


    卡巴来捧场了啊,dhcp其实与大家息息相关啊
i_Kaspersky
发表于 2010-9-4 10:38:48 | 显示全部楼层
技术贴,要看好久才懂得说。
败亦枭雄
发表于 2010-9-4 18:42:38 | 显示全部楼层
不错,感谢分享,很详细的原理介绍。
老佳
发表于 2010-9-6 12:20:07 | 显示全部楼层
DHCP在局域网中使用范围非常广,但是这里有个问题,如果在LAN中使用DHCP动态分配IP地址,如果通过IP封锁来限制用户访问某些资源就会比较困难
拿贝马凡
 楼主| 发表于 2010-9-6 13:05:33 | 显示全部楼层
回复 8楼 老佳  的帖子


    你用2层的mac 来filter好了
datedate
发表于 2010-9-6 13:14:00 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-13 02:59 , Processed in 0.131559 second(s), 19 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表