vxlan是一种网络虚拟化技术,通过在udp/ip上封装二层以太网帧实现大规模逻辑网络扩展。其核心优势在于使用24位vni标识符,支持最多16,777,216个独立网络,适用于多租户、云平台等场景。手动创建vxlan接口的步骤包括:使用ip link add命令定义vxlan接口并指定vni、物理网卡和远端ip;配置ip地址并启用接口;若需通信扩展,可将vxlan接口加入linux bridge。注意事项包括:调整mtu避免分片;确保udp 4789端口开放;根据节点数量选择多播或单播模式;并通过gro/gso优化性能。

配置Linux网络VXLAN隧道,是实现跨物理网络的虚拟化网络扩展的一种常见方式。它通过在UDP/IP之上封装二层以太网帧,实现逻辑上的“大二层”网络连接。下面是一些实用的操作步骤和建议。

什么是VXLAN?为什么需要它?
VXLAN(Virtual eXtensible Local Area Network)是一种网络虚拟化技术,主要用于在大规模数据中心中扩展二层网络。传统的VLAN最多支持4094个网络标识,而VXLAN使用24位的VXLAN标识符(VNI),可以支持16,777,216个独立的逻辑网络。
它的核心原理是:把一个三层网络当作传输骨干,在其上构建出多个隔离的二层网络。适用于多租户、云平台、容器网络等场景。

如何手动创建VXLAN接口?
在Linux系统中,可以通过iproute2工具集来手动配置VXLAN接口。以下是一个基本的配置流程:
- 使用
ip link add命令创建VXLAN接口 - 绑定到本地物理网卡并设置远程目标地址
- 配置IP地址并启用接口
示例命令如下:

ip link add vxlan0 type vxlan id 10 dev eth0 remote 192.168.1.100 dstport 4789 ip addr add 10.0.0.1/24 dev vxlan0 ip link set vxlan0 up
上面的例子中:
-
id 10是VNI编号,两个节点必须一致 -
dev eth0表示从eth0发送数据 -
remote 192.168.1.100是对端的IP地址 -
dstport 4789是VXLAN的标准UDP端口
注意:如果使用多播模式,则不需要指定remote地址。
VXLAN与桥接结合使用更常见
实际部署中,VXLAN接口通常会和Linux Bridge或MACVLAN一起使用,以实现虚拟机或容器之间的互通。
比如,将VXLAN接口加入到一个桥设备中,让虚拟机或Docker容器共享这个桥的网络环境:
brctl addbr br0 ip link set vxlan0 master br0 ip link set br0 up
这样做的好处是:
- 虚拟机或容器可以直接获得VXLAN提供的逻辑网络IP
- 不用额外做NAT或路由,简化通信结构
如果你使用KVM或者LXC/LXD,这种桥接方式是非常推荐的。
常见问题与注意事项
VXLAN虽然功能强大,但也有几个容易忽略的地方需要注意:
- MTU设置:因为VXLAN增加了UDP/IP封装,所以建议适当调高接口的MTU值,避免分片影响性能。例如设置为1500+50=1550。
- 防火墙规则:确保UDP 4789端口在两端服务器之间是开放的。
- 多播与单播选择:如果节点数量较多,建议使用多播模式;否则单播点对点更简单清晰。
-
性能优化:开启GRO/GSO等特性可提升性能,可通过
ethtool进行相关设置。
基本上就这些。VXLAN配置不复杂,但细节容易忽略,尤其是网络环境比较复杂时,建议先在测试环境中验证后再上线。










