By accessing the website and accepting the Cookie Policy, you agree to use the cookies provided by the Site in accordance with to analyze traffic, remember your preferences, and optimize your experience.
Kimsufi独服通过虚拟KVM安装PVE7的ISO镜像、配置Raid0、开NATIPv4+IPv6双栈小鸡(ProxmoxVE7)
PVE    2023-12-08 15:04:59    457    0    0
emengweb   PVE

方案是用zfs做raid0,并且把zfs作为proxmox的根文件系统。那现在问题就来了,想实现这一套方案的话,安装proxmox就只能用iso来装了,但是这机器没有ipmi,咋办呢?

好在kimsufi后台还提供了一个基于debian的救援系统!我们可以在这个救援系统里面安装kvm然后把硬盘直通给虚拟机来安装proxmox。这里就记录一下折腾的过程。

首先登录到kimsufi的后台,把这个监控关了:

这里说下为啥要把这个关了,因为如果你开着这个,到时候装系统要是配置哪里出了问题导致机器网络不通的话,你在后台执行硬重启会卡很久,因为它这个监控会ping你的机器ip,如果不通的话就会卡很久才有反应,很浪费时间,所以这里先关了,后面等配置全部好了后再打开。

接着点右上角的Netboot,在里面选择Rescue,然后点Next:

点Confirm:


再点右上角的Restart执行硬重启,等待片刻,邮箱里面会收到救援系统的ssh登录ip/账号/密码。

登录到救援系统内,首先查看硬盘的基本情况:

lsblk

可以看到之前系统做了raid1:


查看阵列状态:

mdadm --detail /dev/md127

可以看到这个阵列当前正在工作:

我们需要先停止这个阵列:

mdadm --stop /dev/md127

然后删除两块硬盘的分区表:

wipefs -a /dev/sda
wipefs -a /dev/sdb

在这个救援系统内查看机器的公网ip,并记录备用:

ip a

回显类似:

eth0:...
  link/ether ...
  inet xx.xx.xx.xx ...

查看网关ip:

ip route list

回显类似:

default via xx.xx.xx.xx dev eth0

查看dns:

cat /etc/resolv.conf

回显类似:

nameserver 213.186.33.99

查看机器的ipv6地址:

ip -6 a

回显类似:

查看机器的ipv6网关:

ip -6 route list

回显类似:

kimsufi的网站上虽然标明每台机器只有/128的ipv6,但实际可用应该是/64,为了后续的步骤能够正常进行,这里先简单检查一下机器到底能用多少个ipv6,可以先往机器的主网卡接口添加一个ipv6测试:

ip addr add 2001:41d0:x:xxxx::2/128 dev eno1

在别的机器上能ping通刚添加的地址就说明可用的ipv6不止/128:

记住这些,待会安装的时候需要用到。

安装kvm:

apt -y update
apt -y install qemu qemu-kvm

下载proxmox的iso:

wget http://download.proxmox.com/iso/proxmox-ve_7.1-2.iso

启动虚拟机:

qemu-system-x86_64 \
-enable-kvm \
-nodefaults \
-cdrom /root/proxmox-ve_7.1-2.iso \
-hda /dev/sda \
-hdb /dev/sdb \
-cpu host \
-smp 4 \
-m 8G \
-net nic \
-net user \
-vga std \
-vnc 0.0.0.0:0 \
-usbdevice tablet \
-k en-us

用vnc客户端连接ip:5900,正常的话就能看到proxmox的安装界面了:

一步一步跟着安装进程走,到硬盘这里,选择zfs(raid0):

 

网络配置这里,把之前查看得到的ip/网关/dns填写上去:

确认无误后开始安装:

安装完成后,登录到proxmox的控制台,编辑grub配置文件:

nano /etc/default/grub

修改如下配置,加入net.ifnames=0 biosdevname=0内核启动参数:

GRUB_CMDLINE_LINUX_DEFAULT="quiet net.ifnames=0 biosdevname=0"

更新grub:

update-grub

然后编辑网卡配置文件:

nano /etc/network/interfaces

默认的配置应该是这样:

auto lo
iface lo inet loopback

iface ens3 inet manual

auto vmbr0
iface vmbr0 inet static
        address xx.xx.xx.xx/24
        gateway xx.xx.xx.xx
        bridge-ports ens3
        bridge-stp off
        bridge-fd 0

改为:

auto lo
iface lo inet loopback

iface eth0 inet manual

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

iface vmbr0 inet6 static
        address 2001:41d0:x:xxxx::ffff/64
        gateway 2001:41d0:x:xxxx:ff:ff:ff:ff

auto vmbr1
iface vmbr1 inet static
        address 192.168.0.1
        netmask 255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE
        post-up   iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1
        post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1

这里解释一下为何这么配置。首先是加了net.ifnames=0 biosdevname=0这两个内核启动参数,让网卡接口的命名强制统一变为ethX。

这样做可以解决机器重启后找不到网卡接口的问题。因为通过虚拟机安装的proxmox网卡名和宿主机的网卡名是对不上的。

kimsufi不能加ip,要开小鸡只能开nat,所以下面的vmbr1是为nat小鸡准备的。

最后增加的两行项目,是用于保证在某些时候虚拟机的数据包可以正确通过防火墙设置,与外网进行通信。在某些启用了防火墙的伪装设置中,传出连接可能需要 conntrack 区域。否则防火墙可能会阻止传出连接,因为它们更喜欢 VM 网桥的 POSTROUTING(而不是 MASQUERADE)。

如果开启了ufw等防火墙,或安装了k3s/k8s等服务,务必添加这两行,保证虚拟机不会断网。

        post-up   iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1
        post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1


重启网络服务:

systemctl restart networking.service

正常的话,现在母鸡的ipv6就通了:

为了让小鸡也能用上ipv6,现在还需要做一系列的配置。首先开启ipv6转发:

echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf && sysctl -p

然后安装ndppd:

apt -y install ndppd

编辑ndppd的配置文件:

nano /etc/ndppd.conf

写入如下配置,ipv6地址块换成你自己的:

proxy vmbr0 {
  rule 2001:41d0:x:xxxx::/64 {
    static
  }
}

重启ndppd服务使其生效,并设置开机自启:

systemctl restart ndppd.service
systemctl enable ndppd.service

现在开小鸡的话ipv6实际上就能用了,但是只能手动设置小鸡的ipv6地址,每台都手动设置的话太麻烦,重复劳动浪费时间,所以这里可以配置radvd实现slaac。

安装radvd:

apt -y install radvd

新建radvd配置文件:

nano /etc/radvd.conf

写入如下配置,ipv6地址块换成你自己的:

interface vmbr0 {
  AdvSendAdvert on;
  MinRtrAdvInterval 3;
  MaxRtrAdvInterval 10;
  prefix 2001:41d0:x:xxxx::/64 {
    AdvOnLink on;
    AdvAutonomous on;
    AdvRouterAddr on;
  };
};

重启radvd服务使其生效,并设置开机自启:

systemctl restart radvd.service
systemctl enable radvd.service

做完这些改动后,把运行这台proxmox的虚拟机关机:

systemctl poweroff

回到kimsufi的控制台,把系统启动模式改为从硬盘启动:

再点右上角的restart执行硬重启。等待片刻,如果一切正常的话,现在应该就可以访问到proxmox的webui了:

 

下面是开小鸡时的设置,注意不论是lxc还是kvm架构的小鸡,我这个配置统一都需要添加两个网卡。

对于lxc小鸡,在创建的时候可以先添加一个用于ipv6网络的eth0,桥接vmbr0,ipv6选择slaac:

等小鸡创建完成后再添加一个用于ipv4网络的eth1,桥接vmbr1,手动配置ipv4的地址和网关:

正常情况下,小鸡现在就是natipv4+ipv6双栈网络了:

对于kvm小鸡,实际操作大同小异,这里我就开个debian11的小鸡演示一下配置。

创建的时候先添加一个桥接vmbr0的网卡:

等小鸡创建完成后再添加一个桥接vmbr1的网卡:

打开vnc控制台开始安装系统:

这里有两块网卡ens18和ens19,实际ens18对应vmbr0,ens19对应vmbr1,这里选择ens18就可以实现ipv6的slaac:

至于ens19那块对应vmbr1的网卡,等待系统安装完成后手动配置ipv4即可。

接下来需要配置一个dns:

剩下的就是设置root密码,创建普通用户,还有分区这些了,这里就不多说了。等系统安装好,登录进去后,测试ipv6是否正常:

现在这台小鸡只有ipv6,如果还需要natipv4的话就得修改网卡配置文件,默认的配置是这样:

只需要在文件的尾部添加ens19网卡的ipv4配置:

auto ens19
iface ens19 inet static
	address 192.168.0.4/32
	gateway 192.168.0.1

然后添加一个dns服务器:

nano /etc/resolv.conf

写入如下配置:

nameserver 8.8.8.8

重启机器即可。

在母鸡上做dnat,把小鸡的ssh端口暴露出来:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 16823 -j DNAT --to-destination 192.168.0.4:22

最后在这台kvm小鸡内跑个bench,简单测试一下各项配置:

 

 

来源1 https://lala.im/8123.html

来源2 https://lala.im/8145.html

 

 

上一篇: Proxmox LXC 容器启用虚拟化嵌套支持 Docker Rclone

下一篇: PVE删除Local-lvm存储空间并合并到local中

457 人读过
文档导航