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/n/152421.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
简单一点的头像简单一点
上一篇 2024-11-12 21:29
下一篇 2024-11-12 22:13

相关推荐

发表回复

登录后才能评论