ESC

开始输入,可搜索发票、服务、域名、工单,以及 更多...

搜索... Ctrl+K
虚拟化与母鸡

PVE 创建 KVM 虚拟机并分配独立公网 IP:上传镜像、桥接网络与开小鸡配置教程

5 个步骤 8 分钟阅读 3 次阅读 0
本文目录

在独立服务器上装好 Proxmox VE 之后,下一步就是在 PVE 中创建 KVM 虚拟机并分配独立公网 IP。本文以带 /24 IP 段的服务器为例,讲解如何上传 ISO 或云镜像、用命令行创建虚拟机、通过 vmbr0 桥接网络,以及在 Debian/Ubuntu、CentOS/Rocky/AlmaLinux 虚拟机内配置独立 IP 与网关,最后给出开小鸡出售时的实用建议。

示例 IP 段为 203.0.113.0/24,网关 203.0.113.1。请以 IMIDC 分配给您的 IP、子网掩码和网关为准。一般网络地址、网关和广播地址不可分配给虚拟机。若您的 IP 段是“路由到主 IP”的方式而不是同网段直连,请先提交工单确认网络方式。

步骤 1:上传 ISO 镜像或云镜像到 PVE

手动安装系统时,可在 Web 界面“local 存储 → ISO 镜像 → 上传/从 URL 下载”,也可以直接在宿主机用 wget 下载到 ISO 目录。批量开机更推荐云镜像(cloud image)配合 cloud-init,几十秒即可交付一台新 VM。

cd /var/lib/vz/template/iso
# replace the file name with the current release
wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.7.0-amd64-netinst.iso
# cloud image for template-based deployment
mkdir -p /var/lib/vz/images/cloud && cd /var/lib/vz/images/cloud
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2

步骤 2:在 PVE 中创建 KVM 虚拟机

下面用 qm 命令创建 VMID 为 101 的虚拟机:2 核 2GB 内存,网卡使用 virtio 并桥接到 vmbr0,同时开启网卡防火墙。随后导入云镜像作为系统盘,添加 cloud-init 驱动器和串口控制台,并把磁盘扩容 18GB。使用 ISO 安装时可以省略导入步骤,改为 --ide2 local:iso/文件名,media=cdrom。

qm create 101 --name vm101 --memory 2048 --cores 2 --cpu host \
  --net0 virtio,bridge=vmbr0,firewall=1 --scsihw virtio-scsi-pci --ostype l26
qm disk import 101 /var/lib/vz/images/cloud/debian-12-genericcloud-amd64.qcow2 local-lvm
qm set 101 --scsi0 local-lvm:vm-101-disk-0 --boot order=scsi0 \
  --ide2 local-lvm:cloudinit --serial0 socket --vga serial0 --agent enabled=1
qm resize 101 scsi0 +18G

步骤 3:通过 cloud-init 给虚拟机分配独立 IP 与网关

使用云镜像时,直接在 cloud-init 中写入独立 IP、网关、DNS 和 SSH 公钥,开机后系统会自动配置网络。qm terminal 可进入串口控制台观察启动过程(按 Ctrl+O 退出)。

qm set 101 --ipconfig0 ip=203.0.113.20/24,gw=203.0.113.1 \
  --nameserver 1.1.1.1 --ciuser root --sshkeys /root/.ssh/authorized_keys
qm start 101
qm terminal 101

步骤 4:在虚拟机系统内手动配置独立公网 IP

用 ISO 手动安装的系统需要在虚拟机内自行配置静态 IP。virtio 网卡在虚拟机里通常名为 ens18,请用 ip link 确认。根据系统选择对应写法。

# Debian / Ubuntu (ifupdown): /etc/network/interfaces
auto ens18
iface ens18 inet static
    address 203.0.113.21/24
    gateway 203.0.113.1
    dns-nameservers 1.1.1.1 8.8.8.8

systemctl restart networking
# Ubuntu (netplan): /etc/netplan/01-static.yaml
network:
  version: 2
  ethernets:
    ens18:
      addresses: [203.0.113.22/24]
      routes:
        - to: default
          via: 203.0.113.1
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]

netplan apply
# CentOS Stream / Rocky / AlmaLinux (NetworkManager)
nmcli con mod ens18 ipv4.method manual ipv4.addresses 203.0.113.23/24 \
  ipv4.gateway 203.0.113.1 ipv4.dns "1.1.1.1 8.8.8.8"
nmcli con up ens18

配置完成后检查地址、默认路由,并分别 ping 网关和外网:

ip -br addr
ip route
ping -c 4 203.0.113.1
ping -c 4 1.1.1.1

步骤 5:开小鸡出售前的安全与运营建议

如果要把虚拟机出租给客户,建议做好以下几点:

  • 防止盗用 IP:启用 PVE 防火墙的 ipfilter,只允许虚拟机使用分配给它的 IP,避免客户私自改 IP 造成冲突。
  • 合理超售:CPU 可适度超分,内存与磁盘尽量保守,NVMe 上的 I/O 要关注峰值。
  • 定期备份:使用 vzdump 或 Proxmox Backup Server 备份,并存放到另一台机器。
  • 反向解析与滥用处理:为每个 IP 设置 rDNS,及时处理投诉,避免整段 IP 被列入黑名单。
# /etc/pve/firewall/101.fw
[OPTIONS]
enable: 1
ipfilter: 1
policy_in: ACCEPT

[IPSET ipfilter-net0]
203.0.113.20
vzdump 101 --storage local --mode snapshot --compress zstd
请遵守 IMIDC 服务条款及当地法律,禁止客户利用虚拟机发送垃圾邮件或发起攻击,否则可能导致整段 IP 被封禁。

常见问题

PVE 虚拟机配置了独立 IP 却无法上网?

先确认 VM 网卡桥接在 vmbr0、宿主机本身能上网;再检查 IP 前缀和网关是否正确。如果机房绑定了 MAC,需要为该 IP 申请虚拟 MAC 并填到 VM 网卡上,可提交工单确认。

cloud-init 设置的 IP 没有生效?

修改 cloud-init 参数后需执行 qm cloudinit update 101 或重启虚拟机;同时确认镜像本身支持 cloud-init。

一个 /24 能开多少台小鸡?

/24 共 256 个地址,扣除网络地址、网关和广播地址后,通常可分配约 253 个,实际数量以分配说明为准。

如仍无法解决,可提交工单联系 IMIDC 7×24 技术支持。

这篇文章有帮助吗?

相关教程