Сетевые настройки в кластерах с технологией VPU

Часть виртуальных серверов VDS/VPS на виртуализации KVM открывается в кластере с поддержкой технологии VPU (vlan-per-user).

Из-за программной несовместимости, панели управления BILLmanager (личный кабинет, кнопка IP-адреса) и VMmanager (управление виртуальным контейнером, кнопка IP-адреса) показывают неверные сетевые настройки для всех IP-адресов контейнера.

Автоматически сеть настраивается правильно, а дополнительные IP, заказанные из личного кабинета, добавляются как alias к основному. Если же вы измените основной IP-адрес на дополнительный или сделаете другие ручные настройки сети, то данные, указанные в панелях управления, работать не будут.

 

Правильные сетевые настройки

Сетевой префикс всех IP-адресов: <ip-адрес>/32

Маска подсети: 255.255.255.255

Шлюз: 10.0.0.1

 

Примеры конфигурации сети

На кластерах с VPU нет общего broadcast-домена, все адреса настраиваются с префиксом /32 (использование сетевой маски 255.255.255.255). В этом случае сервер считает, что он один в своей сети и не будет посылать пакеты напрямую узлам, все будет пересылаться исключительно через шлюз. Однако, при этом нужно явно задать маршрут до шлюза.

Установите 10.0.0.1 как IP-адрес шлюза - он один на всех хостах, чтобы избежать проблем при миграции VDS/VPS, иначе нужно было бы менять сетевые настройки.

 

ОС Debian

В файле конфигурации сетевых интерфейсов добавьте опцию:

pointopoint 10.0.0.1

 

ОС Ubuntu

root@gorskiy:~# cat /etc/network/interfaces
iface ens3 inet static
address <Основной IP адрес машины>
netmask 255.255.255.255
gateway 10.0.0.1
pointopoint 10.0.0.1

ОС Ubuntu 18

root@ubuntu:~# cat /etc/netplan/01-netcfg.yaml 
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      addresses: [ <Основной IP адрес машины>/32 ]
      routes:
          - to: 0.0.0.0/0
            via: 10.0.0.1
            on-link: true
      nameservers:
          addresses: [ 8.8.4.4, 8.8.8.8 ]
      optional: true

 

ОС CentOS

В CentOS установите значение опции SCOPE, пример:

[root@led-baza ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
IPADDR=<Основной IP адрес машины>
NETMASK=255.255.255.255
SCOPE="peer 10.0.0.1"
DNS1="188.120.247.2"

Проверьте наличие файла /etc/sysconfig/network-scripts/route-eth0 вида:

ADDRESS0=0.0.0.0
NETMASK0=0.0.0.0
GATEWAY0=10.0.0.1

 

ОС FreeBSD

Пример /etc/rc.conf:

# IPv4 основной адрес
ifconfig_re0="inet <основной-ip-адрес>/32"

# IPv4 примеры алиасов
#ifconfig_re0_alias0="inet <ip-адрес>/32"
#ifconfig_re0_alias1="inet <ip-адрес>/32"

# Сетевой интерфейс с доступом до шлюза
gateway_if="re0"
# IPv4 адрес шлюза
gateway_ip4="10.0.0.1"

static_routes="gateway default"
route_gateway="-host $gateway_ip4 -interface $gateway_if"
route_default="default $gateway_ip4"

Серверы в одной подсети не могут обмениваться пакетами напрямую. Такие пакеты следует принудительно отправлять через шлюз по умолчанию.

Обратите внимание: не используйте ключевое слово defaultrouter при такой настройке!

 

Добавление дополнительного IP-адреса

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

ip addr add <новый-ip-адрес>/32 dev eth0

 

Через конфигурационные файлы в Ubuntu для сохранения после перезагрузки.

Добавьте в файл /etc/network/interfaces под соответствующим интерфейсом (например, eth0) следующие строки:

up ip addr add <новый-ip-адрес>/32 dev eth0
down ip addr del <новый-ip-адрес>/32 dev eth0

 

В Ubuntu 18 для добавления дополнительного адреса IPv4 <новый-ip-адрес> приведите строки

ens3:
  addresses: [ <Основной IP адрес машины>/32 ]

к виду:

ens3:
  addresses: [ <Основной IP адрес машины>/32, <новый-ip-адрес>/32]

 

Для добавления дополнительного адреса IPv6 "2a01:230:X:X::X" с маской сети "64" и шлюзом "2a01:230:X:X::1" приведите строки

ethernets:
  ens3:
    addresses: [ <Основной IP адрес машины>/32 ]
    routes:
        - to: 0.0.0.0/0
          via: 10.0.0.1
          on-link: true
    nameservers:
        addresses: [ 8.8.4.4, 8.8.8.8 ]

к виду:

ethernets:
  ens3:
    addresses: [ <Основной IP адрес машины>/32, 2a01:230:X:X::X/64 ]
    gateway6: 2a01:230:X:X::1
    routes:
        - to: 0.0.0.0/0
          via: 10.0.0.1
          on-link: true
    nameservers:
        addresses: [ 8.8.4.4, 8.8.8.8, 2001:4860:4860::8844, 2001:4860:4860::8888]

 

В CentOS, создайте файл etc/sysconfig/network-scripts/ifcfg-eth0:1

DEVICE=eth0:1
IPADDR=новый-ip-адрес
NETMASK=255.255.255.255

 

Настройка дополнительных IP-адресов и подсетей в FreeBSD производится путём добавления алиасов к интерфейсам в файле /etc/rc.conf. Для каждой подсети (или если дополнительный IP-адрес находится в сети отличной от сети основного IP-адреса) следует указывать правильную маску для первого IP-адреса из сети. Остальные адреса сети указываются с маской /32 (255.255.255.255).

 

Для применения изменений перезапускаем сеть

# service network restart

или

# service networking restart

 

После ручного добавления IP-адреса сервер необходимо перезагрузить