一、前言

相信大家对“ip地址”这个名词并不陌生,我们局域网中相互通信,internet上网等这些都离不开ip地址的使用。只是ip地址类型不一样,局域网使用的是私有ip地址,而internet使用的是广域网的公有ip地址。那么对于我们的ip地址获得方式是否有了解呢?

我们的ip地址一般获取方法分为两种:一种是手工配置,另一种就是自动获取ip地址。手工配置ip地址方式就是自己在PC机上设置成内网ip地址,实现局域网内相互通信,这种方法存在一定的局限性,适合小型局域网内。自动获取ip地址方式作为dhcp客户端,通过dhcp服务器获取地址池中的ip地址。适合大、中型网络。

二、DHCP简介

DHCP是 Dynamic Host Configuration Protocol(动态主机分配协议)缩写﹐它的前身是BOOTP。BOOTP原本是用于无磁盘主机连接的网络上面的﹕网络主机使用 BOOT ROM 而不是磁盘起动并连接上网络﹐BOOTP 则可以自动地为那些主机设定 TCP/IP 环境。但 BOOTP 有一个缺点:您在设定前须事先获得客户端的硬件地址,而且,与 IP 的对应是静态的。换而言之,BOOTP 非常缺乏 "动态性",若在有限的 IP 资源环境中,BOOTP 的一对一对应会造成非常可观的浪费。

DHCP 可以说是 BOOTP 的增强版本﹐它分为两个部份﹕一个是服务器端﹐而另一个是客户端。所有的 IP 网络设定数据都由 DHCP 服务器集中管理﹐并负责处理客户端的 DHCP 要求﹔而客户端则会使用从服务器分配下来的IP环境数据。比较起 BOOTP ,DHCP 透过"租约" 的概念,有效且动态的分配客户端的TCP/IP 设定,而且,作为兼容考虑,DHCP 也完全照顾了BOOTP Client 的需求。

三、DHCP的优劣

DHCP服务优点不少:网络管理员可以验证IP地址和其它配置参数,而不用去检查每个主机;DHCP不会同时租借相同的IP地址给两台主机;DHCP管理员可以约束特定的计算机使用特定的IP地址;可以为每个DHCP作用域设置很多选项;客户机在不同子网间移动时不需要重新设置IP地址。

但同时也存在不少缺点:DHCP不能发现网络上非DHCP客户机已经在使用的IP地址;当网络上存在多个DHCP服务器时,一个DHCP服务器不能查出已被其它服务器租出去的IP地址;DHCP服务器不能跨路由器与客户机通信,除非路由器允许BOOTP转发。

四、DHCP的分配方式

首先﹐必须至少有一台 DHCP 服务器工作在网络上面﹐它会监听网络的 DHCP 请求﹐并与客户端商议 TCP/IP 的设定环境。它提供两种 IP 定位方式﹕

Automatic Allocation

  自动分配﹐其情形是﹕一旦 DHCP 客户端第一次成功的从 DHCP 服务器端租用到 IP 地址之后﹐就永远使用这个地址。

Dynamic Allocation

  动态分配﹐当 DHCP 第一次从 HDCP 服务器端租用到 IP 地址之后﹐并非永久的使用该地址﹐只要租约到期﹐客户端就得释放(release)这个 IP 地址﹐以供给其它客户端使用。当然﹐客户端可以比其它主机更优先的更新(renew)租约﹐或是租用其它的 IP 地址。

  动态分配显然比自动分配更加灵活﹐尤其是当您的实际IP 地址不足的时候﹐例如﹕您是一家 ISP ﹐只能提供200 个IP地址用来给拨接客户﹐但并不意味着您的客户最多只能有 200 个。因为要知道﹐您的客户们不可能全部同一时间上网的﹐除了他们各自的行为习惯的不同﹐也有可能是电话线路的限制。这样﹐您就可以将这 200 个地址﹐轮流的租用给拨号上来的客户使用了。这也是为什么当您查看 IP 地址的时候﹐会因每次拨号而不同的原因了(除非您申请的是一个固定 IP ﹐通常的ISP 都可以满足这样的要求﹐这或许要另外收费)。当然﹐ISP不一定使用 DHCP 来分配地址﹐但这个概念和使用 IPPool 的原理是一样的。

DHCP 除了能动态的设定 IP 地址之外﹐还可以将一些 IP 保留下来给一些特殊用途的机器使用﹐它可以按照硬件地址来固定的分配 IP 地址﹐这样可以给您更大的设计空间。同时﹐DHCP 还可以帮客户端指定 router﹑netmask﹑DNSServer﹑WINS Server﹑等等项目﹐您在客户端上面﹐除了将 DHCP 选项打勾之外﹐几乎无需做任何的 IP 环境设定。

五、DHCP的工作原理

根据客户端是否第一次登录网络﹐DHCP 的工作形式会有所不同。

第一次登录的时候﹕

1.寻找DHCP Server。当 DHCP 客户端第一次登录网络的时候﹐也就是客户发现本机上没有任何 IP 数据设定﹐并主机网络为自动获取ip地址的情况下,它会向网络发出一个 DHCP DISCOVER 广播封包。因为客户端还不知道自己属于哪一个网络﹐所以封包的来源地址会为 0.0.0.0 ﹐而目的地址则为 255.255.255.255 ﹐然后再附上 DHCP discover 的信息﹐向网络进行广播。

  在 Windows 的预设情形下,DHCP discover 的等待时间预设为 1 秒﹐也就是当客户端将第一个 DHCP discover 封包送出去之后,在 1 秒之内没有得到响应的话﹐就会进行第二次 DHCP discover 广播。若一直得不到响应的情况下﹐客户端一共会有四次DHCP discover 广播(包括第一次在内)﹐除了第一次会等待 1 秒之外,其余三次的等待时间分别是 9﹑13﹑16 秒。如果都没有得到 DHCP服务器的响应﹐客户端则会显示错误信息﹐宣告 DHCP discover 的失败。之后,基于使用者的选择﹐系统会继续在 5 分钟之后再重复一次 DHCP discover 的过程。

2.提供 IP 租用地址。当 DHCP 服务器监听到客户端发出的 DHCP discover 广播后﹐它会从那些还没有租出的地址池范围内﹐选择最前面的空置 IP ,连同其它 TCP/IP 设定,响应给客户端一个 DHCP OFFER 封包。

  由于客户端在开始的时候还没有 IP 地址﹐所以在其 DHCP discover 封包内会带有其 MAC 地址信息﹐并且有一个 XID 编号来辨别该封包﹐DHCP 服务器响应的 DHCP offer 封包则会根据这些资料传递给要求租约的客户。根据服务器端的设定﹐DHCPoffer 封包会包含一个租约期限的信息。

3.接受 IP 租约。如果客户端收到网络上多台 DHCP 服务器的响应﹐只会挑选其中一个 DHCP offer 而已(通常是最先抵达的那个)﹐并且会向网络发送一个DHCP request广播封包﹐告诉所有 DHCP 服务器它将指定接受哪一台服务器提供的 IP 地址。

  同时﹐客户端还会向网络发送一个 ARP 封包﹐查询网络上面有没有其它机器使用该 IP 地址﹔如果发现该 IP 已经被占用﹐客户端则会送出一个 DHCPDECLINE 封包给 DHCP 服务器﹐拒绝接受其 DHCP offer ﹐并重新发送 DHCP discover 信息。

  事实上﹐并不是所有 DHCP 客户端都会无条件接受 DHCP 服务器的 offer ﹐尤其这些主机安装有其它 TCP/IP 相关的客户软件。客户端也可以用 DHCP request 向服务器提出 DHCP 选择﹐而这些选择会以不同的号码填写在 DHCP Option Field 里面。


代码

代表意思

01

Sub-net Mask

03

Router Address

06

DNS Server Address

0F

Domain Name

2C

WINS/NBNS Server Address

2E

WINS/NBNS Node Type

2F

NetBIOS Scope ID

换一句话说﹐在 DHCP 服务器上面的设定﹐未必是客户端全都接受﹐客户端可以保留自己的一些 TCP/IP 设定。而主动权永远在客户端这边。

  4.租约确认。当 DHCP 服务器接收到客户端的 DHCP request 之后﹐会向客户端发出一个 DHCPACK 响应﹐以确认 IP 租约的正式生效﹐也就结束了一个完整的 DHCP 工作过程。

如上的工作流程如下图:

170343633.jpg

( DHCP的发现过程和 PPPOE服务的发现过程有些类似.)

六、DHCP的ip发放流程

第一次登录之后:

一旦 DHCP 客户端成功地从服务器那里取得DHCP 租约之后,除非其租约已经失效并且 IP 地址也重新设定回 0.0.0.0 ﹐否则就无需再发送 DHCP discover 广播封包﹐而会直接使用已经租用到的 IP 地址并向之前的 DHCP 服务器发出 DHCP request 信息﹐DHCP 服务器会尽量让客户端使用原来的 IP 地址﹐如果没问题的话﹐直接响应 DHCPack 来确认则可。如果该地址已经失效或已经被其它机器使用了﹐服务器则会响应一个 DHCPNACK 封包给客户端﹐要求其从新执行 DHCP discover。

至于 IP 的租约期限却是非常考究的﹐并非如我们租房子那样简单﹐以 NT 为例子﹕DHCP 客户端除了在开机的时候发出 DHCP request 请求之外﹐在租约期限一半的时候也会发出 DHCP request ﹐如果此时得不到 DHCP 服务器的确认的话﹐客户端还可以继续使用该 IP ﹔然后在剩下的租约期限的再一半的时候(即租约的87.5%)﹐还得不到确认的话﹐那么客户端就不能拥有这个 IP 了。至于为什么不是到租约期限完全结束才放弃 IP 呢﹖这个我们不需要去深究它,因为这是固定的规则罢了,只需记住这就是NT的工作方式。

地址获取状态

当客户机使用DHCP获取其IP地址时,它处于六个状态之一,如图所示:

170631785.png

当客户机第一次启动时,它进入INITIALIZE 初始化状态。为了开始获取一个IP地址,客户机先与本地网络上所有DHCP服务器联系,为此,客户机广播一个dhcpdiscover报文,并转移到SELECT 选择状态。由于协议是对BOOTP的扩充,客户机在一个UDP数据报中发送DHCPDISCOVER报文,UDP数据报中目的端口设为BOOTP端口(即端口67),本地网上所有DHCP服务器接收报文那些被设计成能响应特定客户机的服务器发送一个DHCPOFFER报文。因此,客户机可能收到零个或多个响应。

处于SELECT状态时,客户机从DHCP服务器收集DHCPOFFER响应。每个响应提供了用于客户机的配置信息,还有服务器可提供租用给客户机的一个IP地址,客户机必须选择其中一个响应(如第一个到达的响应),并与服务器协商租用。为此,客户机发送给服务器一个DHCPREQUEST报文,并进入REQUEST状态。服务器为确认已接受请求并开始租用,服务器响应发出一个DHCPACK报文。客户机收到确认后转移到BOUND (已绑定)状态,此时客户机可开始使用此地址。

租用更新状态

当一个DHCP客户机获取地址时,它就转移到绑定状态.进入绑定状态以后,客户机设置三个定时器:控制租约更新(继续原来分配的地址)、重新绑定(可能使用新的地址)和到期。一个DHCP服务器给客户机分配地址时,可为定时器指定确定的值。如果服务器未指定定时器值,客户机就使用默认值。第一个定时器的默认值通常是总租约期的一半,当第一个定时器到期,客户机必须尝试更新租约期,为请求更新,客户机发送一个DHCPREQUEST报文到获得租约处的服务器,转移到更新状态等待响应。DHCPREQUEST包含一个客户机正使用的IP地址,并请求服务机延长对此地址的租用。服务器可以用两种方式之一响应客户机的更新请求,指示客户机停止使用该地址或同意客户机继续使用此地址。如果服务器同意就发送DHCPACK ,在DHCPACK中也可含有客户机定时器的新的数值。如果服务器不同意继续使用它就发送一个DHCPNAK ,使客户机立即停止地址的使用。客户机收到DHCPACK报文则返回到绑定状态继续使用地址,如果收到DHCPNAK就立即停止使用地址并返回初始化状态。

第二个定时器在客户机进入绑定状态后开始设置,默认值为总租约期的87.5% ,客户机发送请求报文后保持在更新状态等待服务器的响应,如果在第二个定时器到期之前还没有收到服务器的响应,则第二个定时器到期时使客户机从更新状态转移到重新绑定状态,在转移时,客户机假定原来的服务器不可用,开始广播DHCPREQUEST报文到本地网上的任意服务器。可为客户机提供服务的任意服务器可能响应肯定(即延长租约),或否定(即拒绝继续使用地址)。如果客户机收到一个肯定响应,它就返回到绑定状态并重置两个定时器。如果客户机收到否定响应,它就转移到初始化状态,并且停止使用IP地址,在继续使用IP地址前必须重新获取一个新地址。

如果客户机在重新绑定状态广播请求报文后在第三个定时器超时前还没有从任何一个服务器收到响应,则客户机必须停止使用IP地址,返回到初始化状态,并开始申请一个新地址。

跨网络的 DHCP 运作

  从前面描述的过程中,我们不难发现:DHCDISCOVER 是以广播方式进行的,其情形只能在同一网络之内进行﹐因为router 是不会将广播传送出去的。但如果 DHCP 服务器安设在其它的网络上面呢﹖由于 DHCP 客户端还没有 IP 环境设定﹐所以也不知道 Router 地址﹐而且有些 Router 也不会将 DHCP 广播封包传递出去﹐因此这情形下 DHCP DISCOVER 是永远没办法抵达 DHCP 服务器那端的,当然也不会发生 OFFER 及其它动作了。要解决这个问题,我们可以用 DHCP Agent (或 DHCP Proxy )主机来接管客户的 DHCP 请求﹐然后将此请求传递给真正的 DHCP 服务器﹐然后将服务器的回复传给客户。这里﹐Proxy 主机必须自己具有路由能力,且能将双方的封包互传对方。

若不使用 Proxy,您也可以在每一个网络之中安装 DHCP 服务器﹐但这样的话﹐一来设备成本会增加﹐而且﹐管理上面也比较分散。当然喽﹐如果在一个十分大型的网络中﹐这样的均衡式架构还是可取的。视您的实际情况而定了。

七、典型案例分析

1、单作用域

实验环境:Red Hat Enterprise Linux 5.4.vmdk windows XP.vmdk

拓扑图:

170818254.png

Red Hat Enterprise Linux 5.4系统安装dhcp服务软件包

[root@localhost ~]# mkdir /mnt/cdrom

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom

[root@localhost ~]# rpm -qa |grep dhcp

dhcpv6-client-1.0.10-17.el5

dhcp-3.0.5-21.el5

选择安装dhcp-3.0.5-21.el5软件包

[root@localhost ~]# rpm -ivh /mnt/cdrom/Server/dhcp-3.0.5-21.el5.i386.rpm

warning: /mnt/cdrom/Server/dhcp-3.0.5-21.el5.i386.rpm: Header V3DSA signature: NOKEY, key ID 37017186

Preparing...               ########################################### [100%]

             packagedhcp-3.0.5-21.el5.i386 is already installed

查看软件包安装过后所产生的文件

[root@localhost ~]# rpm -ql dhcp

/etc/dhcpd.conf                           dhcp服务的配置文件

/etc/rc.d/init.d/dhcpd

/etc/rc.d/init.d/dhcrelay

/etc/sysconfig/dhcpd

/etc/sysconfig/dhcrelay

/usr/bin/omshell

/usr/sbin/dhcpd

/usr/sbin/dhcrelay

/usr/share/doc/dhcp-3.0.5

/usr/share/doc/dhcp-3.0.5/IANA-arp-parameters

/usr/share/doc/dhcp-3.0.5/README

/usr/share/doc/dhcp-3.0.5/RELNOTES

/usr/share/doc/dhcp-3.0.5/api+protocol

/usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample   dhcp服务的配置文件样例

/usr/share/doc/dhcp-3.0.5/draft-ietf-dhc-authentication-14.txt

/usr/share/doc/dhcp-3.0.5/draft-ietf-dhc-dhcp-dns-12.txt

/usr/share/doc/dhcp-3.0.5/draft-ietf-dhc-failover-07.txt

/usr/share/doc/dhcp-3.0.5/ja_JP.eucJP

/usr/share/doc/dhcp-3.0.5/ja_JP.eucJP/dhclient-script.8

/usr/share/doc/dhcp-3.0.5/ja_JP.eucJP/dhclient.8

/usr/share/doc/dhcp-3.0.5/ja_JP.eucJP/dhclient.conf.5

/usr/share/doc/dhcp-3.0.5/ja_JP.eucJP/dhclient.leases.5

/usr/share/doc/dhcp-3.0.5/ja_JP.eucJP/dhcp-eval.5

/usr/share/doc/dhcp-3.0.5/ja_JP.eucJP/dhcp-options.5

/usr/share/doc/dhcp-3.0.5/rfc1542.txt

/usr/share/doc/dhcp-3.0.5/rfc2131.txt

/usr/share/doc/dhcp-3.0.5/rfc2132.txt

/usr/share/doc/dhcp-3.0.5/rfc2485.txt

/usr/share/doc/dhcp-3.0.5/rfc2489.txt

/usr/share/doc/dhcp-3.0.5/rfc951.txt

/usr/share/man/man1/omshell.1.gz

/usr/share/man/man5/dhcp-eval.5.gz

/usr/share/man/man5/dhcp-options.5.gz

/usr/share/man/man5/dhcpd-eval.5.gz

/usr/share/man/man5/dhcpd-options.5.gz

/usr/share/man/man5/dhcpd.conf.5.gz

/usr/share/man/man5/dhcpd.leases.5.gz

/usr/share/man/man8/dhcpd.8.gz

/usr/share/man/man8/dhcrelay.8.gz

/var/lib/dhcpd

/var/lib/dhcpd/dhcpd.leases    记录dhcp服务器的ip分配信息

dhcp.conf配置文件的修改

170925236.png

测试dhcp服务器

打开一台windows XP的虚拟操作系统,服务器与客户机都采用Host-only的网络连接方式,我们的服务器ip地址为静态的192.168.2.100,客户机windows XP采用自动获取ip地址方式。重要的一部分,如果使用VMware Workstation虚拟机做这个实验必须将VM自带的dhcp服务给禁用,不然会对实验效果造成影响。

171114912.png

查看客户机的网络详情

171224726.png

可以看到获取的域名以及其他信息都与dhcp服务器的配置相匹配。

查看dhcp服务器ip分配状态文件

171507713.png

通过查看系统日志,可以得到dhcp的工作流程

171619768.png

2、超级作用域

对于大型的网络或者是需要对获取的ip进行区别,我们需要在dhcp服务器上建立多个作用域,超级作用域就是两个或者多个作用域的集合。超级作用域对于单作用域的配置区别在于dhcp配置文档是多个区域组成的并需要添加特殊命令。

shared-network name {

         [ parameters ]

         [ declarations ]

       }    

实验环境:Red HatEnterprise Linux 5.4.vmdk   windowsXP.vmdk   windows server 2003.vmdk共三台虚拟机。

拓扑图:

171834258.png

我们在单作用域已经搭建好Red Hat Enterprise Linux 5.4的dhcp服务器,在超级作用域只需修改dhcp配置文件即可。

171903121.png

测试我们配置文件是否存在语法错误

[root@localhost ~]# service dhcpd configtest

Syntax: OK

重启dhcpd服务,使用加载最新配置。

[root@localhost ~]# service dhcpd restart

Shutting down dhcpd:                                       [  OK  ]

Starting dhcpd:                                           [  OK  ]

测试dhcp实验

Windows server 2003 的网络配置

171943143.png

Windows XP的网络配置

172013351.png

通过查看两台客户机的网络配置,由于每个作用域地址池只有一个ip地址,一台客户机获取后,另一台客户机发送DHCPDISCOVER广播封包时,服务器只能从另外一个作用域分配给ip。

查看dhcp服务器的ip分配信息

172037604.png

查看dhcp服务器的日志文件

172056317.png

3、DHCP中继

DHCPRelay(DHCPR)DHCP中继 也叫做DHCP中继代理

如果DHCP客户机与DHCP服务器在同一个物理网段,则客户机可以正确地获得动态分配的ip地址。如果不在同一个物理网段,则需要DHCP Relay Agent(中继代理)。用DHCP Relay代理可以去掉在每个物理的网段都要有DHCP服务器的必要,它可以传递消息到不在同一个物理子网的DHCP服务器,也可以将服务器的消息传回给不在同一个物理子网的DHCP客户机。

DHCP relay 原理


1 当dhcp client 启动并进行dhcp 初始化时,它会在本地网络广播配置请求报文。

2 如果本地网络存在dhcp server,则可以直接进行dhcp 配置,不需要dhcp relay。

3 如果本地网络没有dhcp server,则与本地网络相连的具有dhcprelay 功能的网络设备收到该广播报文后,将进行适当处理并转发给指定的其它网络上的dhcp server。

4 dhcp server 根据dhcp client 提供的信息进行相应的配置,并通过dhcp relay 将配置信息发送给dhcp client,完成对dhcp client 的动态配置。

事实上,从开始到最终完成配置,需要多个这样的交互报文交互过程

报文交互过程

过程。

1 dhcp relay设备修改dhcp消息中的相应字段,把dhcp的广播包改成单播包,并负责在服务器与客户机之间转换。

2 netcore路由器(2x05)可以作为dhcp relay代理。

虚拟环境下的案例:

实验环境:Windowsserver 2003.vmdk 两台Windows XP.vmdk Red Hat EnterpriseLinux 5.4

拓扑图:

172204987.png

给Windows Server 2003虚拟机添加三块网卡,充当路由器功能。

172412974.png

启动Windows Server 2003,分别将三块网卡重命名标识,将连接服务器的网卡ip配置为192.168.30.1,连接市场部mkt的网卡ip设置为192.168.20.1,连接技术部tec的网卡ip设置为192.168.10.1.

172520413.png

查看三个直连的网段

172559568.png

接下来我们就要在Windows server 2003配置路由功能,配置并启用路由与远程访问,选择自定义配置下的LAN路由,一旦启动LAN路由就具有了路由功能。我们是还要在路由功能起中继作用,在常规中新增路由协议中的DHCP中继代理程序,我们需要在市场部mkt和技术部tec接口使用中继服务。DHCP中继代理程序添加接口,需要接接口中继到服务器的地址192.168.30.100.这个时候我们的路由器已经配置好了。

172623346.png

接下来配置我们的DHCP服务器

我们DHCP服务器是Red Hat Enterprise Linux 5.4,将ip地址设置为静态的192.168.30.100,网关192.168.30.1并测试与三个网段的网关是否能够通信。

[root@localhost ~]# ping 192.168.30.1

PING 192.168.30.1 (192.168.30.1) 56(84) bytes of data.

64 bytes from 192.168.30.1: icmp_seq=1 ttl=128 time=0.765 ms

64 bytes from 192.168.30.1: icmp_seq=2 ttl=128 time=0.248 ms

64 bytes from 192.168.30.1: icmp_seq=3 ttl=128 time=0.226 ms

64 bytes from 192.168.30.1: icmp_seq=4 ttl=128 time=0.243 ms

64 bytes from 192.168.30.1: icmp_seq=5 ttl=128 time=0.226 ms

64 bytes from 192.168.30.1: icmp_seq=6 ttl=128 time=0.237 ms

64 bytes from 192.168.30.1: icmp_seq=7 ttl=128 time=0.235 ms

64 bytes from 192.168.30.1: icmp_seq=8 ttl=128 time=0.251 ms

64 bytes from 192.168.30.1: icmp_seq=9 ttl=128 time=0.204 ms


--- 192.168.30.1 ping statistics ---

9 packets transmitted, 9 received, 0% packet loss, time 8017ms

rtt min/avg/max/mdev = 0.204/0.292/0.765/0.168 ms

[root@localhost ~]# ping 192.168.10.1

PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.

64 bytes from 192.168.10.1: icmp_seq=1 ttl=128 time=0.307 ms

64 bytes from 192.168.10.1: icmp_seq=2 ttl=128 time=0.274 ms

64 bytes from 192.168.10.1: icmp_seq=3 ttl=128 time=0.226 ms

64 bytes from 192.168.10.1: icmp_seq=4 ttl=128 time=0.257 ms


--- 192.168.10.1 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3021ms

rtt min/avg/max/mdev = 0.226/0.266/0.307/0.029 ms

[root@localhost ~]# ping 192.168.20.1

PING 192.168.20.1 (192.168.20.1) 56(84) bytes of data.

64 bytes from 192.168.20.1: icmp_seq=1 ttl=128 time=1.10 ms

64 bytes from 192.168.20.1: icmp_seq=2 ttl=128 time=0.234 ms

64 bytes from 192.168.20.1: icmp_seq=3 ttl=128 time=0.226 ms

64 bytes from 192.168.20.1: icmp_seq=4 ttl=128 time=0.241 ms


--- 192.168.20.1 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3134ms

rtt min/avg/max/mdev = 0.226/0.451/1.106/0.378 ms

我们已经对服务器配置过DHCP服务,我们只需对DHCP配置文件进行修改。

172746276.png

检查有无语法错误并重启服务

[root@localhost ~]# service dhcpd configtest

Syntax: OK

[root@localhost ~]# service dhcpd restart  

Shutting down dhcpd:                                       [  OK  ]

Starting dhcpd:                                           [  OK  ]

测试实验结果

将作为测试的客户机网络连接设置为VMnet3相当于处于技术部tec的VLAN

172854213.png

将网络连接修改为VMnet2,相当于处于市场部mkt的VLAN当中

172934921.png

设备实验环境:

实验环境:Quidway S3526交换机、Quidway R2621路由器、Red Hat Enterprise Linux 5.4、dhcp客户机、RJ-45接口网线若干。

拓扑图:

173014120.png

DHCP服务器在前边我们已经配置好了,现在只需对路由器以及交换机进行配置

交换机配置结果:

[SW]dis cu

#

sysname SW

#

radius scheme system

server-type huawei

primary authentication127.0.0.1 1645

primary accounting127.0.0.1 1646

user-name-formatwithout-domain


domain system

radius-scheme system

access-limit disable

state active

idle-cut disable

self-service-url disable

messenger time disable


domain default enablesystem

#

local-server nas-ip127.0.0.1 key huawei

#

vlan 1

#

vlan 10                                  

#

vlan 20

#

vlan 30

#

interface Aux0/0

#

interface Ethernet0/1

port access vlan 10

#

interface Ethernet0/2

#

interface Ethernet0/3

#

interface Ethernet0/4

#

interface Ethernet0/5

#

interface Ethernet0/6

#

interface Ethernet0/7

#

interface Ethernet0/8                    

#

interface Ethernet0/9

#

interface Ethernet0/10

port access vlan 20

#

interface Ethernet0/11

#

interface Ethernet0/12

#

interface Ethernet0/13

#

interface Ethernet0/14

#

interface Ethernet0/15

#

interface Ethernet0/16

#

interface Ethernet0/17

#

interface Ethernet0/18

#                                        

interface Ethernet0/19

#

interface Ethernet0/20

port access vlan 30

#

interface Ethernet0/21

#

interface Ethernet0/22

#

interface Ethernet0/23

#

interface Ethernet0/24

port link-type trunk

port trunk permit vlanall

#

interface NULL0

#

user-interface aux 0

user-interface vty 0 4

#

return

路由器配置结果:

[Router]dis cu

 Now createconfiguration...

 Current configuration

 !

   version 1.74

   undo pos-serveraddr-switch

   firewall enable

   aaa-enable

   aaa accounting-schemeoptional

 !

 interface Aux0

   async mode flow

   link-protocol ppp

 !

 interface Ethernet0

 !

 interface Ethernet0.1

   vlan-type dot1q vid 10

   ip address192.168.10.1 255.255.255.0

   ip relay-address192.168.30.100

 !

 interface Ethernet0.2

   vlan-type dot1q vid 20

   ip address192.168.20.1 255.255.255.0

   ip relay-address192.168.30.100      

 !                                      

 interface Ethernet0.3

   vlan-type dot1q vid 30

   ip address192.168.30.1 255.255.255.0

 !

 interface Ethernet1

 !

 interface Serial0

   link-protocol ppp

 !

 interface Serial1

   link-protocol ppp

 !

 return

配置欧了,就可以做测试了,现在路由器ping DHCP服务器,我们需要将Red Hat Enterprise Linux5.4 DHCP服务器网络连接采用桥接方式并在宿主机的ip地址设置为30网段。

[Router]ping 192.168.30.100

 PING 192.168.30.100:56  data bytes, press CTRL_C to break

   Reply from192.168.30.100: bytes=56 Sequence=0 ttl=64 time = 3 ms

   Reply from192.168.30.100: bytes=56 Sequence=1 ttl=64 time = 1 ms

   Reply from192.168.30.100: bytes=56 Sequence=2 ttl=64 time = 1 ms

   Reply from192.168.30.100: bytes=56 Sequence=3 ttl=64 time = 1 ms

   Reply from192.168.30.100: bytes=56 Sequence=4 ttl=64 time = 3 ms


 --- 192.168.30.100 pingstatistics ---

   5 packets transmitted

   5 packets received

   0.00% packet loss

   round-trip min/avg/max= 1/1/3 ms

173142775.png

客户机做测试,连接在技术部tec的VLAN接口上,获取的地址信息

173228847.png

客户机连接在市场部mkt的VLAN接口获取到的地址信息

173258940.png