Инструкции#

Конфигурирование присоединённых интерфейсов из разных подсетей#

Конфигурировать вручную присоединённые интерфейсы из разных подсетей в ОС семейства UNIX#

Инструкция описывает минимальную конфигурацию присоединённых интерфейсов для корректной работы, что позволит подключать несколько интерфейсов, созданных в разных подсетях и имеющих разные Elastic IP-адреса, к одному экземпляру.

Переменные, необходимые для конфигурирования интерфейсов
# Имя интерфейса, можно узнать из вывода команды "ip a", может быть как eth, так и ens, и тд.
# В примере будем использовать eth1.
interface_name="eth1"
# rtable — таблица маршрутизации, можно использовать любую с условием, что для каждого интерфейса она будет разной.
# Для примера будем использовать 10000 + номер интерфейса.
rtable="10001"
# gateway — шлюз подсети, имеет первый адрес в CIDR-блоке, для примера, в CIDR-блоке 172.31.1.0/24 шлюз будет 172.31.1.1
gateway="172.31.1.1"
# CIDR-блок является подсетью, к которой присоединён интерфейс.
cidr="172.31.1.0/24"
# primary_ipv4 — IP-адрес, выделенный интерфейсу.
primary_ipv4="172.31.1.4"
Debian 8 и старше, а также Ubuntu до версии 18.04
# Важно, чтобы в файле /etc/network/interfaces была строка: source /etc/network/interfaces.d/*
# Также для некоторых версий в файле /etc/network/interfaces может быть предустановленная конфигурация интерфейсов,
# из-за которой могут возникнуть конфликты.
# Далее необходимо выполнить:
cat <<- EOF > /etc/network/interfaces.d/config-${interface_name}.cfg
auto ${interface_name}
allow-hotplug ${interface_name}
iface ${interface_name} inet dhcp
post-up ip route add default via ${gateway} dev ${interface_name} table ${rtable}
post-up ip route add ${cidr} dev ${interface_name} proto kernel scope link src ${primary_ipv4} table ${rtable}
post-down ip route del default via ${gateway} dev ${interface_name} table ${rtable}
post-down ip route del ${cidr} dev ${interface_name} proto kernel scope link src ${primary_ipv4} table ${rtable}
EOF
ip rule add from ${primary_ipv4} lookup ${rtable}
ifup ${interface_name}

Ознакомьтесь с дополнительной информацией по настройке интерфейсов для Debian и Ubuntu 16.04.

CentOS 7 и старше, а также Fedora 28 и старше
# Необходимо выполнить:
hwaddr=$(cat /sys/class/net/${interface_name}/address 2>/dev/null)
cat <<- EOF > /etc/sysconfig/network-scripts/ifcfg-${interface_name}
DEVICE=${interface_name}
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
PEERDNS=no
HWADDR=${hwaddr}
DEFROUTE=no
EOF
ip rule add from ${primary_ipv4} lookup ${rtable}
ip route add default via ${gateway} dev ${interface_name} table ${rtable}
ip route add -net ${cidr} dev ${interface_name} proto kernel scope link src ${primary_ipv4} table ${rtable}
ifup ${interface_name}
Ubuntu 18 и старше
# Необходимо выполнить:
cat <<- EOF > /etc/netplan/config-${interface_name}.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    ${interface_name}:
    dhcp4: true
    dhcp4-overrides:
            use-routes: false
    routes:
      - to: 0.0.0.0/0
        via: ${gateway}
        table: ${rtable}
      - to: ${cidr}
        via: ${gateway}
        table: ${rtable}
EOF
ip rule add from ${primary_ipv4} lookup ${rtable}
ip link set ${interface_name} up

Дополнительную информацию по настройке интерфейсов можно найти по ссылкам:

Автоматически конфигурировать присоединённые интерфейсы из разных подсетей в ОС семейства UNIX#

Для автоматической конфигурации присоединенных интерфейсов можно воспользоваться образами, предоставляемыми К2 Облаком, с подписью [Cloud Image], в которых установлен пакет c2-ec2-netutils, данная утилита выполняет следующие действия:

  • При подключении интерфейса к запущенной виртуальной машине:

    • Создаёт конфигурацию интерфейса, используя Instance Metadata API. Конфигурация будет расположена по дефолтному пути в зависимости от ОС.

    • Добавляет правила маршрутизации.

    • Добавляет необходимые маршруты.

    • Поднимает интерфейс.

  • При подключении интерфейса к выключенной виртуальной машине:

    • После старта виртуальной машины отработает сервис ec2ifscan, который произведет настройку.

    • Если после старта есть интерфейсы которые по каким-либо причинам не настроились, можно запустить сервис сканирования вручную: systemctl start ec2net-scan.service.

  • При отключении интерфейса от рабочей виртуальной машины:

    • Вся конфигурация будет удалена.

  • При отключении интерфейса от выключенной виртуальной машины:

    • Конфигурация не будет удалена, но при следующем присоединении интерфейса происходит валидация mac-адреса, если он не совпадает, то конфигурация генерируется заново.

В сгенерированной конфигурации есть параметр EC2SYNC, который имеет дефолтное значение yes. При значении no конфигурация интерфейса не будет изменяться. При отключении интерфейса данная конфигурация не удалится, данную возможность можно использовать при необходимости создания собственной конфигурации интерфейса. Важно, структура записи EC2SYNC неизменяемая, меняться может только значение параметра, которое может быть yes или no.

  • Для удаления конфигурации интерфейса, маршрутов и перевода интерфейса в состоянии DOWN можно воспользоваться командами:

    • Для CentOS: systemctl stop ec2net-ifup@<interface>.service

    • Для Ubuntu: ec2ifdown <interface>

  • Для восстановления интерфейса и его конфигурации после удаления конфигураций можно воспользоваться командами:

    • Для CentOS: systemctl start ec2net-ifup@<interface>.service

    • Для Ubuntu: ec2ifup <interface>

На текущий момент функциональность доступна в образах К2 Облака [Cloud Images]:

  • CentOS 7.5

  • CentOS 7.8

  • CentOS 8.2

  • Ubuntu 18.04

  • Ubuntu 20.04

  • Debian 8

  • Debian 9

  • Debian 10

Исходный код можно найти по ссылке.

Автоматически конфигурировать присоединённые интерфейсы из разных подсетей в ОС Windows#

Для корректной работы нескольких интерфейсов, созданных в разных подсетях, имеющих разные Elastic IP-адреса и подключённых к одному экземпляру виртуальной машины Windows, при первом подключении необходимо разрешить возможность обнаружения ВМ другими сетями.

После подтверждения операционная система автоматически сконфигурирует соответствующие настройки. Затем произведите настройку политик безопасности брандмауэра Windows и добавьте разрешающее правило для протокола tcp и порта 3389 в группах безопасности, назначенных на сетевые интерфейсы.

Для подключения к экземпляру из ОС Windows можно использовать любой RDP-клиент.