Форумы

GNU.SU - Записки нубо-линуксойда :: Форумы :: Сервисы :: Виртуализация
 
<< Предыдущая тема | Следующая тема >>
Настройка доступа в интернет из контейнеров OpenVZ
Модераторы: tastelinux, Frizze, andrey, Bender
Автор Добавил
tastelinux
Втр Фев 21 2012, 11:31
andreika

ID пользователя #1
Зарегистрирован: Птн Апр 30 2010, 12:25

Сообщений: 337
По OpenVZ существует достаточно руководств в сети.
Также я бы советовал приглядеться к OpenVZ_Manual_RUS.pdf и OpenVZ-Users-Guide.pdf
Вообще технология виртуализации в таком ключе очень применима в наши дни.

Но хочу поведать не об этом.

Классический джентельменский набор, который даёт гарантию, что интернет ваши контейнеры получат:
Для предоставления доступа в интернет контейнерам, имеющим лишь внутренние IP адреса (не статические внешние), на HN должен быть настроен SNAT (Source Network Address Translation, также известный, как IP маскарадинг).
Прим. HN - Hardware Node, или: HW, VE0, host, Аппаратный узел, хост, короче физический комп, где стоит патченое ядро OpenVZ.
SNAT без особых проблем настраивается стандартной ултилитой Linux iptables.

# iptables -t nat -A POSTROUTING -s src_net -o eth0 -j SNAT --to ip_address

где src_net это диапазон IP адресов, транслируемых SNAT
где ip_address это внешний IP адрес вашего сервера
К примеру, чтобы задать трансляцию адресов с 192.168.2.1 до 192.168.2.127:

# iptables -t nat -A POSTROUTING -s 192.168.2.0/25 -o eth0 -j SNAT --to ip_address

Также вы можете задать любое количество правил, к примеру если захотите указать несколько диапазонов, или у вас несколько сетевых карт.
Чтобы транслировать все IP адреса (за исключением адреса HN), просто не указываем диапазон:

# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to ip_address

Ахтунг! Начиная с Debian 4 (точно на 5, возможно и на 6) вероятно вам понадобится разрешить правило форвадинга адресов.

# /sbin/iptables -A FORWARD -s 172.16.150.0/24 -j ACCEPT
# /sbin/iptables -A FORWARD -d 172.16.150.0/24 -j ACCEPT

Если вы используете iptables firewall (например дефолтный RedHat/ CentOS firewall), не забудьте разрешить исходящие соединения для ваших контейнеров.
К примеру, если вы используете подсеть 172.16.150.0/24 для ваших контейнеров:

# /sbin/iptables -A RH-Firewall-1-INPUT -s 172.16.150.0/24 -j ACCEPT
# /sbin/iptables-save > /etc/sysconfig/iptables
# /sbin/service iptables restart


Ахтунг!: Если, указанное выше, не работает, то пробуйте следующие трюки до победы:
1. (Не для Debian) Для стабильных ядер 2.6.8-based, чтобы разрешить SNAT, вам предварительно понадобится явно подключить отслеживание соединений (connection tracking) на HN. Убедитесь, что следующая строка есть в файле /etc/modprobe.conf

options ip_conntrack ip_conntrack_enable_ve0=1

Ахтунг!: В ядрах позднее 2.8 connection tracking изначально включен.
2. По непонятным разрабам причинам, в дебиан способ №1 не работает. Солв:

modprobe ip_conntrack ip_conntrack_enable_ve0=1

(!!!)Убедитесь, что этот модуль (а в squeeze он называется fn_conntrack, хотя причём тут squeeze казалось бы) загружается до подгрузки модулей семейства iptables (ну, скажем ip_tables; iptable_filter/mangle etc).
Не забывайте менять и ребутиться после. (Если порядок нарушен, то поможет лишь ребут).
Ахтунг! Вам может понадобится добавить в /etc/vz/vz.conf следующее:

IPTABLES="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"



Наверх

 

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System