ESC

開始輸入,可搜尋發票、服務、域名、工單,以及 更多...

搜尋... Ctrl+K
虛擬化與母雞

PVE 建立 KVM 虛擬機器並分配獨立公網 IP:上傳映象、橋接網路與開小雞配置教程

5 個步驟 8 分鐘閱讀 17 次閱讀 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 技術支援。

這篇文章有幫助嗎?

相關教程