NAME

pveproxy - PVE API 代理守护进程

SYNOPSIS

pveproxy <COMMAND> [ARGS] [OPTIONS]

pveproxy help [OPTIONS]

获取指定命令的帮助。

--extra-args <array>

显示特定命令的帮助

--verbose <boolean>

详细输出格式。

pveproxy restart

重启守护进程(如果未运行则启动)。

pveproxy start [OPTIONS]

启动守护进程。

--debug <boolean> (default = 0)

调试模式 - 保持在前台运行

pveproxy status

获取守护进程状态。

pveproxy stop

停止守护进程。

常用命令示例:

pveproxy status
pveproxy restart

DESCRIPTION

该守护进程通过 HTTPS 在 TCP 端口 8006 上公开完整的 Proxmox VE API。它以 www-data 用户身份运行,权限非常有限。需要更高权限的操作会转发给本地 pvedaemon

发往其他节点的请求会自动转发到相应节点。这意味着只需连接到单个 Proxmox VE 节点, 就可以管理整个集群。

基于主机的访问控制

可以配置类似 “apache2” 的访问控制列表。相关值从 /etc/default/pveproxy 文件读取。例如:

ALLOW_FROM="10.0.0.1-10.0.0.5,192.168.0.0/22"
DENY_FROM="all"
POLICY="allow"

IP 地址可以使用 Net::IP 能识别的任意语法指定。名称 all0/0::/0 的别名,表示所有 IPv4 和 IPv6 地址。

默认策略为 allow

匹配 POLICY=deny POLICY=allow

仅匹配 Allow

allow

allow

仅匹配 Deny

deny

deny

无匹配

deny

allow

同时匹配 Allow 与 Deny

deny

allow

监听 IP 地址

默认情况下,pveproxyspiceproxy 守护进程监听通配地址,并接受来自 IPv4 和 IPv6 客户端的连接。

通过在 /etc/default/pveproxy 中设置 LISTEN_IP,可以控制 pveproxyspiceproxy 守护进程绑定到哪个 IP 地址。该 IP 地址需要已在系统上配置。

sysctl net.ipv6.bindv6only 设置为非默认值 1 会导致这些守护进程只接受 IPv6 客户端连接,通常也会引发许多其他问题。如果设置了该配置,建议移除该 sysctl 设置,或将 LISTEN_IP 设置为 0.0.0.0(这将只允许 IPv4 客户端)。

LISTEN_IP 可用于将套接字限制到内部接口,从而减少对公网的暴露,例如:

LISTEN_IP="192.0.2.1"

同样,也可以设置 IPv6 地址:

LISTEN_IP="2001:db8:85a3::1"

请注意,如果要指定 link-local IPv6 地址,需要同时提供接口名称。例如:

LISTEN_IP="fe80::c463:8cff:feb9:6a4e%vmbr0"
Warning 集群中的节点需要访问 pveproxy 进行通信,并且可能位于不同子网中。 不建议在集群系统上设置 LISTEN_IP

要应用该变更,需要重启节点,或完整重启 pveproxyspiceproxy 服务:

systemctl restart pveproxy.service spiceproxy.service
Note reload 不同,restart pveproxy 服务可能中断一些长时间运行的 worker 进程, 例如来自虚拟客户机的运行中控制台或 shell。因此,请在维护窗口内应用此变更。

常用命令示例

以下命令可用于查看相关服务状态:

systemctl status pveproxy.service
systemctl status spiceproxy.service

SSL 加密套件

可以通过 /etc/default/pveproxy 中的 CIPHERS(TLS ⇐ 1.2)和 CIPHERSUITES (TLS >= 1.3)键定义加密算法列表。例如:

CIPHERS="ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256"
CIPHERSUITES="TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"

上面是默认值。所有可用选项请参见 openssl 软件包中的 ciphers(1) 手册页。

此外,可以在 /etc/default/pveproxy 中设置由客户端选择使用的加密算法 (默认使用客户端和 pveproxy 都可用的列表中的第一个加密算法):

HONOR_CIPHER_ORDER=0

支持的 TLS 版本

pveproxy 无条件禁用不安全的 SSL 2 和 SSL 3。较新的 OpenSSL 版本默认禁用低于 1.1 的 TLS 版本,pveproxy 会遵循该设置(见 /etc/ssl/openssl.cnf)。

要禁用 TLS 1.2 或 1.3,请在 /etc/default/pveproxy 中设置以下内容:

DISABLE_TLS_1_2=1

或者分别设置:

DISABLE_TLS_1_3=1
Note 除非有特定原因,否则不建议手动调整支持的 TLS 版本。

Diffie-Hellman 参数

可以在 /etc/default/pveproxy 中将 DHPARAMS 设置为包含 PEM 格式 DH 参数的文件路径, 以定义要使用的 Diffie-Hellman 参数,例如:

DHPARAMS="/path/to/dhparams.pem"

如果未设置该选项,将使用内置的 skip2048 参数。

Note 只有在协商出使用 DH 密钥交换算法的加密套件时,才会使用 DH 参数。

替代 HTTPS 证书

可以将使用的证书更改为外部证书,或更改为通过 ACME 获取的证书。

如果存在,pveproxy 会使用 /etc/pve/local/pveproxy-ssl.pem/etc/pve/local/pveproxy-ssl.key;否则回退使用 /etc/pve/local/pve-ssl.pem/etc/pve/local/pve-ssl.key。私钥不能使用 passphrase。

可以通过在 /etc/default/pveproxy 中设置 TLS_KEY_FILE,覆盖证书私钥 /etc/pve/local/pveproxy-ssl.key 的位置,例如:

TLS_KEY_FILE="/secrets/pveproxy.key"
Note 内置 ACME 集成不会遵循该设置。

详细信息请参见文档中的主机系统管理章节。

响应压缩

默认情况下,如果客户端支持,pveproxy 会对可压缩内容使用 gzip HTTP 级压缩。 可在 /etc/default/pveproxy 中禁用该功能:

COMPRESSION=0

真实客户端 IP 日志记录

默认情况下,pveproxy 会记录发送请求的客户端 IP 地址。当 pveproxy 前面有代理服务器时, 可能希望记录发起请求的客户端 IP,而不是代理 IP。

要启用对代理设置的 HTTP 头的处理以用于日志记录,请将 PROXY_REAL_IP_HEADER 设置为用于获取客户端 IP 的头名称。例如:

PROXY_REAL_IP_HEADER="X-Forwarded-For"

该头中传入的任何无效值都会被忽略。

默认行为是在所有传入请求上记录该头中的值。要定义可信任、允许设置上述 HTTP 头的代理服务器列表, 请设置 PROXY_REAL_IP_ALLOW_FROM,例如:

PROXY_REAL_IP_ALLOW_FROM="192.168.0.2"

PROXY_REAL_IP_ALLOW_FROM 设置也支持与 ALLOW_FROMDENY_FROM 类似的值。

IP 地址可以使用 Net::IP 能识别的任意语法指定。名称 all0/0::/0 的别名,表示所有 IPv4 和 IPv6 地址。

版权和免责声明

Copyright © 2022-2025 成都市梨儿方信息技术有限责任公司.

本程序是自由软件:你可以依据自由软件基金会发布的 GNU Affero General Public License 条款重新分发和/或修改本程序;可使用该许可证第 3 版,或(由你选择)任何后续版本。

发布本程序是希望它能够有用,但不提供任何担保;甚至不包含对适销性或特定用途适用性的默示担保。更多详情请参见 GNU Affero General Public License。

你应当已经随本程序收到一份 GNU Affero General Public License 的副本。如果没有,请访问: https://www.gnu.org/licenses/

Copyright © 2007-2022 Proxmox Server Solutions GmbH

本程序是自由软件:你可以依据自由软件基金会发布的 GNU Affero General Public License 条款重新分发和/或修改本程序;可使用该许可证第 3 版,或(由你选择)任何后续版本。

发布本程序是希望它能够有用,但不提供任何担保;甚至不包含对适销性或特定用途适用性的默示担保。更多详情请参见 GNU Affero General Public License。

你应当已经随本程序收到一份 GNU Affero General Public License 的副本。如果没有,请访问: https://www.gnu.org/licenses/