需要在带有 OpenVZ 内核的 D​​ebian 7 Wheezy 中加载 xt_tcpudp 模块。错误:“无法打开”

需要在带有 OpenVZ 内核的 D​​ebian 7 Wheezy 中加载 xt_tcpudp 模块。错误:“无法打开”

我遵循了本指南

容器内部 IPTABLES 指南 @ openvz.org

我正在运行 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

好的。

以下是相关文档:

  1. IPTABLES netfilter 模块名称的新列表
  2. 新的 OpenVZ 全局参数

相关内容