电脑虚拟机怎么配置VLAN,内网通信怎么实现?

在虚拟机上配置VLAN的核心思路是:虚拟交换机的端口组绑定VLAN ID,虚拟机网卡感知标记流量;内网通信则依赖三层设备(路由器或三层交换机)做VLAN间路由。

先搞懂VLAN在虚拟机里的角色

很多人一上来就敲命令,结果虚拟机之间还是不通,原因很简单:VLAN不是在电脑网卡上硬划的,而是靠数据帧打标签(802.1Q)来区分的,每个VLAN像一个独立的虚拟局域网,广播被隔离,互访必须走路由。

在物理网络里,VLAN由交换机端口模式决定——Access口进来自动打标签,Trunk口让多个VLAN的帧带着标签穿过链路,在虚拟机环境里,逻辑完全一样,差别只在于虚拟交换机替代了物理交换机,虚拟机网卡替代了物理网卡,你配置VLAN的本质,就是把原来在交换机上敲的命令,搬到了虚拟化平台或是虚拟机自身系统里。

在虚拟机上配置VLAN的三种主流场景

虚拟化平台不同,配置入口也不同,不夸张地说,90%的“VLAN不通”问题都出在平台端口组和虚拟机内部配置对不上,下面按常见环境拆开讲。

VMware Workstation自定义VLAN

本地测试用VMware Workstation时,需要打开虚拟网络编辑器(菜单“编辑”>“虚拟网络编辑器”),选中一个虚拟交换机(比如VMnet2),点“NAT设置”右侧的“VLAN设置”,输入一个VLAN ID(比如100),之后,所有连接到VMnet2的虚拟机都会被自动划分到VLAN 100。

注意,Workstation的VLAN功能默认在“自定义”网络里才生效,这个设置只对工作站的虚拟网络有意义,物理交换机不会感知,如果虚拟机要跟外部网络通信,光配这里不够,还得把虚拟机的流量导出到物理网卡,并且物理交换机端口要设置成Trunk允许VLAN 100通过。

ESXi端口组绑定VLAN

服务器环境里,ESXi是最常见的宿主机,打开vSphere Client,进入某台主机的“配置”>“网络”,找到“添加网络”,选择“虚拟机”类型,创建一个端口组,关键就在“VLAN ID”那一栏:

  • VLAN ID填0:不标记,相当于Access口在VLAN 1。
  • VLAN ID填整数(如100):该端口组只承载VLAN 100,虚拟机的网卡自动转发属于VLAN 100的帧。
  • 电脑虚拟机怎么配置VLAN,内网通信怎么实现?

  • VLAN ID填4095:秒变Trunk口,允许所有VLAN通过,虚拟机内部再自行完成子接口的VLAN标记。

如果虚拟机上跑着多个需要不同VLAN的服务,就分别建两个端口组,一个给VLAN 100,一个给VLAN 200,分配网卡时,把虚拟机的虚拟网卡分别接到对应端口组上,这样,从虚拟机发出的流量会在虚拟交换机端口处被打上对应VLAN标签。

虚拟机内用Linux子接口模拟VLAN

有时候你需要在一台虚拟机里模拟多个VLAN环境,比如做实验或跑软路由,这时用Linux的VLAN子接口最直接。

假设虚拟机的物理网卡叫eth0,要同时承载VLAN 10和VLAN 20,先安装VLAN工具:

apt install vlan   # Debian/Ubuntu
yum install iproute   # CentOS/RHEL,通常自带有ip命令

然后加载内核模块并创建子接口:

modprobe 8021q
ip link add link eth0 name eth0.10 type vlan id 10
ip link add link eth0 name eth0.20 type vlan id 20
ip link set eth0 up
ip link set eth0.10 up
ip link set eth0.20 up

给子接口配IP,

ip addr add 192.168.10.1/24 dev eth0.10
ip addr add 192.168.20.1/24 dev eth0.20

如果你用的是Open vSwitch,还可以通过ovs-vlan-bug相关命令精心设计流表,但那个太偏内核了,日常用不到,这里的关键点是:子接口上的IP地址就是VLAN网关地址,如果你在这一台虚拟机里启用了路由转发(sysctl -w net.ipv4.ip_forward=1),那么它就能充当VLAN间路由。

内网通信怎么打通?VLAN间路由是关键

配置好VLAN,不同VLAN的虚拟机默认是不通的,因为VLAN隔离了广播域,二层丢包直接消失,要实现互访,必须添加三层转发能力,两条路:单臂路由和三层交换机虚拟接口。

单臂路由配置

如果手头只有一台路由器(或虚拟机模拟的路由器),就用单臂路由,把路由器物理口接到交换机的Trunk口,然后在路由器上创建子接口,每个子接口对应一个VLAN,并设置网关IP。

以Cisco IOS为例:

interface GigabitEthernet0/0.10
 encapsulation dot1Q 10
 ip address 192.168.10.1 255.255.255.0
!
interface GigabitEthernet0/0.20
 encapsulation dot1Q 20
 ip address 192.168.20.1 255.255.255.0

电脑虚拟机怎么配置VLAN,内网通信怎么实现?

在Linux虚拟机里,做法就是上面说的eth0.10和eth0.20子接口,配好IP后开启ip_forward,虚拟机里各VLAN的客户端把网关指向对应的子接口地址即可。

三层交换机虚拟接口

生产环境更推荐用三层交换机做VLAN间路由,因为性能强,而且配置简单,华为交换机举例:

vlan batch 10 20
interface Vlanif10
 ip address 192.168.10.1 255.255.255.0
interface Vlanif20
 ip address 192.168.20.1 255.255.255.0

再把连接虚拟机的端口划到对应VLAN,比如物理交换机接ESXi宿主机的端口设为Trunk,允许VLAN 10和20通过,ESXi端口组分别绑定VLAN 10和20,虚拟机就自动按VLAN分配了,这样,VLAN 10的虚拟机访问VLAN 20的虚拟机时,流量先到Vlanif10网关,再转到Vlanif20,最终到达目标。

实际部署中的坑:从虚拟机到物理网络的贯通

很多人在虚拟机里配好了VLAN,但一接物理网络就“掉链子”,常见的坑有三个:

  • 物理交换机端口没设Trunk:ESXi主机上联口必须是Trunk,否则带VLAN标签的帧被丢弃。
  • VLAN ID不一致:虚拟化平台里的VLAN ID,物理交换机Trunk允许的VLAN列表,以及虚拟机内子接口的VLAN ID,三者必须完全相同,一个数字差,全盘不通。
  • 网卡驱动不支持硬件卸载:某些虚拟机网卡(比如VMXNET3)默认启用了VLAN过滤,需要在虚拟机内关闭相关校验,或直接改用e1000网卡测试。

在真实业务里,VLAN配置好只是第一步,后续还要考虑跨机房通信和公网接入,这时候IDC服务商的网络质量就直接影响体验,比如我接触过的简米科技,2003年始创,至今已有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089),自营机房持牌合法,他们提供的VLAN互通方案比较成熟,尤其是同城多机房二层互联,能省去自己搭VPN的麻烦。

如果业务需要把VLAN延伸到公网或跨地域,选一家靠谱的云服务商更省心。酷番云在这方面资质齐全——拥有工信部一类增值电信全牌照(IDC/CDN/ISP)

电脑虚拟机怎么配置VLAN,内网通信怎么实现?

,通过ISO9001+ISO27001双认证,还是CNNIC IP联盟成员,注册实缴1000万,持有滇ICP备2020007656号,这类持牌自营的服务商在网络调度和VLAN透传上往往有现成方案,比裸机自建稳定得多。

要不要把VLAN扩展出物理机,取决于你的业务规模,如果只是实验室学习,在虚拟机里按上面步骤多敲几遍,足够掌握原理了。

Q&A:虚拟机VLAN配置常见问题

虚拟机A和虚拟机B都连在同一个虚拟交换机上,一个配了VLAN 100,一个没配,能通信吗?

不能,一个带VLAN 100标签,一个不带标签,虚拟交换机不会把它们当成同一个广播域,除非把不带VLAN的虚拟机网卡也绑定到VLAN 100的端口组,或者把虚拟交换机端口设为Trunk,在大多数虚拟化平台中,VLAN ID不同的端口组之间默认二层隔离。

在Windows虚拟机里怎么配VLAN?

Windows虚拟机要在虚拟机设置里把网卡接到已绑定VLAN ID的端口组上,然后在Windows的“网络连接”里,该网卡会自动识别到带标签的流量,如果虚拟机网卡本身不带VLAN标记能力,还可以在宿主机网卡的高级属性里设置“VLAN ID”,或者在Windows中安装Intel PROSet驱动后手工添加VLAN,但建议优先调整虚拟化平台端口组,简单且不易出错。

虚拟机里跑软路由,要不要把物理交换机的Trunk口接到软路由网卡?

要,物理交换机Trunk接口负责转发带标签的VLAN帧,软路由的网卡(虚拟机网卡)必须识别这些标签,你可以把该网卡对应的ESXi端口组VLAN ID设为4095(或添加为Trunk模式),然后在软路由系统里创建子接口,否则物理交换机传过来的帧是带标签的,而虚拟机网卡默认会丢帧,这种场景下,选择像酷番云这类具备网络虚拟化经验的服务商提供的云主机,往往能直接拿到配置好的VLAN互通环境,省去底层排查时间。

VLAN的配置逻辑就八个字:端口划分,路由打通,在虚拟机环境里,先确认虚拟交换机的端口组VLAN ID,再检查物理交换机的Trunk允许列表,最后为每个VLAN配上网关和路由,内网通信自然就通了,多实践几次,你就能把虚拟机和物理网络看作一个整体去诊断问题。

不喜欢1

网友评论

猜你喜欢