Иногда серверу нужно ходить в интернет с двух разных адресов: например, часть запросов к внешнему API отправлять с одного IP, а часть — с другого, или разделить по адресам рассылку и остальной трафик. На сервере Fatmetal это делается без второго сервера: второй адрес даёт частная сеть.
Проброс портов для этого не подходит: он работает только для входящих соединений.
Инструкция проверена 05.11.2026 на Ubuntu 24.04 в зоне ryazan-2, в том числе после перезагрузки сервера.
Как это устроено
- Первый адрес — внешний IP самого сервера. С него по умолчанию идут все исходящие соединения.
- Второй адрес — публичный адрес частной сети. С него уходят соединения, привязанные к внутреннему адресу сервера в этой сети.
1. Подключите сервер к частной сети
В личном кабинете, в разделе «Частные сети», создайте сеть в зоне вашего сервера и подключите к ней сервер кнопкой «Подключить сервер». Сеть — отдельная услуга, цена указана в кабинете. Частные сети есть не во всех зонах: в ryazan-2 есть.
Публичный адрес сети указан на её странице. Внутренний адрес сервера в сети — в таблице «Серверы» на той же странице.
Если интерфейс частной сети на сервере не поднялся сам (в выводе ip -br a он выключен), включите на нём получение адреса по DHCP.
2. Настройте маршрут для второго адреса
Создайте файл /etc/netplan/60-second-ip.yaml:
network:
version: 2
ethernets:
ens4:
dhcp4: true
routes:
- to: default
via: 10.1.1.1
table: 100
routing-policy:
- from: 10.1.1.189
table: 100
Подставьте свои значения:
| В примере | Что это | Где взять |
|---|---|---|
ens4 |
интерфейс частной сети | ip -br a — интерфейс с внутренним адресом сети |
10.1.1.1 |
шлюз сети | первый адрес диапазона сети |
10.1.1.189 |
внутренний адрес сервера в сети | страница сети в кабинете |
Примените:
sudo chmod 600 /etc/netplan/60-second-ip.yaml
sudo netplan apply
Настройка сохраняется после перезагрузки.
Чтобы сначала проверить без записи в файл (действует до перезагрузки):
sudo ip route replace default via 10.1.1.1 dev ens4 table 100
sudo ip rule add from 10.1.1.189 table 100
3. Выберите адрес в задачах
- По умолчанию соединения идут с внешнего IP сервера.
- Чтобы выйти с адреса сети, привяжите соединение к внутреннему адресу сервера в сети:
curl --interface 10.1.1.189 …или параметр bind / source address в настройках приложения.
Проверка
curl -4 ifconfig.me # внешний IP сервера
curl --interface 10.1.1.189 ifconfig.me # публичный адрес сети
Первая команда покажет IP сервера, вторая — публичный адрес частной сети.
Ограничения
- Инструкция для систем с netplan — Ubuntu и Debian из наших образов. На AlmaLinux и Rocky Linux сетью управляет NetworkManager, там настройка другая, и этот вариант не проверялся.
- Входящие соединения на адрес сети приходят только через проброс портов этой сети.