Поиск по сайту:

Как добавить дополнительный IP-адрес на ваш Linux-сервер


Большинство серверов Linux, включая виртуальные частные серверы, имеют общедоступный IP-адрес, к которому вы можете подключиться. Однако физическая сетевая карта, используемая для соединения, может поддерживать любое количество IP-адресов. Вот как добавить новый на ваш сервер.

Зачем использовать другой IP-адрес?

Иметь несколько адресов удобно по ряду причин. Основным преимуществом является возможность запуска нескольких приложений на одном порту, но по разным адресам. Например, вы не можете запускать NGINX и Apache одновременно, так как они оба являются веб-серверами, которым необходимо использовать порт 80. Однако, если вы запустите NGINX, привязанный к одному IP-адресу, а Apache, привязанный к другому, вы можете сделать это без каких-либо конфликтов.

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

Однако наличие нескольких фактических IP-адресов может быть намного проще без поддержки конфигурации обратного прокси-сервера. Вы просто запускаете сервисы по правильному адресу, и он будет слушать прямо по этому адресу.

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

Как получить больше IP-адресов?

В мире осталось конечное количество общедоступных IP-адресов, и большинство из них уже выделено интернет-компаниям. Чтобы получить больше, вам нужно будет купить или арендовать их у вашего хостинг-провайдера. У большинства основных облачных провайдеров есть возможность использовать дополнительные IP-адреса, но настройка будет зависеть от того, что вы используете.

Например, если вы используете AWS, у вас, вероятно, уже есть эластичный IP-адрес для ваших инстансов EC2. Однако вы можете просто добавить больше эластичных IP-адресов по цене 3,65 доллара США в месяц за каждый.

Другие облачные провайдеры могут разрешить вам покупать целые блоки адресов. OVH, один из крупнейших поставщиков выделенных серверов, предлагает блоки CIDR размером до /24 за единовременную плату.

Крупные корпорации, которые хотят напрямую владеть и контролировать большое количество адресного пространства IPv4, также могут приобретать целые блоки напрямую у IANA (через брокерскую компанию). Однако за это приходится платить большую сумму — часто более 50 долларов за адрес, а большие блоки стоят десятки или даже сотни тысяч долларов.

Как работают несколько IP-адресов?

Сеть в Linux немного странная. Каждая сетевая карта, физически подключенная к вашему серверу, будет отображаться в ip addr show как сетевой интерфейс, такой как eth0 или eno1. Также могут быть различные типы виртуальных интерфейсов, но все фактические соединения с сервером проходят через физический сетевой интерфейс.

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

Ключевым моментом здесь является то, что сетевой интерфейс вашего сервера должен быть настроен в программном обеспечении для получения этого запроса. Если ваш сервер не имеет адреса, добавленного в конфигурацию сетевого интерфейса, он не будет отвечать. Технически вы можете настроить свой сервер для прослушивания любого адреса, даже если он вам не принадлежит, хотя это ничего не даст.

IP-адреса выделяются блоками, представленными в нотации CIDR. Наименьший — /32, представляющий один адрес. Чем меньше число, тем больше адресов.

192.168.0.0/24 -> 192.168.0.0 to 192.168.0.255

Настройка Linux для использования нескольких IP-адресов

Конфигурация сети Linux может быть сложной, и существует множество инструментов, облегчающих ее. Одним из лучших является netplan, созданный командой разработчиков Ubuntu. Он настраивает сетевые интерфейсы с помощью простых шаблонов YAML. Он должен быть установлен по умолчанию на большинстве систем.

Создайте новый шаблон в /etc/netplan/config.yaml:

sudo nano /etc/netplan/config.yaml

Затем добавьте свою конфигурацию. Обратите внимание, что этот пример предназначен для интерфейса eno1, который может потребоваться изменить на eth0 или что-то подобное.

network:
    version: 2
    ethernets:
        eno1:
            addresses:
            - 123.1.2.3/32

Здесь можно указать несколько блоков адресов или отдельные IP-адреса в виде отдельных блоков /32.

После настройки запустите netplan try, чтобы протестировать его. Если конфиг неверный, то будет откат.

sudo netplan try

Если работает, примените конфиг:

sudo netplan apply

Вы можете отладить маршрутизацию, запустив tcpdump для отображения запросов, отправленных на интерфейс: