如何在 proxmox 中为容器进行端口路由?

How can I make port routing for containers in proxmos?

我使用proxmox,我需要为虚拟机和容器做端口路由,我使用:

qm set 100 -args "--redir tcp:1000::1001"»

VM 上的端口路由命令。它运作良好,但不适用于容器。当我将它用于容器时的错误是:

Configuration file '100.conf' does not exist.

如何在 proxmox 中为容器进行端口路由?

proxmox 中的 qm 命令用于 qemu 虚拟机 (kvm) 而不是用于 LXC 容器。不为 LXC 工作是正常的,因为在执行时,它会尝试为该 ID 找到一个 kvm 虚拟机配置。该 id 是 LXC 容器而不是 KVM 机器,没有配置文件。

为了将端口映射到 LXC 容器,您必须使用 iptables(据我所知,lxc 没有类似的 qm 工具)。通过 SSH 登录到您的 proxmox 服务器,成为 root,端口转发的语法如下:

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport PORT -j DNAT --to [LXC-container-IP:PORT]

例如,如果您想将端口 9999 映射到 LXC 容器的端口 9999(为了示例,我们假设 lxc 容器的 IP 为 1.1.1.1),您的 iptables 规则是:

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 9999 -j DNAT --to [1.1.1.1:9999]

请记住,您的默认以太网设备可能不是 eth0,而是 vmbr0 或其他任何设备。所以把eth0换成对应的设备。