Dhcp在企业网中的应用


Dhcp简介:

        DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。DHCP3个端口,其中UDP67UDP68为正常的DHCP服务端口,分别作为DHCP ServerDHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做双机热备的。

工作原理:

        DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口

    1DHCP Client以广播的方式发出DHCP Discover报文。

    2、所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文。

DHCP Offer报文中“Your(Client) IP Address”字段就是DHCP Server能够提供给DHCP Client使用的IP地址,且DHCP Server会将自己的IP地址放在“option”字段中以便DHCP Client区分不同的DHCP ServerDHCP Server在发出此报文后会存在一个已分配IP地址的纪录。

    3DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文。

DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP ServerIP地址和需要的IP地址。

    4DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。

    5DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP ClientDHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程。

    6DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配。

注意:在使用租期超过50%时刻处,DHCP Client会以单播形式向DHCP Server发送DHCPRequest报文来续租IP地址,如果收不到dhcp ack报文,在使用租期超过87.5%时刻处,DHCP Client会以广播形式向DHCP Server发送DHCPRequest报文来续租IP地址,如果此时还收不到的话,将发dhcp discover 寻找其他的dhcp服务器,当到达100%时,dhcp client 将变成以169.254.x.x 开头的IP

实现方法

1、在硬件上面实现如:宽带路由器、路由器、防火墙、三层交换机

2、在主机上实现如:windowsLinux

工作模式

1、manual(手动)

是将主机的mac地址和IP绑定的方式,地址是永久被所绑定的mac地址的主机使用。特点:IP地址稳定,不易发生变化,地址利用率低

如果主机想要中间释放地址可用:ipconfig /release  重新获得ipconfig /renew

2、automatic(自动)

首先dhcp server 中建立IP地址池,主机得到IP后,也是将mac地址IP做绑定,地址是永久被所绑定的mac地址的主机使用。特点:IP地址稳定,不易发生变化,地址利用率低

3、dynamic (动态)

dhcp server中建立有起始IP和结束IP的地址池,当dhcp client 向服务器发出请求后,在一定的租期内让主机使用IP地址,当租期到期时候,服务器将自动的收回IP地址。特点:地址的利用率大大提高。

Dhcp中继功能

DHCPRelayDHCPRDHCP中继也叫做DHCP中继代理。DHCP中继代理,就是在DHCP服务器和客户端

wKiom1XRzJqzu_wiAAA7HUUSPN4108.jpg

之间转发DHCP数据包。当DHCP客户端与服务器不在同一个子网上,就必须有DHCP中继代理来转发DHCP请求和应答消息。DHCP中继代理的数据转发,与通常路由转发是不同的,通常的路由转发相对来说是透明传输的,设备一般不会修改IP包内容。而DHCP中继代理接收到DHCP消息后,重新生成一个DHCP消息,然后转发出去。

DHCP客户端看来,DHCP中继代理就像DHCP服务器;在DHCP服务器看来,DHCP中继代理就像DHCP客户端。

Dhcp中继,可以在主机上实现,也可以在网络设备上实现,一般会在网络设备上实现。

案例:

案例1:在Windows主机上实现dhcp

在添加管理删除程序里添加dhcp服务

wKioL1XRzoiz4QicAAK_lXXWYMc485.jpg

添加好之后打开

wKioL1XRzrSxrawOAAGlKH8sjSY952.jpg

wKiom1XRzU-BfNCgAAHYg-cHHDE947.jpgwKiom1XRzU-BfNCgAAHYg-cHHDE947.jpg



可以看到在Windows上面实现比较简单


3、Linux的主机上实现

案例

地址池  192.168.3.50 – 192.168.3.200

排除  192.168.3.100

网关:192.168.3.1

绑定  192.168.3.100  ftp server 使用

Dns指向  1.1.1.1 2.2.2.2

域名   abc.com

环境: centos 6.5

实现:


首先安装dhcp

[root@new ~]# yum --disablerepo=\* --enablerepo=c6-media install dhcp –y

找到配置文件

[root@new ~]# vim /etc/dhcp/dhcpd.conf

wKiom1XRzYOT13-BAACkjIqtN-s181.jpg

按照说明打开配置样例,在低行模式输入

wKioL1XRz5_RO1FAAABhhTe2nm8372.jpg

删除35行以下的,留下需要的

wKiom1XRzaWyG6yQAAKKZwMYnUw564.jpg

写入自己所需要的方案:

wKiom1XRzb2DphIMAAIwQCdnqYQ209.jpg

配置文件写好后,可以在启动之前先测试以下语法是否正确

[root@new ~]# service dhcpd configtest
Syntax: OK

wKiom1XRzjzyLvYdAAB1CA55W1A821.jpg

基本配置完毕,可以找主机测试了

4、Linux主机实现超级作用域

超级作用域的作用:可以增加地址池IP数量,可以将不同子网或不连续的IP实现dhcp动态获得,使用于大型网络

案例:建超及作用域,增加4.0网段,作用域名称abc(偷个懒,在刚才的文件里直接修改了)

wKioL1XR0FmSASLIAAKTRM7uK2E767.jpg

[root@new ~]# service dhcpd configtest
Syntax: OK
[root@new ~]# service dhcpd restart  
Shutting down dhcpd:                                       [  OK  ]
Starting dhcpd:                                            [  OK  ]
[root@new ~]#

完成,用主机测试

5、在设备上实现dhcp

在防火墙上实现dhcp server  (型号 f100-c

[H3C]dhcp enable                             **开启dhcp服务
[H3C]dhcp server ip-pool xxx                    **定义地址池的名字
[H3C-dhcp-pool-xxx]network 192.168.5.0          **指定地址网段
[H3C-dhcp-pool-xxx]gateway-list 192.168.5.1       **网关
[H3C-dhcp-pool-xxx]dns-list 1.1.1.1 2.2.2.2         **dns指向
[H3C]dhcp server forbidden-ip 192.168.5.2 192.168.5.10  **排除5.2 到5.10 的IP
实现地址绑定,先建地址池
[H3C]dhcp server ip-pool bind                   **名为bind
[H3C-dhcp-pool-bind]static-bind mac-address 3ce5-a6ce-1891 **绑定目标mac地址
[H3C-dhcp-pool-bind]static-bind ip-address 192.168.5.2   **要绑定的IP
[H3C]dis dhcp server ip-in-use all              **查看正在使用dhcp服务的主机


客户端
[H3C-Ethernet0/0]ip add dhcp-alloc           **动态获得地址
[H3C-Ethernet0/0]dis dhcp client verbose      **查看详情

拓扑

Dhcp中继案例

1、Windows主机上实现路由中继功能,Linux主机作为dhcp服务器

2、拓扑

wKioL1XR0J3Q7bxrAACb2ES1fu4189.jpg

wKiom1XRzq3AFZqaAAG2kOKoJyc008.jpg

wKiom1XRzuKSqLLQAAE5CCVNgbA995.jpg

wKioL1XR0QDTz67qAAITS-CbIV4376.jpg

wKiom1XRzwOyC0_dAAFA9NX2ln4934.jpg

路由功能已经打开,开启dhcp中继功能

wKiom1XRzxXCDeBpAAG9_B_kWf4064.jpg

wKiom1XRzyewJ5LYAADcxdfggzU499.jpg

新增接口

wKioL1XR0X-iKq4_AADAC4PJdAY382.jpg

设置要中继的主机地址

wKioL1XR0ZDRAh_5AAD0U0TCUnE070.jpg

Linux主机 dhcp配置

wKiom1XRz5PQTEDAAAG8dPEODlI624.jpg

针对Linux主机做dhcpserver时,服务器所在的网段,写一个空的作用域

wKioL1XR0cTBTHpAAABlFQuC634921.jpg

*********************************************************************

2.Linux主机上实现路由中继功能

1.打开主机的路由功能

[root@new ~]# vim /etc/sysctl.conf

wKiom1XRz8-xMeWEAADUfcBo934091.jpg

[root@new ~]# sysctl -p

2.安装dhcp包,里面包含有dhcp的中继功能

[root@new ~]# vim /etc/sysconfig/dhcrelay

wKioL1XR0ejj8UFoAADu3s8AB_g019.jpg

[root@new ~]# service dhcrelay start

可以查看67端口,已经开启

关闭防火墙就可以了

在设备上实现dhcp中继功能

案例:

拓扑图

wKiom1XRz-3j4dj0AADWFJgIiCA636.jpg

在设备上要启用中继使vlan间能通信,必须是通过三层设备

在防火墙上实现

首先在Linux主机上,配置好dhcp服务器

wKioL1XR0gaAVdrBAAHWiY5oudA106.jpg


防火墙配置:

[H3C]undo insulate
[H3C]interface Ethernet 0/0.1
[H3C-Ethernet0/0.1]vlan-type dot1q vid 10
[H3C-Ethernet0/0.1]ip add 192.168.10.1 24
[H3C-Ethernet0/0.1]int eth 0/0.2
[H3C-Ethernet0/0.2]vlan-type dot1q vid 20
[H3C-Ethernet0/0.2]ip add 192.168.20.1 24
[H3C-Ethernet0/0.2]int eth 0/0.3
[H3C-Ethernet0/0.3]vlan-type dot1q vid 30
[H3C-Ethernet0/0.3]ip add 192.168.3.254 24
[H3C]firewall zone trust
[H3C-zone-trust]add interface Ethernet 0/0
[H3C-zone-trust]add interface Ethernet 0/0.1
[H3C-zone-trust]add interface Ethernet 0/0.2
[H3C-zone-trust]add interface Ethernet 0/0.3
开启dhcp中继
[H3C]dhcp enable
[H3C]interface Ethernet 0/0.1
[H3C-Ethernet0/0.1]dhcp select relay               ***选择这个接口作为中继
[H3C-Ethernet0/0.1]ip relay address 192.168.3.100    ***中继服务器的IP
[H3C-Ethernet0/0.1]int eth0/0.2
[H3C-Ethernet0/0.2]dhcp select relay            ***选择这个接口作为中继
[H3C-Ethernet0/0.2]ip relay address 192.168.3.100


交换机配置:

[sw1]int e1/0/22
[sw1-Ethernet1/0/22]port link-type trunk
[sw1-Ethernet1/0/22]port trunk permit vlan all
[sw1]vlan 10
[sw1-vlan10]port e1/0/10
[sw1-vlan10]vlan 20
[sw1-vlan20]port e1/0/20
[sw1-vlan20]vlan 30    
[sw1-vlan30]port e1/0/24
主机测试(用防火墙代替了)
注意:dhcp服务器的主机网关,一定要指向正确,本例为指向到192.168.3.254

[H3C]int eth 0/0
[H3C-Ethernet0/0]ip add dhcp-alloc          ***通过dhcp方式获取地址
[H3C-Ethernet0/0]dis dhcp client verbose     ***查看地址获取

wKioL1XR0haRr5xkAAIAgBQbj4g707.jpg

完成

在不通设备上的中继配置实例

实验拓扑图还以刚才的拓扑为例

三层交换机设备型号:S3526E

[Quidway]int e0/24
[Quidway-Ethernet0/24]port link-type trunk
[Quidway-Ethernet0/24]port trunk permit vlan all        ***端口24作为trunk口
[Quidway]vlan 10
[Quidway-vlan10]vlan 20
[Quidway-vlan20]vlan 30
[Quidway]int Vlan-interface 10
[Quidway-Vlan-interface10]ip add 192.168.10.1 255.255.255.0
[Quidway-Vlan-interface10]int Vlan-interface 20            
[Quidway-Vlan-interface20]ip add 192.168.20.1 255.255.255.0
[Quidway-Vlan-interface20]int Vlan-interface 30            
[Quidway-Vlan-interface30]ip add 192.168.3.254 255.255.255.0
[Quidway]dhcp enable
[Quidway]dhcp select relay interface Vlan-interface 10    ***需要中继的vlan
[Quidway]dhcp select relay interface Vlan-interface 20
[Quidway]int Vlan-interface 10
[Quidway-Vlan-interface10]ip relay address 192.168.3.100  **中继服务器地址
[Quidway-Vlan-interface10]int Vlan-interface 20        
[Quidway-Vlan-interface20]ip relay address 192.168.3.100

配置完成,主机测试

wKiom1XR0B6Cdb-lAAEGNlA66Uc454.jpg

结果是正确的

2.交换机设备型号S3526

拓扑依然是刚才的拓扑图,只在中继设备上面做修改

配置:

[Quidway]int et0/24
[Quidway-Ethernet0/24]port link-type trunk
[Quidway-Ethernet0/24]port trunk permit vlan all
[Quidway]vlan 10
[Quidway-vlan10]vlan 20
[Quidway-vlan20]vlan 30
[Quidway]int Vlan-interface 10
[Quidway-Vlan-interface10]ip add 192.168.10.1 255.255.255.0
[Quidway-Vlan-interface10]int Vlan-interface 20            
[Quidway-Vlan-interface20]ip add 192.168.20.1 255.255.255.0
[Quidway]dhcp-server 1 ip 192.168.3.100   ***定义一个组,中继给3.100
[Quidway]int Vlan-interface 10
[Quidway-Vlan-interface10]dhcp-server 1    ***将vlan10 加入到中继组1 中
[Quidway-Vlan-interface10]int vlan 20
[Quidway-Vlan-interface20]dhcp-server 1

完成

总结:在设备设备上配置命令不太一样,主机配置相对简单,不过在实际中基本是设备实现,要多摸索