Виртуальной машине нужен публичный IP-адрес для доступа в сеть Интернет. Есть возможен также использовать приватные адреса. Для получения доступа к сети Интернет на виртуальной машине с приватным IP-адресом нужна дополнительная настройка.

Алгоритм настройки:

  1. На виртуальной машине и узле кластера должны быть адреса из одной подсети. Добавьте на узел кластера, на котором размещена виртуальная машина, приватный адрес. Например, создайте файл /etc/sysconfig/network-scripts/ifcfg-eth0:0 с указанием адреса, маски и шлюза;
  2. Настройте правила iptables. Для доступа виртуальной машины в Интернет нужно настроить SNAT. для доступа из Итернета к виртуальной машине — DNAT. Подробнее см. на официальном сайте OpenVZ.
    1. Для SNAT добавьте правило POSTROUTING:

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

      src_net — адрес виртуальной машины.

      ip_address — адрес узла кластера, на котором размещена виртуальная машина.

    2. Для DNAT добавьте правило PREROUTING:

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

      ve_address — адрес виртуальной машины.

      dst_port_num — порт, используемый службой, которую необходимо сделать доступной.

      ip_address — адрес узла кластера, на котором размещена виртуальная машина.

      port_num — порт на узле кластера, который будет занят перенаправлением.