Из этой статьи вы узнаете о основных и дополнительных IP-адресах.
Основной IP-адрес
IPv4
Основной IP выделенного корневого сервера обычно находится в подсети /26 или /27. Чтобы избежать случайного использования внешнего IP-адреса, наша инфраструктура отклоняет любые Ethernet-пакеты, не адресованные адресу шлюза. Для доступа к серверу в той же подсети сетевая конфигурация должна быть настроена как конфигурация “точка-точка”. Наши стандартные образы уже содержат эту конфигурацию, чтобы весь трафик маршрутизировался через шлюз.
Это делается с помощью конфигурации “точка-точка” между основным IP и шлюзом. Основной IP настраивается с маской подсети 255.255.255.255 (/32)
. Таким образом, сервер считает себя одиноким и не будет отправлять никаких пакетов напрямую. Для доступа к другим серверам, а также к Интернету, требуется явный хост-маршрут для шлюза, дополнительно к маршруту по умолчанию.
etc/network/interfaces (ENI)
Когда настройка сети выполняется через /etc/network/interfaces, это легко делается путем добавления опции pointopoint <IP шлюза>
в конфигурацию.
## Пример /etc/network/interfaces для корневого сервера
# Петлевой адаптер
auto lo
iface lo inet loopback
#
# LAN интерфейс
auto eth0
iface eth0 inet static
# Основной IP-адрес сервера
address 192.168.0.250
# Маска подсети 255.255.255.255 (/32) независимо от
# реального размера подсети (например, /27)
netmask 255.255.255.255
# явный хост-маршрут к шлюзу
gateway 192.168.0.1
pointopoint 192.168.0.1
netplan
При использовании netplan это делается с использованием ключевого слова on-link в конфигурации:
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 192.168.0.250/32
routes:
- to: 0.0.0.0/0
via: 192.168.0.1
on-link: true
IPv6
В дополнение к основному IPv4-адресу каждому серверу присваивается подсеть IPv6 /64. Эта подсеть маршрутизируется на link-local IPv6-адрес, который генерируется из MAC-адреса сервера. В отличие от конфигурации IPv4, для IPv6 не требуется конфигурации “точка-точка”.
Шлюз всегда fe80::1
## Пример /etc/network/interfaces для корневого сервера
# Петлевой адаптер
auto lo
iface lo inet loopback
#
# IPv6 LAN
auto eth0
iface eth0 inet6 static
# Один IPv6-адрес из подсети /64
address 2001:db8:1234::1
netmask 64
gateway fe80::1
IPv4 + IPv6
Ожидается, что в ближайшие годы IPv4 и IPv6 будут использоваться параллельно. Просто объедините оба файла конфигурации и опустите дублирующиеся записи.
etc/network/interfaces (ENI)
## Пример /etc/network/interfaces для корневого сервера
# Петлевой адаптер
auto lo
iface lo inet loopback
#
# LAN интерфейс
auto eth0
iface eth0 inet static
# Основной IP-адрес сервера
address 192.168.0.250
# Маска подсети 255.255.255.255 (/32) независимо от
# реального размера подсети (например, /27)
netmask 255.255.255.255
# явный хост-маршрут к шлюзу
gateway 192.168.0.1
pointopoint 192.168.0.1
#
iface eth0 inet6 static
# один IPv6-адрес из назначенной подсети
address 2001:db8:1234::1
netmask 64
gateway fe80::1
netplan
Конфигурация через netplan для Ubuntu 22.04 и позднее или с использованием netplan 1.03 и позднее
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 192.168.0.250/32
- 2001:db8:1234::1/64
routes:
- to: default
via: 192.168.0.1
on-link: true
- to: default
via: fe80::1
Конфигурация для Ubuntu 21.04 и более ранних версий
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 192.168.0.250/32
- 2001:db8:1234::1/64
routes:
- to: 0.0.0.0/0
via: 192.168.0.1
on-link: true
gateway6: fe80::1
Дополнительные IP-адреса (хост)
Для наших выделенных корневых серверов вы можете заказать до 6 дополнительных одиночных IP-адресов. Сетевая конфигурация похожа в обоих случаях.
Чтобы использовать дополнительные адреса на сервере (без виртуализации), вам понадобится пакет iproute2
и сервисная программа ip
. Конфигурация с использованием псевдонимов интерфейсов (например, eth0:1
, eth0:2
и т. д.)
устарела; их больше не следует использовать. Чтобы добавить адрес, выполните следующую команду:
ip addr add 10.4.2.1/32 dev eth0
Команда ip addr
показывает активные в данный момент IP-адреса. Сервер использует всю подсеть, поэтому здесь также полезно добавлять адреса с префиксом /32, что означает маску подсети 255.255.255.255
.
etc/network/interfaces (ENI)
В /etc/network/interfaces
вставьте следующие две строки в соответствующий интерфейс (например, eth0
):
up ip addr add 10.4.2.1/32 dev eth0
down ip addr del 10.4.2.1/32 dev eth0
Для up
и down
ожидается всего одна строка кода оболочки, и это можно повторить для нескольких адресов. Недостатком является необходимость перечислять как имя интерфейса, так и адрес дважды. Если у вас много IP-адресов, файл конфигурации становится запутанным и подверженным ошибкам. И если вы измените данные, вам нужно будет настроить все записи.
netplan
При использовании netplan просто добавьте дополнительные IP-адреса как /32 в раздел addresses
Дополнительные IP-адреса (виртуализация)
С виртуализацией дополнительные IP-адреса используются через гостевую систему. Чтобы сделать их доступными через Интернет, вам нужно настроить конфигурацию в системе-хозяине соответственно для пересылки пакетов. Существует два способа сделать это для дополнительных одиночных IP-адресов: методы маршрутизации и моста.
Маршрутизированный (brouter)
В этом типе конфигурации пакеты маршрутизируются. Для этого метода вам необходимо настроить дополнительный мост с почти такой же конфигурацией (без шлюза), что и у eth0.
Guest:
Host:
auto eth0
iface eth0 inet static
address (Основной IP)
netmask 255.255.255.255
pointopoint (IP Шлюза)
gateway (IP Шлюза)
#
iface eth0 inet6 static
address 2001:db8:1234::1
netmask 128
gateway fe80::1
#
auto virbr1
iface virbr1 inet static
address (Основной IP)
netmask 255.255.255.255
bridge_ports none
bridge_stp off
bridge_fd 0
pre-up brctl addbr virbr1
up ip route add (Дополнительный IP)/32 dev virbr1
down ip route del (Дополнительный IP)/32 dev virbr1
#
iface virbr1 inet6 static
address 2a01:4f8:XX:YY::1
netmask 64
Guest:
auto eth0
iface eth0 inet static
address (Дополнительный IP)
netmask 255.255.255.255
pointopoint (Основной IP)
gateway (Основной IP)
#
iface eth0 inet6 static
address 2a01:4f8:XX:YY::4
netmask 64
gateway 2a01:4f8:XX:YY::1
Мост
При настройке в режиме “моста” пакеты передаются напрямую. Гостевая система ведет себя так, как если бы она была независимой. Это делает MAC-адреса гостевой системы видимыми снаружи, поэтому вам нужно запросить виртуальный MAC-адрес для каждого отдельного IP-адреса. (Подайте запрос в службу поддержки на Robot). Затем назначьте виртуальный MAC-адрес сетевой карте гостя. Мост получает ту же конфигурацию сети, что и eth0.
# удалите или отключите конфигурацию для eth0
#auto eth0
#iface eth0 inet static
#
auto br0
iface br0 inet static
address (Основной IP)
netmask (как и у eth0, например: 255.255.255.254)
gateway (тот же, что и для основного IP)
bridge_hw eth0 (требуется с Debian 11 'bulleye')
bridge_ports eth0
bridge_stp off
bridge_fd 1
bridge_hello 2
bridge_maxage 12
Конфигурация eth0
опущена без замены.
Конфигурация eth0
опущена без замены.