OVHcloud Proxmox VE虛擬機網絡配置

記錄下在OVH的獨立服務器上為Proxmox VE虛擬機配置IPv4、IPv6的過程。

實際上我之前也寫過類似的幾篇文章,但由於OVH的基礎設施(網絡)有很多變化,之前的配置可能過時了,遂寫一篇文章記錄下目前可用的配置方案。

配置IPv4,我們需要在OVH管理界面購買附加IPv4(OVH以前稱之為故障轉移IP),可以選擇購買單個或者整段,這裡我為了演示就購買了單個IPv4:

OVHcloud Proxmox VE虛擬機網絡配置
OVHcloud Proxmox VE虛擬機網絡配置

[重要]為剛購買的附加IPv4生成虛擬MAC地址:https://ca.ovh.com/manager/#/dedicated/ip,我這個賬號是CA區的,不同區域可能網址不一樣。這個需要等待幾分鐘才能生成好:

OVHcloud Proxmox VE虛擬機網絡配置

在OVH管理界面找到這台服務器的IPv4網關地址,所有的附加IPv4地址都使用這一個網關地址:

OVHcloud Proxmox VE虛擬機網絡配置

做好上述所說的準備工作後,接下來我詳細說一下後續配置可能會遇到的坑以及解決辦法。

由於OVH的IPv4網關地址與附加IPv4地址不在同一子網,在這種情況下某些基於Debian的Linux發行版需要使用onlink標誌才能添加默認路由。

又因為舊版本的cloud-init在這方面存在一些問題,它不為後端的網絡管理程序提供onlink標誌,這就導致很多Linux系統無法添加默認路由,比如我最常用的Debian12就是如此。

一個典型的例子:假設虛擬機系統是Debian12,當你在PVE的管理界面使用cloud-init配置虛擬機網絡時,填寫好IPv4和網關地址後,虛擬機啟動後沒有默認路由。

好在這個問題已經在最近的版本中修復了,更多詳細信息見:

https://github.com/canonical/cloud-init/pull/4996
https://github.com/canonical/cloud-init/pull/5654
https://github.com/canonical/cloud-init/issues/5523

但Debian12 cloud image裏面的cloud-init還是舊版本,並沒有應用上述的更新,我想到幾個解決辦法,但我只實踐了其中兩個。

1、使用PVE qm工具的cicustom功能自定義cloud-init的網絡配置。

2、使用libguestfs這類工具在Debian12 cloud image裏面安裝新版本cloud-init。(未實踐)

3、這個解決辦法最簡單,直接用Debian13,13現在是testing,裏面的cloud-init是最新版,不存在上述問題。

4、自己從頭開始製作Debian image(未實踐,個人覺得太麻煩)

下面把第一種和第三種解決辦法詳細說明一下。首先我們分別創建Debian12、Debian13的系統模板。

下載Debian12 cloud image:

mkdir /root/template && cd /root/template
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2

創建虛擬機:

qm create 50000 
--name debian12-template-source 
--cpu host 
--cores 1 
--memory 1024 
--machine q35 
--bios ovmf 
--efidisk0 local-zfs:0,format=raw,efitype=4m,pre-enrolled-keys=1,size=528K 
--net0 virtio,bridge=vmbr0 
--scsihw virtio-scsi-single 
--agent enabled=1,freeze-fs-on-backup=1,fstrim_cloned_disks=1 
--serial0 socket

導入Debian12 cloud image:

qm set 50000 --scsi0 local-zfs:0,import-from=/root/template/debian-12-generic-amd64.qcow2,cache=writeback,iothread=1,discard=on,format=raw

配置虛擬機:

qm set 50000 --ide0 local-zfs:cloudinit // 創建cloudinit設備
qm set 50000 --ciuser=root --cipassword="rootpassword" // 設置系統root密碼
qm set 50000 --boot order=scsi0 // 修改系統引導順序

轉換成模板:

qm template 50000

下載Debian13 cloud image:

cd /root/template
https://cdimage.debian.org/images/cloud/trixie/daily/latest/debian-13-generic-amd64-daily.qcow2

創建虛擬機:

qm create 60000 
--name debian13-template-source 
--cpu host 
--cores 1 
--memory 1024 
--machine q35 
--bios ovmf 
--efidisk0 local-zfs:0,format=raw,efitype=4m,pre-enrolled-keys=1,size=528K 
--net0 virtio,bridge=vmbr0 
--scsihw virtio-scsi-single 
--agent enabled=1,freeze-fs-on-backup=1,fstrim_cloned_disks=1 
--serial0 socket

導入Debian13 cloud image:

qm set 60000 --scsi0 local-zfs:0,import-from=/root/template/debian-13-generic-amd64-daily.qcow2,cache=writeback,iothread=1,discard=on,format=raw

配置虛擬機:

qm set 60000 --ide0 local-zfs:cloudinit // 創建cloudinit設備
qm set 60000 --ciuser=root --cipassword="rootpassword" // 設置系統root密碼
qm set 60000 --boot order=scsi0 // 修改系統引導順序

轉換成模板:

qm template 60000

在PVE管理界面克隆一台Debian12系統的虛擬機,假設克隆的這台虛擬機的ID是100:

OVHcloud Proxmox VE虛擬機網絡配置

等待克隆完成後,你可以根據自身需求在這裡調整虛擬機的CPU、內存、硬盤大小:

OVHcloud Proxmox VE虛擬機網絡配置

對於Debian12而言,雖然後續自定義的cloud-init網絡配置會覆蓋掉PVE管理界面的設置,但還是需要先在PVE管理界面為虛擬機的網絡設備指定OVH的虛擬MAC地址:

OVHcloud Proxmox VE虛擬機網絡配置

現在就可以來自定義cloud-init的網絡配置了。在PVE管理界面找到「數據中心」->「存儲」-「local」點擊編輯:

OVHcloud Proxmox VE虛擬機網絡配置

內容選中「片段」:

OVHcloud Proxmox VE虛擬機網絡配置

接着在PVE主機的如下目錄新建一個yaml配置文件:

nano /var/lib/vz/snippets/vm100-network.yaml

寫入如下配置:

network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - "142.xx.157.29/32" // OVH附加IPv4地址
      match:
        macaddress: 02:00:00:1c:0e:9a // OVH附加IPv4地址的虛擬MAC地址
      routes:
        - to: default
          via: 158.xx.55.254 // OVH網關IPv4地址
          on-link: true
      nameservers:
        addresses:
          - 8.8.8.8
          - 1.1.1.1
      set-name: eth0

設置ID為100的虛擬機使用剛才創建的自定義網絡配置:

qm set 100 --cicustom "network=local:snippets/vm100-network.yaml"

啟動虛擬機進行測試:

OVHcloud Proxmox VE虛擬機網絡配置

對於Debian13而言就非常簡單了,還是和之前一樣克隆一台虛擬機,與Debian12的配置基本相同:

OVHcloud Proxmox VE虛擬機網絡配置

填寫之前在OVH管理界面生成的虛擬MAC地址:

OVHcloud Proxmox VE虛擬機網絡配置

然後直接在PVE管理界面配置虛擬機的IPv4地址與網關地址:

OVHcloud Proxmox VE虛擬機網絡配置

不需要關心IPv4網關地址與附加IPv4地址在不在同一子網,直接往上填就行了:

OVHcloud Proxmox VE虛擬機網絡配置

啟動虛擬機進行測試:

OVHcloud Proxmox VE虛擬機網絡配置

至此有關IPv4的配置就全部完成了。接下來配置IPv6。

我發現OVH現在的獨立服務器應該都給了/56,並且不再需要使用NDPPD。配置起來也是方便了不少。

對於PVE主機而言,直接使用OVH管理面板上提供的IPv6地址與IPv6網關地址即可:

OVHcloud Proxmox VE虛擬機網絡配置

編輯PVE主機的網絡配置文件:

nano /etc/network/interfaces

示例配置:

auto lo
iface lo inet loopback

iface eth0 inet manual

auto vmbr0
iface vmbr0 inet static
        address 158.xx.xx.210/24
        gateway 158.xx.xx.254
        bridge-ports eth0
        bridge-stp off
        bridge-fd 0

iface vmbr0 inet6 static
        address xx:xx:60:84d2::1/128 // OVH管理面板上提供的IPv6地址
        gateway xx:xx:0060:84ff:00ff:00ff:00ff:00ff // OVH管理面板上提供的IPv6網關地址

source /etc/network/interfaces.d/*

使用如下命令實時重載網絡配置,立即生效,不需要重啟PVE主機:

ifreload -a

接下來給虛擬機分配IPv6,在開始分配前,可以使用這個網站先計算一下可用的IPv6地址範圍,或者拆分IPv6。將OVH管理面板上提供的IPv6地址輸上去,Prefix length選擇/56即可。

對於Debian12系統的虛擬機,自定義cloud-init網絡配置文件,示例配置:

network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - "142.xx.157.29/32"
        - "260x:5x00:00x0:8400::1/56"
      match:
        macaddress: 02:00:00:1c:0e:9a
      routes:
        - to: default
          via: 158.xx.55.254
          on-link: true
        - to: default
          via: 260x:5x00:00x0:84ff:ff:ff:ff:ff
      nameservers:
        addresses:
          - 8.8.8.8
          - 1.1.1.1
          - 2001:4860:4860::8888
          - 2606:4700:4700::1111
      set-name: eth0

還有一種寫法,可以為每台虛擬機配置一個/64而不是/56,如果你選擇CIDR為/64則需要添加onlink標誌,示例配置:

network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - "142.xx.157.29/32"
        - "260x:5x00:00x0:8400::1/64"
      match:
        macaddress: 02:00:00:1c:0e:9a
      routes:
        - to: default
          via: 158.xx.55.254
          on-link: true
        - to: default
          via: 260x:5x00:00x0:84ff:ff:ff:ff:ff
          on-link: true
      nameservers:
        addresses:
          - 8.8.8.8
          - 1.1.1.1
          - 2001:4860:4860::8888
          - 2606:4700:4700::1111
      set-name: eth0

測試:

OVHcloud Proxmox VE虛擬機網絡配置

對於Debian13系統的虛擬機,直接在PVE管理界面配置IPv6,按你自己的喜好CIDR配置成/56、/64均可:

OVHcloud Proxmox VE虛擬機網絡配置

測試:

OVHcloud Proxmox VE虛擬機網絡配置

參考資料:

https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_custom_cloud_init_configuration
https://forum.proxmox.com/threads/bug-no-routing-in-vm-with-cloud-init-ubuntu-18-x-19-4.56966/
https://forum.proxmox.com/threads/cloud-init-network-configuration-with-ubuntu-cicustom-option.115746/
https://pve.proxmox.com/wiki/Network_Configuration
https://help.ovhcloud.com/csm/en-dedicated-servers-network-bridging?id=kb_article_view&sysparm_article=KB0043731

原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/152421.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-11-12 21:29
下一篇 2024-11-12 22:13

相關推薦

發表回復

登錄後才能評論