|
|
|
|
移动端

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

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

作者:刘成天来源:SDNLAB|2017-12-21 03:46

【新品产上线啦】51CTO播客,随时随地,碎片化学习

前言

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地址池的功能。

【编辑推荐】

  1. LAN、WAN、WLAN、VLAN和VPN的区别
  2. 如何在Debian Linux上安装配置ISC DHCP Server?
  3. 虚拟化部署之linux网卡的VLAN配置
  4. 如何使用三层交换机构建企业VLAN
  5. 基于OVS的VLAN应用及实现
【责任编辑:赵宁宁 TEL:(010)68476606】


点赞 0
分享:
大家都在看
猜你喜欢

热门职位+更多

读 书 +更多

C语言核心技术

在这本书中,C 语言专家 Peter Prinz和Tony Crawford为你提供大量的编程参考信息。全书叙述清晰,语句简洁,分析深刻。本书主题包括: ...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊