无法在 Proxmox Openvz vm 中初始化 iptables 表“nat”

无法在 Proxmox Openvz vm 中初始化 iptables 表“nat”

当我尝试在 Proxmox OpenVZ vm 中运行 iptables 命令时,出现以下错误:

# iptables -t nat -A POSTROUTING -o venet -j MASQUERADE && iptables-save
iptables v1.4.21: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

Proxmox 主机上的 /etv/vz/vz.conf 中的 IPTABLES_MODULES 如下所示:

IPTABLES_MODULES="iptable_filter, iptable_mangle, ipt_limit, ipt_multiport, ipt_tos, ipt_TOS, ipt_REJECT, ipt_TCPMSS, ipt_tcpmss, ipt_ttl, ipt_LOG, ipt_length, ip_conntrack, ip_conntrack_ftp, ip_conntrack_irc, ipt_conntrack, ipt_state, ipt_helper, iptable_nat, ip_nat_ftp, ip_nat_irc, ipt_REDIRECT, xt_mac, ipt_recent, ipt_owner"

Proxmox主机内核版本:

# uname -a
Linux pve 2.6.32-39-pve #1 SMP Wed Jun 24 06:39:42 CEST 2015 x86_64 GNU/Linux

Proxmox 主机中已经加载了 iptables 模块,但是为什么我无法在虚拟机中添加 iptables 规则?

答案1

通过在 /etc/vz/vz.conf 中更改IPTABLES_MODULES为,问题得以解决。IPTABLES

答案2

在 /etc/vz/vz.conf 中

IPTABLES 变量定义如下:

IPTABLES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length"

因此,当在模块之间使用逗号时,它会破坏变量的格式,只需删除逗号即可。

为了避免此错误:

无法在 Proxmox Openvz vm 中初始化 iptables 表“nat”

我这样定义 IPTABLES 变量:

## IPv4 iptables kernel modules to be enabled in CTs by default
IPTABLES="iptable_nat ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length"
## IPv4 iptables kernel modules to be loaded by init.d/vz script
IPTABLES_MODULES="$IPTABLES"

相关内容