Iptables
無法在 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模組,但是為什麼我不能在vm中添加iptables規則?
通過更改
IPTABLES_MODULES
為IPTABLES
/etc/vz/vz.conf 解決了問題。
在 /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"