在将我的 Ubuntu 服务器 p2v 迁移到我所堆叠的 OpenVZ 容器失败后,我想我会尝试基于 Ubuntu 9.10 的干净 OpenVZ 模板重新安装(来自 OpenVZ wiki)
当我尝试在 VM 机器上加载我的 iptables 规则时,我收到了错误,我认为这些错误与未从 /vz/XXX.conf 模板模型加载到 VM 上的内核模块有关。
我已经测试了我发现的一些帖子,但出现了以下错误:
WARNING: Deprecated config file /etc/modprobe.conf, all config files belong into /etc/modprobe.d/.
FATAL: Could not load /lib/modules/2.6.24-10-pve/modules.dep: No such file or directory
iptables-restore v1.4.4: iptables-restore: unable to initialize table 'raw'
Error occurred at line: 2
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
我读到有关模板没有加载所有 iptables 模块的信息,因此我将模块添加到 VZ 虚拟机的 XXX.conf 中,如下所示:
IPTABLES="ip_tables 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"
由于错误仍然存在,我读到我应该在虚拟机上再次建立依赖关系:
depmod -a but this returned an error:
WARNING: Couldn't open directory /lib/modules/2.6.24-10-pve: No such file or directory
FATAL: Could not open /lib/modules/2.6.24-10-pve/modules.dep.temp for writing: No such file or directory
因此我再次阅读有关创建空目录并重做“depmod -a”的内容。
我现在没有收到依赖项错误,但是收到了这个,而且我不知道如何继续:
WARNING: Deprecated config file /etc/modprobe.conf, all config files belong into /etc/modprobe.d/.
FATAL: Module ip_tables not found.
iptables-restore v1.4.4: iptables-restore: unable to initialize table 'raw'
Error occurred at line: 2
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
我理解 iptables 规则在 VM 机器上必须有所不同,也许我们尝试应用的一些规则(来自我们的物理服务器)不兼容,但这些只是我希望能够使用的源 IP 和目标端口检查。我听说在 CentOS 模板上没有这个问题,所以我理解这与 VM 配置有关。
任何帮助将不胜感激。
答案1
我曾问同样的问题一次一次 :) 事实证明,您似乎至少需要 2.6.32-ovz 才能在 VE 中使用 RAW。
答案2
这不是直接的答案,但对于我的 openvz 机器,我将 iptables 规则放在主机上。然后它们就在一个地方,一切都必须通过主机。您可能会发现这更容易、更干净(但可能不是)。
答案3
根据本文主机节点上需要进行一些设置。(下面的文本大部分来自文章,但未进行区块引用,以使其更具可读性。)
首先,主机节点应该转发所有流量。以下命令使默认 FORWARD 操作为 ACCEPT,然后刷新 FORWARD 链上的所有规则。
iptables -P FORWARD ACCEPT
iptables -F FORWARD
如果您想在容器内使用防火墙,请在启动容器之前加载这些模块:
modprobe xt_tcpudp
modprobe ip_conntrack
如果不这样做,您将收到如下错误:“iptables:没有该名称的链/目标/匹配”
如果您想使用状态防火墙规则(您应该这样做!)您还需要确保“ipt_state”位于您的 vz.conf 文件中的“IPTABLES”选项中:
IPTABLES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state"
还要确保主机上已加载“xt_state”模块:
modprobe xt_state