DHCP在企业网中的应用

 环境:一台或若干台客户机(centos或windows)

        VMware workstation 10

        centos6.3操作系统

          防火墙 华为secpath f100-c  

         交换机  华为quidway s2000系列

          pc机若干台

简介:DHCP是Dynamic Host Configuration Protocol的缩写,它是TCP/IP协议簇中的一种,主要是用来给网络客户机分配动态的IP地址。这些被分配的IP地址都是DHCP服务器预先保留的一个由多个地址组成的地址集,并且它们一般是一段连续的地址。

使用DHCP时必须在网络上有一台DHCP服务器,而其他机器执行DHCP客户端。当DHCP客户端程序发出一个信息,要求一个动态的IP地址时,DHCP服务器会根据目前已经配置的地址,提供一个可供使用的IP地址和子网掩码给客户端。

DHCP服务器有3种为DHCP客户机分配TCP/IP地址的方式:

1.手工分配:在手工分配中,网络管理员在DHCP服务器通过手工方法配置DHCP客户机的IP地址。当DHCP客户机要求网络服务时,DHCP服务器把手工配置的IP地址传递给DHCP客户机。

2.自动分配:在自动分配中,不需要进行任何的IP地址手工分配。当DHCP客户机第一次向DHCP服务器租用到IP地址后,这个地址就永久地分配给了该DHCP客户机,而不会再分配给其他客户机。

3.动态分配:当DHCP客户机向DHCP服务器租用IP地址时,DHCP服务器只是暂时分配给客户机一个IP地址。只要租约到期,这个地址就会还给DHCP服务器,以供其他客户机使用。如果DHCP客户机仍需要一个IP地址来完成工作,则可以再要求另外一个IP地址。

工作过程;

1    DHCP 发现 (DISCOVER)

客户在物理子网上发送广播来寻找可用的服务器。网络管理员可以配置一个本地路由来转发DHCP包给另一个子网上的DHCP服务器。该客户实现生成一个目的地址为255.255.255.255或者一个子网广播地址的UDP包。

客户也可以申请它使用的最后一个IP地址(在下面的例子里为192.168.1.100)。如果该客户所在的网络中此IP仍然可用,服务器就可以准许该申请。否则,就要看该服务器是授权的还是非授权的。 授权服务器会拒绝请求,使得客户立刻申请一个新的IP。非授权服务器仅仅忽略掉请求,导致一个客户端请求的超时,于是客户端就会放弃此请求而去申请一个新的IP地址。

DHCP提供 (OFFER)

当DHCP服务器收到一个来自客户的IP租约请求时,它会提供一个IP租约。DHCP为客户保留一个IP地址,然后通过网络广播一个DHCPOFFER消息给客户。该消息包含客户的MAC地址、服务器提供的IP地址、子网掩码、租期以及提供IP的DHCP服务器的IP。

服务器基于在CHADDR字段指定的客户硬件地址来检查配置。这里的服务器,192.168.1.1,将IP地址指定于YIADDR字段

DHCP请求 (REQUEST)

当客户PC收到一个IP租约提供时,它必须告诉所有其他的DHCP服务器它已经接受了一个租约提供。因此,该客户会发送一个DHCPREQUEST消息,其中包含提供租约的服务器的IP。当其他DHCP服务器收到了该消息后,它们会收回所有可能已提供给客户的租约。然后它们把曾经给客户保留的那个地址重新放回到可用地址池中,这样,它们就可以为其他计算机分配这个地址。任意数量的DHCP服务器都可以响应同一个IP租约请求,但是每一个客户网卡只能接受一个租约提供。

DHCP确认 (Acknowledge,ACK)

当DHCP服务器收到来自客户的REQUEST消息后,它就开始了配置过程的最后阶段。这个响应阶段包括发送一个DHCPACK包给客户。这个包包含租期和客户可能请求的其他所有配置信息。这时候,TCP/IP配置过程就完成了。

该服务器响应请求并发送响应给客户。整个系统期望客户来根据选项来配置其网卡。

案例一;

拓扑图简介

下面我们以在centos虚拟机中的具体配置步骤,来说明他的具体工作方式及文件的配置方法;

挂载光驱安装dhcp服务

用rpm -ql dhcp 来查看具体的安装信息,重点为配置文件

进入dhcp的配置文件中,此时他是没有内容的,如图

我们可以进入底行模式,用下图所示的命令读取他的配置文件样板

在他的样板文件中在subnet选项中可以看到他有一个空作用域,这个作用域是必须的,他的作用是去理解一个网络拓扑的

然后是具体的编写步骤,首先声明一个作用域,然后是掩码,然后另起一行是地址段,然后是选项option段,包括路由, 广播,dns指向,域名,默认的使用时间,和最大的使用时间等

host声明,用于将地址与主机mac的绑定

我们需要重新编写,可以读取他的样板文件,进行修改,进入/etc/dhcp/dhcpd.conf后在底行模式用r /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample读取样板文件后进行如下修改:

第八九行为全局作用参数,可以保留也可以删除,它的作用是在局部参数缺失时代替局部参数;

如上图,既然我们已添加了局部域名参数,就把全局的域名参数删除,并改写全局的dns指向参数

如图,因为实验是在虚拟机环境下进行的,所以,在dhcp的相关日志中可以看到我们真实物理机向我们服务器发来的信息通知,因此为了保证实验的顺利进行,我们要将两个虚拟机(centos的服务器和xp客户机用仅主机模式连接起来

在启用dhcp前一定要将虚拟机的dhcp关掉(如果有的话),否则,容易地址冲突

重启dhcp服务器

为了保证我们的dhcp服务的正常工作,我们可以查看一下系统的message日志,看dhcp是否工作证常,如图

查看客户机的地址情况

案例2;

上述案例中我们的dhcp服务器可以提供几百台的地址范围,当一个网络变的更大时,而使用B类地址又浪费时,或者是有更多的子网节点时,那我们的服务器所面临的问题就需要用另外的一种方法来解决了,他就是share-network,超级作用域

步骤

超级作用域的配置,首先你要创建一个或多个作用域,用类似案例一的方法

注意这些作用域是相互独立的,然后用语法share-network name{作用域1 作用域2 ...作用域n}

注意,作用域1,2,...n在刚开始提供服务时是没有先后顺序的,也就是说客户机先挑哪个是随机的,但一旦选择开始,就只能等到另一个作用域选择完才能轮到下一个,因为在真实环境下,这种环境是可以真实发生的,但在我们的实验环境下,无法模拟那么多台的主机,所以,我们的作用域就尽量做的小一些了。。。。。

配置如图:

注意空作用域的作用,如图,空作用域的作用网段必须和主机在同一网段,声明空作用域后的作用是理解一个网络拓扑,在配置众多的作用域时,如果一个声明的作用域和主机(虚拟机)处于同一网段必须要在下面的非空作用域中有一个作用域和主机对应,如上图:

找一台主机进行测试,如图

然后我们可以另外再启动一台虚拟进行测试,也可以在原来的虚拟机上再添加一块网卡进行测试,如图,同样的都要选择仅主机模式;

然后用ipconfig/all命令查看结果

图形界面结果

案例三:

在防火墙,交换机(二层),pc机真实环境下的dhcp中继和dhcp服务器配置过程

拓扑图如下

设备简介;防火墙 华为secpath f100-c  

         交换机  华为quidway s2000系列

          pc机若干台

目标:实现基于防火墙端口的dhcp中继,并根据不同来源ip的子网类型进行动态的地址分配

配置步骤

首先,将dhcp-server服务器配置好,让其能提供正常的dhcp服务,同样的进入/etc/dhcp/dhcpd.conf后,进行如下修改:

然后进入链路的具体配置;

防火墙配置内容;

[H3C]

[H3C]int eth0/0.10

[H3C-Ethernet0/0.10]ip ad 192.168.10.1 24   ----------------------------配置IP地址  

[H3C-Ethernet0/0.10]vlan-type  dot1q vid 10 ----------------------------设置封装协议为dot1q              

[H3C-Ethernet0/0.10]int eth0/0.20            

[H3C-Ethernet0/0.20]vlan-type  dot1q vid 20

[H3C-Ethernet0/0.20]ip ad 192.168.20.1 24  

[H3C-Ethernet0/0.20]int eth0/0.30

[H3C-Ethernet0/0.30]vlan-type dot1q vid 30

[H3C-Ethernet0/0.30]ip ad 192.168.30.1 24

[H3C-Ethernet0/0.30]

[H3C-Ethernet0/0.30]quit

[H3C]un insulate ------------------------------------------------------取消端口隔离

[H3C]firewall zone trust ----------------------------------------------加入区域

[H3C-zone-trust]

[H3C-zone-trust]ad in Ethernet 0/0.10

[H3C-zone-trust]ad int Ethernet 0/0.20

[H3C-zone-trust]ad interface Ethernet 0/0.30

[H3C-zone-trust]

[H3C-zone-trust]quit

[H3C]

[H3C-Ethernet0/0.30]dis ip routing-table

Routing Table: public net

Destination/Mask   Protocol Pre  Cost        Nexthop         Interface

127.0.0.0/8        DIRECT   0    0           127.0.0.1       InLoopBack0

127.0.0.1/32       DIRECT   0    0           127.0.0.1       InLoopBack0

192.168.0.0/24     DIRECT   0    0           192.168.0.1     Ethernet0/0

192.168.0.10/32     DIRECT   0    0           127.0.0.1       InLoopBack0

192.168.10.0/24    DIRECT   0    0           192.168.10.1    Ethernet0/0.10

192.168.10.1/32    DIRECT   0    0           127.0.0.1       InLoopBack0

192.168.20.0/24    DIRECT   0    0           192.168.20.1    Ethernet0/0.20

192.168.20.1/32    DIRECT   0    0           127.0.0.1       InLoopBack0

192.168.30.0/24    DIRECT   0    0           192.168.30.1    Ethernet0/0.30

192.168.30.1/32    DIRECT   0    0           127.0.0.1       InLoopBack0

[H3C]dhcp select re                

[H3C]dhcp select relay int

[H3C]dhcp select relay interface eth0/0.10 to eth0/0.20

[H3C]int eth0/0.10                                  

[H3C-Ethernet0/0.10]ip relay add

[H3C-Ethernet0/0.10]ip relay address 192.168.30.110

[H3C-Ethernet0/0.10]int eth0/0.20

[H3C-Ethernet0/0.20]ip relay address 192.168.30.110

[H3C-Ethernet0/0.20]0dis cu

#

sysname H3C

#

firewall packet-filter enable

firewall packet-filter default permit

#

undo insulate

#

firewall statistic system enable

#

radius scheme system

server-type extended

#

domain system

#

local-user admin

password cipher .]@USE=B,53Q=^Q`MAF4<1!!

service-type telnet terminal

level 3

service-type ftp

#

interface Aux0

async mode flow

#

interface Ethernet0/0                    

ip address 192.168.0.1 255.255.255.0

#

interface Ethernet0/0.10

ip address 192.168.10.1 255.255.255.0

ip relay address 192.168.30.110

dhcp select relay

vlan-type dot1q vid 10

#

interface Ethernet0/0.20

ip address 192.168.20.1 255.255.255.0

ip relay address 192.168.30.110

dhcp select relay

vlan-type dot1q vid 20

#

interface Ethernet0/0.30

ip address 192.168.30.1 255.255.255.0

vlan-type dot1q vid 30

#

interface Ethernet0/4

#

interface Encrypt1/0

#

interface NULL0

#                                        

firewall zone local

set priority 100

#

firewall zone trust

add interface Ethernet0/0

add interface Ethernet0/0.10

add interface Ethernet0/0.20

add interface Ethernet0/0.30

set priority 85

#

firewall zone untrust

set priority 5

#

firewall zone DMZ

set priority 50

#

firewall interzone local trust

#

firewall interzone local untrust

#

firewall interzone local DMZ

#

firewall interzone trust untrust

#                                        

firewall interzone trust DMZ

#

firewall interzone DMZ untrust

#

FTP server enable

#

user-interface con 0

user-interface aux 0

user-interface vty 0 4

authentication-mode scheme

#

return

二层交换机配置内容:

[Quidway-vlan30]quit

[Quidway]int eth0/10

[Quidway-Ethernet0/10]po access vlan 10 -------------------------------将10端口加为VLAN 10

[Quidway-Ethernet0/10]int eth0/20

[Quidway-Ethernet0/20]po access vlan 20 -------------------------------将20端口加为VLAN 20

[Quidway-Ethernet0/20]int eth0/24

[Quidway-Ethernet0/24]po access vla 30 --------------------------------将24端口加为LVAN 30

[Quidway-Ethernet0/24]quit

[Quidway]int eth0/22

[Quidway-Ethernet0/22]po link-type trunk --------------------------将22端口设置为Trunk链路

[Quidway-Ethernet0/22]port trunk permit vla all

Please wait........................................... Done.

[Quidway-Ethernet0/22]

[Quidway-Ethernet0/22]quit

[Quidway]

接下来,我们在VLAN10的二层交换机的10段口接入一台PC机进行地址的服务测试,如图:

可以看到地址获得正常,

然后我们在VLAN20的二层交换机的20段口接入一台PC机进行地址的服务测试,如图:

由此我们可以看出,PC机的地址获得与我们的配置文件的编写是一致的,并且,DHCP的中继在防火墙上正常工作,实验结果正常,实验结束。