咱们搭企业私有云的时候,最容易忽略的就是虚拟网络这块,好多人上来就装系统开虚拟机,结果后面发现虚拟机连不上公司内网,或者不同项目的机器互串,麻烦得不行。今天咱们就盯着Proxmox VE这款常用的私有云工具,聊聊怎么规划虚拟网络,选对桥接策略,把这个坑给填上。

一、为什么企业私有云的虚拟网络不能随便搭?

先给大家说几个实际碰到的坑:之前帮一家做软件的公司搭私有云,一开始选了默认的NAT模式,结果开发的虚拟机要查外网资料没问题,但公司内网的其他机器想连虚拟机,得在Proxmox宿主机上一条条加端口转发,而且虚拟机的IP是内部私有段,外部根本摸不到,后来有次宿主机重启,端口转发全失效,开发连自己的服务器都找不到,折腾了一晚上才搞定。

企业私有云的虚拟网络,核心需求其实就三个:第一,虚拟机得能和公司内网、甚至外网顺畅通信;第二,不同项目组的虚拟机要能隔离,不能互相干扰,比如开发的机器别乱改测试环境的配置;第三,如果用了多台物理服务器搭集群,跨服务器的虚拟机要能互通,不能分成两个孤立的小圈子。

二、Proxmox VE里的核心:虚拟网络桥接怎么选?

Proxmox里的虚拟网络,本质就是把宿主机的物理网卡和虚拟网卡连在一起,形成一个“桥”,就像现实里的交换机,虚拟机插在这个桥上面,就能和其他机器通信。不同的桥接模式,对应不同的场景,咱们一个个说。

2.1 最常用的:物理桥接(给虚拟机直接占局域网IP)

这个是我觉得最适合生产环境的模式,简单来说就是让虚拟机像物理机一样,直接在公司的局域网里有个独立IP,不管是ssh远程、桌面连接还是端口访问,都不用转来转去,和用物理电脑一模一样。 我给的示例都是实际可直接用的,改个网卡名就能跑,先看配置: 技术栈:Proxmox VE 宿主机网络配置(物理桥模式)

# 第一步,进入Proxmox宿主机的网络配置目录,所有配置都在/etc/network/interfaces里
cd /etc/network
# 改配置前一定要备份!不然改坏了宿主机连不上,哭都来不及,备份加当天日期方便以后回滚
cp interfaces interfaces.bak.$(date +%Y%m%d)
# 用cat命令把新的桥接配置追加到原文件末尾,这里的vmbr0是桥的名字,ens18是宿主机的物理网卡名,记得换成你自己的,用ip a命令查一下就能看到
cat >> interfaces << EOF
auto vmbr0
iface vmbr0 inet static
    address 192.168.1.10  # 这个IP是给桥用的,是你公司局域网里的空闲IP,别和其他机器撞了
    netmask 255.255.255.0  # 子网掩码,一般都是这个
    gateway 192.168.1.1  # 公司局域网的网关,一般是路由器的IP,也可以用ip route查
    bridge_ports ens18  # 绑定宿主机的物理网卡,这一步是关键,相当于把物理网卡插到桥交换机上
    bridge_stp off  # 关闭生成树协议,小型网络没环路,关了能减少延迟
    bridge_fd 0  # 转发延迟设为0,虚拟机连外网反应更快
EOF
# 最后重启网络服务让配置生效,就可以用虚拟机连这个桥了
systemctl restart networking

这个模式的优缺点:优点是配置简单,虚拟机通信快,直接在局域网有IP,适合生产环境对外提供服务;缺点是需要占公司局域网的IP,要是公司IP不够用,或者不想随便加IP,就换其他模式。

2.2 隔离用的:多虚拟桥(给项目组做网络隔离)

如果公司有开发、测试、运维三个团队,每个团队的机器不能互相访问,比如开发改东西别碰测试环境,这时候就得给每个团队单独弄一个虚拟桥,不用绑定物理网卡,纯虚拟隔离。 示例配置: 技术栈:Proxmox VE 多虚拟桥隔离配置

# 还是用刚才的interfaces文件,追加开发团队的虚拟桥配置
echo "auto vmbr1
iface vmbr1 inet static
    address 10.0.0.1/24  # 给这个桥单独开一个私网段,不会和局域网IP冲突,也不用占公网IP
    bridge_ports none  # 不绑定物理网卡,纯虚拟隔离桥
    bridge_stp off
    bridge_fd 0" >> /etc/network/interfaces
# 再追加测试团队的桥,注意IP段别和开发的重复
echo "auto vmbr2
iface vmbr2 inet static
    address 10.0.1.1/24
    bridge_ports none
    bridge_stp off
    bridge_fd 0" >> /etc/network/interfaces
# 重启网络生效
systemctl restart networking

这个模式的优缺点:优点是项目之间完全隔离,不会互相干扰,特别适合多团队协作的企业;缺点是虚拟机要访问外网的话,得在桥上面加SNAT转发,比物理桥麻烦一点,而且通信速度稍微差点。

2.3 跨节点用的:VXLAN桥接(多物理服务器集群互通)

要是公司用了两台以上的Proxmox物理服务器搭集群,虚拟机有时候要在不同服务器之间移动,这时候就得用VXLAN隧道把多个虚拟桥连起来,让跨服务器的虚拟机在同一个网里。 示例配置: 技术栈:Proxmox VE 跨节点集群网络配置(VXLAN桥)

# 先在节点A(IP是192.168.1.20)上配置,节点B的IP是192.168.1.21,同一网段里的两个物理节点
# 先安装Open vSwitch工具,用来做VXLAN隧道
apt update && apt install openvswitch-switch -y
# 再修改interfaces文件,添加虚拟桥和VXLAN隧道
cat >> /etc/network/interfaces << EOF
auto vmbr0
iface vmbr0 inet static
    address 192.168.1.20
    netmask 255.255.255.0
    gateway 192.168.1.1
    bridge_ports ens18
    bridge_stp off
    bridge_fd 0
# 新增Open vSwitch虚拟桥,用来连隧道
auto ovsbr0
iface ovsbr0 inet static
    address 10.0.2.1/24  # 跨节点虚拟机的私网段
    ovs_type OVSBridge
    ovs_ports vxlan100
# 添加VXLAN隧道,隧道ID是100,节点B要和这里用同一个ID
auto vxlan100
iface vxlan100 inet manual
    ovs_type OVSIntPort
    ovs_bridge ovsbr0
    ovs_options type=vxlan options:remote_ip=192.168.1.21 options:id=100
EOF
# 重启网络和Open vSwitch服务生效
systemctl restart networking
systemctl restart openvswitch-switch

这个模式的应用场景就是多物理服务器的集群私有云,虚拟机跨节点通信和在单节点一样,不会断网,适合企业级的集群部署。

三、实际操作中的避坑指南

讲完配置,再给大家说几个实际踩过的坑,一定要注意: 第一,备份!改网络配置前必须备份,Proxmox宿主机改坏网络,重启后连不上的话,只能去机房拔网线或用IPMI,特别麻烦,刚才的示例里也说了,备份的时候加日期,以后想改回去直接换备份文件就行。 第二,物理网卡名别瞎写!很多新手用的是新的Proxmox,网卡名不是以前的eth0,而是ens18或者enp0s3,一定要用ip a命令查一下宿主机的网卡,找到带MAC地址的那个,别写错,不然桥接不上外网。 第三,IP段别冲突!多个虚拟桥的IP段一定要不一样,比如vmbr1是10.0.0.0/24,vmbr2就别用10.0.0.0/24,不然虚拟机IP冲突会连不上网。 第四,别乱关SSH会话!改网络配置重启之前,最好在宿主机的控制台操作,或者开两个SSH会话,一个改配置,一个随时看状态,要是重启后SSH断了,连不上就麻烦了,别跟我之前那样,重启后去机房拔U盘开机器。 第五,STP参数看情况!如果你的私有云是内部网络,没有环路,STP可以关,减少延迟,要是怕有环路,就把bridge_stp on,但是一般企业私有云里不会有环路,关了就行。

四、总结

搭企业私有云的虚拟网络,其实核心就是“按需选桥”:如果是生产环境,虚拟机要直接对外,选物理桥接;如果是多团队协作,要隔离项目,选多虚拟桥;如果是多节点集群,要跨服务器通信,选VXLAN桥接。只要把桥接策略选对,配置的时候小心一点,避过刚才说的坑,就能搭建稳定、好用的企业私有云,不会再出现虚拟机连不上、互串的问题,省好多后续的麻烦。