VMmanager OVZ: Сети

Материал из ISPWiki
Перейти к: навигация, поиск

Venet

В своей работе VMmanager OVZ использует сетевое устройство venet, создаваемое по умолчанию ядром OpenVZ. О его достоинствах и недостатках можно прочитать на официальной странице https://openvz.org/Venet.

Добавление IP-адреса на определенный контейнер происходит командой:

vzctl set CTID --ipadd IPaddr --save

При этом запускается скрипт добавления IP-адреса, предоставляемый системой OpenVZ для каждой ОС. В настоящий момент IP-адреса добавляются в качестве алиасов (venet0:0 и т.д.)

Iptables

При установке VMmanager OVZ, а также при добавлении узлов кластера, на ОС Centos происходит добавление следующих правил iptables/ip6tables:

  • включается форвардинг пакетов
 iptables -I FORWARD -p all -j ACCEPT
 ip6tables -I FORWARD -p all -j ACCEPT

Посмотреть текущие настройки можно командой "iptables -vnL FORWARD":

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
43428 2922K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

и "ip6tables -vnL FORWARD":

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all      *      *       ::/0                 ::/0                
  • разрешаются порты NFS (Network File System)
iptables -I INPUT 1 -p tcp --dport 111 -j ACCEPT
iptables -I INPUT 2 -p udp --dport 111 -j ACCEPT
iptables -I INPUT 3 -p tcp --dport 2049 -j ACCEPT
iptables -I INPUT 4 -p udp --dport 2049 -j ACCEPT

те же команды выполняются для ip6tables.

Посмотреть текущие настройки можно командой "iptables -vnL INPUT":

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:111 
    6   504 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:111 
  141 20272 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:2049 
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:2049 

и "ip6tables -vnL INPUT":

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp      *      *       ::/0                 ::/0                tcp dpt:111 
    0     0 ACCEPT     udp      *      *       ::/0                 ::/0                udp dpt:111 
    0     0 ACCEPT     tcp      *      *       ::/0                 ::/0                tcp dpt:2049 
    0     0 ACCEPT     udp      *      *       ::/0                 ::/0                udp dpt:2049

Приватные адреса на контейнерах


1) Используем адреса из одной сети на контейнере и хост-ноде. Для доступа в сеть контейнеры и хост-нода должны использовать адреса из одной подсети. Если на контейнерах используются приватные адреса, добавьте один такой же и на хост. Для нашего тестового сервера с CentOS мы создали отдельный /etc/sysconfig/network-scripts/ifcfg-eth0:0, с указанием адреса, маски и шлюза.

2) Используем iptables
Если для контейнеров используются приватные адреса и вы хотите предоставить им доступ в Интернет - необходимо настроить SNAT. Из интернета на контейнер - соответственно, DNAT. Подробную инструкции вы можете найти на официальном ресурсе OpenVZ - https://openvz.org/Nat

Для SNAT используем POSTROUTING:

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

где src_net - адрес контейнера; ip_address - адрес хост-ноды.

Для DNAT используем PREROUTING:

  1. iptables -t nat -A PREROUTING -p tcp -d ip_address --dport port_num -i eth0 -j DNAT --to-destination ve_address:dst_port_num

где ve_address -адрес контейнера, dst_port_num - порт, используемый службой, которую необходимо сделать доступной, ip_address - адрес хост-ноды, port_num - порт на хост-ноде, который будет занят перенаправлением (внимание, если какие-то службы используют этот порт - он станет недоступным).