OVS中基于VLAN的DHCP地址池实现

网络 通信技术
本文主要介绍在VLAN网络中的DHCP服务器,如何在不同的VLAN网络中分配不同网段的DHCP地址池。

前言

VLAN作为一种虚拟局域网技术,在交换机组网管理、云计算平台的网络服务中都有较为重要的作用,尤其在目前的虚拟交换OVS中,VLAN的应用更加灵活和重要,关于VLAN在OVS中的基础使用方法,可以参见作者的另一篇文章《基于OVS的VLAN应用及实现》,行描述。本文主要介绍在VLAN网络中的DHCP服务器,如何在不同的VLAN网络中分配不同网段的DHCP地址池。

一、技术背景

通常DHCP服务器能够根据DHCP协议的option扩展字段来分配不同的地址池,由于VLAN属于二层网络属性,在DHCP上层应用中是无法获取VLAN信息的,想要根据VLAN信息进行地址池的划分,要么把VLAN信息通过一定的方式带到应用层,要么在不同的VLAN网络中启用多个DHCP服务,一般情况下,选择后一种方式较为简单。

例如,在下图一个Linux系统的网络节点中,外部不同vlan网络可以和节点中的不同VM主机通信,通过eth0接口接入的设备需要根据不同的vlan获取不同网段的地址,eth0接口为了处理vlan1和vlan2的报文,使用vconfig工具创建eth0.1和eth0.2的虚拟接口,和VM的tap口桥接,然后在每个桥接口上采用接口绑定的方式启用DHCP Server服务,这样就完成了不同vlan划分不同地址池的功能。

Linux系统的网络节点中

二、实现原理

上述基于Linux虚拟接口实现的VLAN处理,如果设备接口较多,且VLAN子网也较多的情况下,就需要创建很多个VLAN虚接口来处理不同接口的不同vlan报文,比如存在两个eth0、eth1接口,都需要处理vlan1和vlan2的报文,这样就需要创建eth0.1、eth0.2、eth1.1、eth1.2四个虚拟接口,这种乘法关系在网络接口和vlan子网较多的场景中使用相对繁琐,更进一步的,如果这些虚拟接口在虚拟交换OVS中完成多个地址池,也需要创建多个OVS桥。

在OVS网络中,有一种类型为internal的桥接口,可以通过针对该接口设置tag来处理不同vlan的报文,通过在该接口上启动DHCP服务来分配不同的地址池,实现组网如下图所示:

其中eth1和eth2作为OVS的trunk口转发链路上的报文,dhcp1和dhcp2分别是tag为1和2的internal类型的桥接口,在dhcp1和dhcp2上配置地址并启用DHCP Server,这样就完成了不同的VLAN分配不同地址池的要求。

三、配置命令

创建ovs桥Java

  1. # ovs-vsctl add-br br-ovs  

eth1和eth2加入OVSJava

  1. # ovs-vsctl add-port br-ovs eth1 
  2. # ovs-vsctl add-port br-ovs eth1 

创建启用dhcp服务的桥接口dhcp1和dhcp2Java

  1. # ovs-vsctl add-port br-ovs dhcp1 -- set interface dhcp1 type=internal 
  2. # ovs-vsctl add-port br-ovs dhcp2 -- set interface dhcp2 type=internal 

设置dhcp1和dhcp2的tagJava

  1. # ovs-vsctl set Port dhcp1 tag=1 
  2. # ovs-vsctl set Port dhcp2 tag=2 

查看上述配置如下:

配置地址到桥接口dhcp1和dhcp2Java

  1. # ifconfig dhcp1 192.168.1.1 
  2. # ifconfig dhcp2 10.0.0.1 

在dhcp1和dhcp2上启动dhcp服务Java

  1. # dnsmasq --bind-interfaces --except-interface=lo --interface dhcp1  
  2. --dhcp-range 192.168.1.2,192.168.1.10 
  3. # dnsmasq --bind-interfaces --except-interface=lo --interface dhcp2 
  4.  --dhcp-range 10.0.0.2,10.0.0.10 

四、测试结果

用PC设备运行dhcp client获取地址,并通过交换机分别打上tag1和tag2接入eth1(或eth2)进行vlan的测试。当tag值为1时,在eth1上通过tcpdump抓包可以看到vlan1的dhcp报文如下:

在dhcp1上通过tcpdump抓包可以看到dhcp报文如下:

在dhcp1上通过tcpdump抓包可以看到dhcp报文如下

当tag值为2时,在eth1上通过tcpdump抓包可以看到vlan2的dhcp报文如下:

在dhcp2上通过tcpdump抓包可以看到dhcp报文如下:

在dhcp1上通过tcpdump抓包可以看到dhcp报文如下

从上面的验证结果可以看出,两个桥接口dhcp1和dhcp2根据配置的tag只选择处理了对应vlan值的报文,完成了不同网段的VLAN隔离,从而实现了不同VLAN分配不同DHCP地址池的功能。

责任编辑:赵宁宁 来源: SDNLAB
相关推荐

2017-11-22 14:08:23

OVSVLAN虚拟化网

2009-02-13 10:34:00

共享网络DHCP设置

2014-11-06 09:36:50

OVSvlan

2010-09-26 10:20:54

配置dhcp rela用户地址表项

2010-09-26 10:16:17

dhcp relay配

2023-07-05 15:32:59

DHCP配置协议

2024-03-14 09:55:35

DHCP网络IP地址

2010-09-29 14:39:32

DHCP服务

2010-09-28 15:37:11

多VLAN DHCP服

2014-06-23 09:48:02

VLAN

2009-01-03 08:56:00

中继代理DHCPVLAN

2022-03-04 10:07:45

Go语言字节池

2009-02-06 09:50:00

DHCP地址分配

2010-08-30 16:37:48

DHCPIP地址

2010-09-28 15:10:12

DHCP服务固定IP地

2011-03-08 11:08:55

VLAN

2009-02-03 09:48:00

DHCPVlAN

2009-07-21 16:06:42

DHCPVlANIP技术

2014-06-06 09:01:07

DHCP

2010-09-25 16:26:32

DHCP保留特定IP地
点赞
收藏

51CTO技术栈公众号