Я следовал этому руководству
IPTABLES в контейнерном руководстве openvz.org
Я выполняю Debian 7 Хрипящий x64, который был dist-updgrade'd прежде, чем установить OpenVZ. Контейнер является минимальным Debian7 x64.
Это работает действительно хорошо кроме теперь, у меня должны быть некоторые правила IPTABLES в одном из моих контейнеров (VM's).
Я пытался загрузить модуль на узле хоста как это:
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.
===========
Хорошо, оказывается, что большая часть информации, которую можно найти, выполнив поиск в Google о с использованием iptables внутри виртуальной машины OpenVZ , устарела
Я решил проблему, выполнив следующее:
Загрузить все модули 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
Включите все сетевые фильтры (новое ключевое слово) в контейнере:
root @ baremetal-openvz-hostnode:~ # vzctl set 1234 --netfilter full --save
root @ baremetal-openvz-hostnode: ~ # vzctl restart 1234
Хорошо.
Вот соответствующие документы: