Связаться со мной:
3 заметки с тегом

iptables

Включение модулей openvz.

Рассмотрим как включить модули iptables, ppp и tun/tap в openvz-контейнере.

Включение модулей iptables

Выполняем на ноде:

# modprobe iptable_nat

Подключаем модуль в контейнер id 001:

# vzctl set 001 --save --iptables "ip_conntrack iptable_filter iptable_mangle ipt_state iptable_nat ip_nat_ftp ip_conntrack_ftp"

Включение модуля ppp

Стопаем контейнер, а затем выполняем на ноде(001-id контейнера на котором надо включить):

# modprobe ppp_async

# modprobe ppp_deflate

# modprobe ppp_mppe

# vzctl set 001 --features ppp:on --save

# vzctl set 001 --devices c:108:0:rw --save

Запускаем контейнер и внутри него выполняем:

# mknod /dev/ppp c 108 0

# chmod 600 /dev/ppp

Включение модуля tun

На ноде выполняем(001-id контейнера на котором надо включить):

# modprobe tun

# vzctl set 001 --devnodes net/tun:rw --save

# vzctl set 001 --devices c:10:200:rw --save

# vzctl set 001 --capability net_admin:on --save

# vzctl exec 001 mkdir -p /dev/net

# vzctl exec 001 chmod 600 /dev/net/tun

Как заставить работать apf-firewall на ядре версии 3.x

Установил apf-firewall на один из серверов, столкнулся с проблемой. При запуске фаервола получил ошибку:

Kernel version not equal to 2.4.x or 2.6.x, aborting.

Фаервол не запустился и правила в iptables не добавились. Путём долгого гуления выяснилось что в коде скрипта стоит проверка версии ядра и на ядрах отличных от 2.4.х и 2.6.х apf отказывается работать. Обойти данное досадное недоразумение, как оказалось, достаточно просто. В файле /etc/apf-firewall/internals/functions.apf находим строку 68 и приводим условие к такому виду:

elif [ "$KREL" == "3.2" ]; then

MEXT="ko"

Где 3.2 ваша версия ядра. Версию ядра можно узнать выполнив:

# uname -a

После этих изменений apf запустился без проблем и правила добавились в iptables. Нормальная работа apf проверена на версии ядра 3.2.х и по информации в интернете 3.0.х. Решение вроде простое, но найти эту информацию оказалось довольно трудно. Поэтому сделал эту запись, возможно кому-то поможет.

2013   Advanced Policy Firewall   APF   APF-Firewall   debian   iptables   Kernel   Linux   ubuntu

Установка PPTP VPN-сервера на OpenVZ контейнер

Рассмотрим как настроить PPTP VPN-сервер в контейнере OpenVZ. В контейнере должны быть включены модули ядра iptables и ppp. Если у вы арендуете сервер, то пишете в техподдержку. Если у вас есть доступ к ноде, то включаете их. На ноде выполняем команды, предварительно стопнув контейнер:

# modprobe ppp_async

# modprobe ppp_deflate

# modprobe ppp_mppe

# vzctl set 001 --features ppp:on --save

# vzctl set 001 --devices c:108:0:rw --save

Где 001 номер контейнера. Запускаем контейнер и внутри него выполняем:

# mknod /dev/ppp c 108 0

# chmod 600 /dev/ppp

Мы включили модуль ppp. Теперь нам надо включить модули натирования. Стопим контейнер снова и на ноде выполняем: # vzctl set 001 --save --iptables "ip_conntrack iptable_filter iptable_mangle ipt_state iptable_nat ip_nat_ftp ip_conntrack_ftp"

Запускаем контейнер. Затем настройка будет происходить в самом контейнере. Установим pptpd # apt-get install pptpd

Приводим файл /etc/ppp/pptpd-options примерно к такому содержанию:

name pptpd #имя сервера
refuse-pap #отключаем аутентификацию pap, chap, mschap
refuse-chap
refuse-mschap
require-mschap-v2 #включаем аутентификацию mschap v2
require-mppe-128 #включаем 128 битное шифрование
ms-dns 8.8.8.8 #DNS-сервер
logfile /var/log/pptpd.log #куда писать логи
nodefaultroute
lock
nobsdcomp

Приводим файл /etc/pptpd.conf примерно к такому виду:

option /etc/ppp/pptpd-options
logwtmp
localip 192.168.0.1 #локальный ip vpn-сервера
remoteip 192.168.0.2-254 #ip клиентов
bcrelay venet0:0

Создаём логины и пароли пользователей в файле /etc/ppp/chap-secrets:

# Secrets for authentication using CHAP
# client server secret IP addresses
user pptpd password *

Перезапускаем vpn-сервер:

# /etc/init.d/pptpd restart

Теперь пропишем в файле /etc/rc.local команду натирования, чтобы разрешить нашим клиентам доступ в интернет. Перед exit 0 пишем:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o venet0 -j SNAT —to-source внешний ip контейнера

А в /etc/sysctl.conf разрешим ip-форвардинг, раскомментировав строку:

net.ipv4.ip_forward=1

Пробуем подключиться. Если не удалось, то смотрим лог-файл, который мы указали выше и разбираемся с ошибками.

P.S. Иногда требуется включить модуль nat на ноде, хотя по умолчанию он обычно включен. Для этого выполняем:

# modprobe iptable_nat

2013   iptables   nat   openvz   ppp   PPTP   pptpd   ubuntu   VDS   VPN   VPS