我遵循了本指南
我正在运行 Debian 7 Wheezy x64,它在安装 OpenVZ 之前进行了 dist-updgrade。容器是 Debian7 x64 最小版本。
它运行得非常好,只是现在我需要在我的其中一个容器(VM)内添加一些 IPTABLES 规则。
我尝试加载模块在主机节点上像这样:
root@baremetal-openvz-hostnode:~# modprobe xt_tcpudp
出现此错误:
libkmod: ERROR ../libkmod/libkmod.c:505 kmod_lookup_alias_from_builtin_file: could not open builtin file '/lib/modules/2.6.32-openvz-042stab093.5-amd64/modules.builtin.bin'
FATAL: Module xt_tcpudp not found.
root@baremetal-openvz-hostnode:~# ls /lib/modules/
uname -r/kernel/net/netfilter | grep xt_tcp
xt_tcpmss.ko
指南中提到的另外两个模块(链接见上文)加载没有问题。
我需要 xt_tcpudp 模块的原因
我正在尝试在容器内设置这些 IPTABLES 规则:
iptables -A OUTPUT -o ppp0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
我收到这些错误(上面提到的指南说它们发生是因为缺少内核模块)
iptables: No chain/target/match by that name.
iptables: No chain/target/match by that name.
===========
答案1
好吧,事实证明,通过谷歌搜索可以找到的大多数信息在 OpenVZ VM 中使用 iptables已经过时
我通过执行以下操作解决了该问题:
加载全部主机节点上的 IPTABLES 模块(此后我可能会删除一些)
里面/etc/vz/vz.conf
:
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"
(请注意,旧参数IPTABLES=
已过时)
重启 OpenVZ
root@baremetal-openvz-hostnode:~# /etc/init.d/vz restart
在容器上启用所有 netfilter(新关键字):
root@baremetal-openvz-hostnode:~# vzctl set 1234 --netfilter full --save
root@baremetal-openvz-hostnode:~# vzctl restart 1234
好的。
以下是相关文档: