Я следил за этим руководством
Руководство по контейнерам IPTABLES @ openvz.org
Я запускаю Debian 7 Wheezy x64, который был обновлен перед установкой OpenVZ. Контейнер - Debian7 x64 минимальный.
Он работает очень хорошо, за исключением того, что теперь мне нужно иметь некоторые правила 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.
===========
Хорошо, оказывается, что большая часть информации, которую можно найти, выполнив поиск в 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
Хорошо.
Вот соответствующие документы: