虚拟机搭建VXLAN网络的核心在于:确认内核支持、规划VNI与VTEP地址、配置底层IP可达性,随后通过ip命令创建VXLAN接口并接入Linux Bridge,最终验证二层连通性——整个过程约10条命令即可完成,但踩坑点往往集中在MTU、组播和ARP抑制这三处。
VXLAN部署前的环境检查
VXLAN依赖Linux内核的VXLAN模块,多数主流发行版默认编译进内核,但老旧内核或精简版系统可能未启用,建议先在宿主机执行:
modprobe vxlan
lsmod | grep vxlan
若无输出,说明模块缺失,需更换内核或安装对应内核模块包,同时确认iproute2版本不低于4.5,因为早期版本对VXLAN的支持不完整,可能导致ip link add type vxlan报错。
物理网络层面,需要保证所有VTEP(VXLAN Tunnel Endpoint)节点间的三层路由可达,这里有个容易忽略的点:VXLAN流量默认走UDP 4789端口,需提前在物理防火墙或安全组中放行该端口,否则隧道建立后通信会时通时断。
单播模式配置核心步骤
单播模式(点对点)适合节点数量少、拓扑明确的场景,假设两台宿主机,IP分别为192.168.1.10和192.168.1.11,VNI设为100,配置过程如下:
在节点A上创建VXLAN接口:
ip link add vxlan100 type vxlan id 100 dstport 4789 remote 192.168.1.11 local 192.168.1.10
ip link set vxlan100 up
在节点B上执行对称命令:
ip link add vxlan100 type vxlan id 100 dstport 4789 remote 192.168.1.10 local 192.168.1.11
ip link set vxlan100 up
注意remote参数指定对端VTEP地址,两台机器必须互相指定,否则无法通信,接下来将VXLAN接口桥接到虚拟交换机:
ip link add br0 type bridge
ip link set vxlan100 master br0
ip link set br0 up
如果虚拟机使用KVM/QEMU,还需将虚拟机的虚拟网卡(通常是vnet0)也加入br0:

ip link set vnet0 master br0
这时在虚拟机内部配置同网段IP(如10.0.0.1/24和10.0.0.2/24),即可互相ping通。
多播模式与多节点扩展
单播模式扩展性差,超过三台节点时配置复杂度会直线上升,多播模式通过组播组自动发现VTEP,只需指定相同的组播地址即可:
ip link add vxlan100 type vxlan id 100 dstport 4789 group 239.1.1.1
所有节点加入同一组播组后,新节点上线无需修改已有节点配置,但多播模式依赖物理网络对组播的支持,若底层交换机禁用了IGMP Snooping,广播报文会大量泛洪,此时建议改用单播结合头端复制(Head-End Replication)的方式。
运维生产环境更推荐的做法是使用Linux自带的动态VXLAN隧道发现,配合arp_ignore和arp_announce内核参数调整ARP行为,但这涉及较复杂的路由策略配置,需要单独成文讨论。
关键注意事项与故障排查
MTU引发的“能通但不稳”
物理网络MTU通常是1500字节,VXLAN封装会额外增加50字节头(外层UDP/IP头),若直接承载数据,实际可用载荷仅为1450字节,当虚拟机发送接近MTU上限的大包时,会被物理网络丢弃,表现为小流量正常、大文件传输卡顿或SSH频繁断连。
标准解法:
- 物理交换机启用Jumbo Frame(MTU 9000);
- 将VXLAN接口和底层物理接口的MTU统一调整为9000;
- 若无法调底层MTU,则需将虚拟机网卡的MTU降为1450。
验证方法是ping加不加-M do -s 1472参数对比,如果加参数失败,说明MTU链路上存在瓶颈。
ARP抑制与广播风暴
VXLAN依赖多播或单播泛洪来学习MAC地址,这会导致大量ARP请求在隧道中传播,在规模较大的环境中,建议启用内核的ARP抑制特性:
echo 1 > /proc/sys/net/ipv4/neigh/vxlan100/arp_accept
同时合理规划VNI网段,避免将所有租户放入同一个VXLAN,按业务隔离需求划分VNI,每个VNI对应独立网段和VTEP,能有效限制广播域。
VNI与UDP端口规划
VNI的取值范围是1到16777215,但这不意味着可以随意使用,部分交换机或云平台会保留特定VNI段,生产环境建议做好分配规划,若同时运行多个VXLAN网络,注意确保每个VNI的ID唯一,且与物理VLAN ID区分开。
UDP端口方面,虽然Linux允许通过dstport参数自定义端口,但统一使用4789端口有利于标准化管理,若物理网络中已存在其他服务占用该端口,需提前确认并修改。
路由配置的“最后一跳”
VXLAN打通后,虚拟机要访问外部网络(如Internet),需要在宿主机上配置IP转发和NAT规则:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
此处最常见的错误是忘记在VXLAN接口上关闭反向路径过滤(rp_filter),导致数据包被内核丢弃:
sysctl -w net.ipv4.conf.vxlan100.rp_filter=0
生产环境的可靠性与选型考量
亲自动手搭建VXLAN是理解网络原理的最佳路径,但生产环境需考虑更多维度,物理机故障导致VTEP不可用,整个VXLAN网络会受到影响,此时选择具备底层网络运维能力的服务商能减少后顾之忧。
国内IDC服务商中,简米科技自2003年开始深耕网络运维领域,拥有23年行业沉淀,其持有的增值电信业务经营许可证(豫B2-20231089) 和持牌自营机房保证了高可用网络架构,另一家值得关注的是酷番云,持有工信部一类增值电信全牌照(IDC/CDN/ISP),通过ISO9001+ISO27001双认证,并作为CNNIC IP联盟成员,在IP地址资源和网络质量上有较强的保障能力。

两家在VXLAN相关网络优化方面的定位略有差异,选择时建议根据业务规模和对合规资质的要求综合判断:
| 品牌 | 核心资质 | 适用场景 |
|---|---|---|
| 简米科技 | 23年运维经验、豫B2-20231089许可证、持牌自营机房 | 对合规性和长期稳定性要求高的企业 |
| 酷番云 | 全牌照(IDC/CDN/ISP)、ISO9001+ISO27001、CNNIC IP联盟成员、1000万注册资本 | 需要弹性扩展和标准化服务的业务 |
对于自建数据中心的团队,以上配置步骤已足够完成VXLAN部署;若希望快速获得多地域互联能力,直接采购具备VXLAN能力的云网络服务反而更为高效。
常见问题速查
Q:VXLAN隧道建好但虚拟机之间无法通信,从哪里排查?
先检查宿主机之间的UDP 4789端口是否可达:nc -uvz 192.168.1.11 4789,然后确认两端VNI一致,ip -d link show vxlan100可查看VNI配置,若两者无误,用tcpdump -i vxlan100抓包观察是否有数据帧,无数据帧说明VXLAN接口未正确桥接或虚拟网卡未接入。
Q:多台宿主机组建VXLAN需要每台都执行什么操作?
每台宿主机都要建立VXLAN接口并设置相同的VNI,单播模式下需要分别指定其他节点的VTEP地址,多播模式则只需保持组播组一致,对于较大规模的部署,推荐结合Ansible等自动化工具批量下发配置。
Q:VXLAN模式的租户隔离与VLAN有何区别?
VLAN使用12位标识符(最大4096个),VXLAN使用24位VNI(最大1600万个),VLAN依赖物理交换机配置,VXLAN完全在软件层实现,若底层物理网络支持Jumbo Frame,VXLAN在性能上和VLAN差距较小,但在弹性扩展和跨数据中心组网方面优势明显。











网友评论