Article ID: 746, created on Jun 10, 2011, last review on May 10, 2014

  • Applies to:
  • Virtuozzo
  • Virtuozzo containers for Linux
  • Virtuozzo hypervisor

解决方案

首先你应该明确container可以使用哪些iptables模块。

在硬件节点上编辑/etc/sysconfig/iptables-config和/etc/sysconfig/vz。添加你需要的模块到相应的IPTABLES_MODULES= 和IPTABLES= 行。请注意,/etc/sysconfig/vz文件中的所有iptables模块的参数必须写在同一行,换行是不允许的。
例如,典型的防火墙配置需要以下模块:

ipt_REJECT ipt_tos ipt_TOS ipt_LOG ip_conntrack ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state iptable_nat ip_nat_ftp

 
所作的更改将会在重启iptables和virtuozzo服务(将会重启所有的container)后生效。推荐的做法是在硬件节点上运行如下命令:

# service vz stop
# service iptables restart
# service vz start

 
你在硬件节点上定义的模块在所有container中都可以使用。然而,你也可以为每一个container单独定义iptables模块,使用vzctl的 --iptables选项,如:

vzctl set 101 --iptables ipt_REJECT --iptables ipt_tos --iptables ipt_TOS --iptables ipt_LOG --iptables ip_conntrack --iptables ipt_limit --iptables ipt_multiport --iptables iptable_filter --iptables iptable_mangle --iptables ipt_TCPMSS --iptables ipt_tcpmss --iptables ipt_ttl --iptables ipt_length --iptables ipt_state --iptables iptable_nat --iptables ip_nat_ftp --save

 
你可能需要使用vzctl工具在/proc/user_beancounters中增加参数numiptent的barrier的数值。这个参数用来限制一个container拥有者所允许创建的iptables规则数量。例如,以下命令允许container 101上有400条iptables规则:

# vzctl set 101 --numiptent 400 --save

d02f9caf3e11b191a38179103495106f e8e50b42231236b82df27684e7ec0beb 2897d76d56d2010f4e3a28f864d69223 a26b38f94253cdfbf1028d72cf3a498b 0dd5b9380c7d4884d77587f3eb0fa8ef

Email subscription for changes to this article