Прежде всего загрузим необходимые модули:
modprobe af_key && modprobe esp4 && modprobe esp6 && modprobe xfrm4_mode_tunnel && modprobe xfrm6_mode_tunnel && modprobe ppp_async && modprobe pppol2tp && modprobe xfrm_ipcomp
активируем возможность net_admin для контейнера и дадим контейнеру ppp устройство для работы, как указано в подсказке от разработчиков. На хосте OpenVZ выполняем:
vzctl set CTID --capability net_admin:on --save vzctl set CTID --devices c:108:0:rw --save vzctl restart CTID
Тут CTID - это ID контейнера.
Внутри контейнера создаем ppp устройство и выставляет корректные права доступа к нему:
mknod /dev/ppp c 108 0 chmod 600 /dev/ppp
Внутри контейнера в качестве ipsec демона будем использовать openswan, а в качестве l2tp сервера стандартный xl2tpd из репозиториев:
apt-get install openswan xl2tpd
При установке openswan на вопрос Use an X.509 certificate for this host? отвечаем n
Проблема
вот еще одно решение: http://linuxworldweb.blogspot.ru/2012/04/enable-iptable-nat-support-on-openvz.html
iptables v1.4.14: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
1. IPTABLES parameter in /etc/vz/vz.conf added iptable_nat
2. /etc/sysconfig/iptables-config
IPTABLES_MODULES="iptable_filter iptable_mangle iptable_nat"
3. Check the following to see if it's an Openvz issue:
cat /sys/module/nf_conntrack/parameters/ip_conntrack_disable_ve0 1
If your result is a 1 then you need to do the following to solve it:
vi /etc/modprobe.d/openvz.conf
change :
options nf_conntrack ip_conntrack_disable_ve0=1
to:
options nf_conntrack ip_conntrack_disable_ve0=0
первые два изменения результата не принесли. После последних правок nat появилась на хосте, но не контейнерах.
а вот после
vzctl set CTID --netfilter full --save
таблица NAT появилась и в контейнерах.
Если появляется сообщение - NETKEY: Testing XFRM related proc values [FAILED] Значит в контейнере надо выполнить:
for f in /proc/sys/net/ipv4/conf/*/send_redirects; do echo 0 > $f; done for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 0 > $f; done
Discussion