972天 墨茶

Never Say Never

备忘:Proxmox Virtual Environment(PVE)7.1安装方法、常用命令和配置、常见问题

墨茶    5个月前  541次浏览  0条评论  4545字   原创

安装方法

此处仅列出基于Debian11的安装方法,其他版本可查看PVE wiki

此处列出的安装方法参考了Install Proxmox VE on Debian 11 Bullseye,是此页面的汉化版本,并进行了修改,更加人性化且适合中文母语者阅读,此处列出的每一步都是不可忽略的

  1. 安装接下来可能需要的包。
    apt install -y vim wget
  2. 为本机修改hostname。
    echo hostname > /etc/hostname
  3. 为本机IP地址添加/etc/hosts条目(此处可能涉及到的vim快捷键:a(或i) -- 进入编辑模式 \ Esc -- 退出编辑模式 \ dd -- 删除光标所在行 \ u -- 撤销 \ ^r -- 回退(反撤销) \ :wq -- 保存并退出)。
    vim /etc/hosts
    
    如果主机名为hostname,本机IP为192.168.1.101,那么需要添加(修改)的内容如下所示:
    127.0.0.1 localhost
    192.168.1.101 hostname hostname

    注意:这也意味着删除默认存在的地址127.0.1.1。

  4. 重启。
    reboot
  5. 使用hostname命令验证2、3步操作是否正确。
    hostname --ip-address
    
    此命令的输出应为本机IP地址,例如:
    192.168.1.101
  6. 在sources.list中添加PVE存储库。
    echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
  7. 将PVE存储库密钥添加到可信密钥。
    wget https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
  8. 验证GPG密钥。
    sha512sum /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
    
    输出内容应与下列字符串完全相同:
    7fb03ec8a1675723d2853b84aa4fdb49a46a3bb72b9951361488bfd19b29aab0a789a4f8c7406e71a69aabbc727c936d3549731c4659ffa1a08f44db8fdcebfa  /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg 
  9. 更新存储库和系统。
    apt update && apt full-upgrade
  10. 安装PVE软件包。如果配置较低,这可能需要相当长的时间。
    apt install proxmox-ve postfix open-iscsi

    如果网络中有邮件服务器,应该将postfix配置为satellite system。然后,现有的邮件服务器将成为relay host,它会将PVE发送的电子邮件路由到其最终收件人。如果不知道在此处输入什么,应选择local only并保持system name不变。

  11. 重启。
    reboot
  12. 删除Debian内核。
    apt remove linux-image-amd64 'linux-image-5.10*'
  13. 更新grub2。
    update-grub
  14. 使用web界面(https://你的IP地址:8006/)管理PVE,必须使用https访问,选择PAM身份验证并使用root用户帐户登录。
  15. 登录后,创建一个名为vmbr0的Linux网桥,并将第一个网络接口添加到其中。Linux网桥.png

常用命令和配置

创建虚拟机

Debian11

咕咕咕。

Kali 2022.1

咕咕咕咕。

Windows Server 2019

咕咕咕咕咕。

Windows Server 2022

咕咕咕咕咕咕。

创建CT(LXC容器)

咕咕咕咕咕咕咕。

IPv4 NAT

IPv4 NAT主要用于只有一个IP的服务器,IP数量大于1可以不进行设置,但需注意虚拟机数量不能大于等于IP数量。

  1. 开启IPv4转发。
    vim /etc/sysctl.conf
    
    net.ipv4.ip_forward = 1
  2. 配置IPv4 NAT。添加内网网卡,将所有内网出流量转发到公网网卡(vmbr0),内网IP地址和掩码等信息可以自行修改。
    vim /etc/network/interfaces
    
    auto vmbr1
    iface vmbr1 inet static
    	address  10.0.0.254
    	netmask  255.255.255.0
    	bridge-ports none
    	bridge-stp off
    	bridge-fd 0
    	post-up iptables -t nat -A POSTROUTING -s '10.0.0.1/24' -o vmbr0  -j MASQUERADE
    	post-down iptables -t nat -D POSTROUTING -s '10.0.0.1/24' -o vmbr0  -j MASQUERADE
  3. (推荐)为单IP配置端口转发(Port forwarding)。此处以内网设备10.0.0.1为例,将公网所有发送至80和443端口的TCP、UDP流量发送到内网IP10.0.0.1。
    vim /etc/network/interfaces
    
    post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m multiport --dports 80,443 -j DNAT --to 10.0.0.1
    post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp -m multiport --dports 80,443 -j DNAT --to 10.0.0.1
    post-up iptables -t nat -A PREROUTING -i vmbr0 -p udp -m multiport --dports 80,443 -j DNAT --to 10.0.0.1
    post-down iptables -t nat -D PREROUTING -i vmbr0 -p udp -m multiport --dports 80,443 -j DNAT --to 10.0.0.1
  4. (推荐)如果执行了第3步,还需配置端口回流(Hairpin NAT),即解决内网设备无法通过本机公网IP访问内网服务的问题。此处基于前述配置提供示例,并假设本机公网IP为192.168.1.101/24,将所有来源为内网网段、目标为本机公网IP且发送至80和443端口的TCP、UDP流量直接发送给内网设备10.0.0.1。
    vim /etc/network/interfaces
    
    post-up iptables -t nat -A PREROUTING -s 10.0.0.0/24 -d 192.168.1.101/24 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 10.0.0.1
    post-down iptables -t nat -D PREROUTING -s 10.0.0.0/24 -d 192.168.1.101/24 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 10.0.0.1
    post-up iptables -t nat -A PREROUTING -s 10.0.0.0/24 -d 192.168.1.101/24 -p udp -m multiport --dports 80,443 -j DNAT --to-destination 10.0.0.1
    post-down iptables -t nat -D PREROUTING -s 10.0.0.0/24 -d 192.168.1.101/24 -p udp -m multiport --dports 80,443 -j DNAT --to-destination 10.0.0.1
  5. (可选)可能可以提高NAT工作效率的配置。将来源和目标均为内网网段的流量直接发送给内网网关。
    vim /etc/network/interfaces
    
    post-up iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 10.0.0.0/24 -j SNAT --to-source 10.0.0.254
    post-down iptables -t nat -D POSTROUTING -s 10.0.0.0/24 -d 10.0.0.0/24 -j SNAT --to-source 10.0.0.254
  6. 让内核参数生效。
    sysctl -p
  7. 重启网卡。
    service networking restart​​
  8. 后续设置虚拟机的网络设备时,需桥接到内网网卡(vmbr1)并按照内网网卡配置进行配置,同一内网IP地址不能同时使用

常见问题

节点或虚拟机状态为未知或离线

错误描述

web管理界面出现问题,所有节点和在其上运行的所有VM/容器都显示为“unknown”状态(或是“offline”状态)。

解决方案

systemctl restart pvedaemon
systemctl restart pveproxy
systemctl restart pvestatd

虚拟机无法关机和重启

错误描述

新创建的虚拟机在主控端向虚拟机发送关机/重启命令后,命令长时间显示执行中(状态一直为running),但虚拟机并没有执行关机/重启命令,最后报错:

TASK ERROR: VM quit/powerdown failed

解决方案

此问题共三种解决方案,根据适合自己的方案任选其一即可。

安装QEMU Guest Agent服务
  1. 如果在虚拟机选项中启用了QEMU Guest Agent,那需要为虚拟机安装此管理软件才能解决此问题。此处以Debian为例,其他发行版应使用自己的依赖管理工具,例如Centos需使用yum。
    apt install qemu-guest-agent -y
  2. 安装后启动服务。
    service qemu-guest-agent start
  3. 启动后验证服务是否正常启动。
    service qemu-guest-agent status
    状态为active(running)即为正常,或使用:
    ps aux | grep qemu

    能找到qemu-ga即为正常。

关闭QEMU Guest Agent选项

在虚拟机选项中禁用QEMU Guest Agent。

关闭QEMU代理.png

使用停止命令(强制关机)

不推荐此方法,因为可能损坏文件系统造成数据丢失或其他更为严重的后果。

在web管理界面中的虚拟机关机按钮右侧下拉框中点击停止按钮。

停止虚拟机.png

或在shell中输入停止命令来停止虚拟机,此命令中的vmid是需要关闭的虚拟机的ID。

qm stop vmid

如果执行此命令后报错:

trying to acquire lock...

TASK ERROR: can't lock file '/var/lock/qemu-server/lock-vmid.conf' - got timeout

那么需要先删除报错中提及的锁,然后重新执行停止命令。

rm -f /var/lock/qemu-server/lock-vmid.conf
qm stop vmid
未显示?请点击刷新