Как добавить дополнительный 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
для отображения запросов, отправленных на интерфейс: