电脑工场
白蓝主题五 · 清爽阅读
首页  > 电脑基础

网络虚拟化平台怎么做到各用各的、互不干扰?

你有没有遇到过这种情况:公司里开发、测试、运维三拨人,共用一套网络设备,结果开发改个配置,测试环境直接连不上;或者学生机房里,一个同学误操作把网关删了,整层楼都断网。这时候,大家就会想到——要是能像分房间一样,把网络也隔开就好了。

隔离不是靠物理墙,而是靠“逻辑墙”

真实世界里,隔离靠砖墙;网络虚拟里,隔离靠的是逻辑划分。比如一台物理服务器上跑着 10 个虚拟机,它们共享同一块网卡、同一个交换机端口,但彼此之间却不能随便访问对方的 IP 或端口——这就是隔离在起作用。

常见隔离手段,其实就这几招

1. VLAN(虚拟局域网)
最基础也最常用。就像给同一条走廊装上不同颜色的门牌:VLAN 10 的机器只能和 VLAN 10 的机器说话,VLAN 20 的自动被“听不见”。交换机收到数据包后,一看 VLAN ID 不对,直接丢掉,连转发都不干。

2. 网络命名空间(Network Namespace)
Linux 里原生支持,Docker、Kubernetes 底层就靠它。每个命名空间有自己独立的网卡、路由表、iptables 规则。你可以这样手动创建一个干净的网络环境:

ip netns add blue
ip netns exec blue ip link set lo up
ip netns exec blue ip addr add 192.168.100.1/24 dev lo

运行完,blue 这个空间就跟主机网络完全断开,连 ping 127.0.0.1 都得进它里面才能通。

3. 虚拟交换机 + 端口组策略
VMware vSphere 或华为 FusionCompute 里,你建一个分布式交换机,再划出几个端口组,每个组配不同的 VLAN、MAC 地址学习开关、广播抑制阈值。A 组的虚拟机插进“财务部”端口组,B 组插进“研发部”端口组——底层物理链路没变,但逻辑上已经各走各道。

光分开了还不够,还得防“越界”

隔离不是一劳永逸。有人会尝试用 ARP 欺骗跨 VLAN 扫描,或在容器里直接调用宿主机网络(host network 模式),等于拆了自家门锁。所以实际部署中,常配合以下加固动作:

  • 关闭虚拟交换机上的混杂模式(Promiscuous Mode)
  • 启用端口安全(Port Security),限制每端口只学一个 MAC
  • 容器平台默认禁用 --network=host,强制走 CNI 插件

某次我们帮一家小电商做测试环境隔离,原本所有服务堆在一台 ESXi 上,促销压测时 Redis 崩了,导致订单系统和客服系统全卡住。后来按业务线切了三个 VLAN,又给每个 Kubernetes 命名空间加了 NetworkPolicy,规定“只有订单服务能访问 Redis”,问题当场解决——不是性能变强了,是干扰被剪掉了。

说白了,网络虚拟化里的隔离,不是要把网线一根根剪断,而是让数据知道:“你该去哪,不该去哪”。规则写清楚,设备守得住,人就省心了。