На этой странице
Серверы в одной локации могут обмениваться данными по частной сети — VLAN, выделенной только под ваши серверы. Она бесплатна, а внутренний трафик не тарифицируется. Используйте её для репликации, трафика кластеров и резервного копирования — всего, что никогда не должно идти через публичные адреса.
Что такое частная сеть
- VLAN только для ваших серверов. Это сеть второго уровня (L2), отделённая от публичного интерфейса и его адресов.
- Бесплатно. Частная сеть ничего не стоит, а внутренний трафик не тарифицируется.
- Только в пределах одной локации. Серверы во Франкфурте и Амстердаме не могут находиться в одной VLAN. Чтобы связать локации, поднимите поверх публичной сети зашифрованный туннель, например WireGuard: трафик там всё равно безлимитный.
- Адресация — ваша. Частные IPv4-адреса вы назначаете сами из диапазона вроде
10.20.0.0/24. Выберите диапазон, который не пересекается с сетями вашего VPN, офиса или контейнеров: Docker по умолчанию использует172.17.0.0/16.
Для каждого сервера нужны два параметра: VLAN ID вашей частной сети и физический интерфейс, через который она проходит. Если их у вас нет, запросите у наших инженеров поддержки. Подробнее — на странице о частной сети.
Небольшой план адресации убережёт от ошибок в будущем:
| Сервер | Роль | Частный адрес |
|---|---|---|
| db1 | Основной сервер PostgreSQL | 10.20.0.11 |
| db2 | Реплика PostgreSQL | 10.20.0.12 |
| backup1 | Хранилище резервных копий | 10.20.0.30 |
1. Создайте интерфейс VLAN в Netplan
В Ubuntu 24.04 опишите частную сеть в отдельном файле, чтобы не затрагивать публичную конфигурацию. Сохраните следующее как /etc/netplan/60-private.yaml:
network:
version: 2
vlans:
vlan100:
id: 100
link: enp1s0f0
addresses:
- 10.20.0.11/24Замените 100 на свой VLAN ID, а enp1s0f0 — на родительский интерфейс, который уже должен быть описан в основном файле Netplan. Шлюз не указывайте: маршрут к 10.20.0.0/24 создаётся автоматически, а маршрут по умолчанию остаётся на публичном интерфейсе.
Если же частная сеть приходит на второй порт без тегов (untagged), пропустите секцию vlans и назначьте адрес этому порту в секции ethernets.
Примените конфигурацию с автоматическим откатом, проверьте интерфейс и убедитесь, что соседний сервер отвечает:
chmod 600 /etc/netplan/60-private.yaml
netplan try
ip -br addr show vlan100
ping -c 3 10.20.0.122. Проверьте MTU
Все хосты в VLAN должны использовать одинаковый MTU — по умолчанию 1500 байт. Убедитесь, что пакеты полного размера проходят без фрагментации:
ping -M do -s 1472 -c 3 10.20.0.12Полезная нагрузка 1472 байта плюс 28 байт заголовков IP и ICMP дают ровно 1500. Если короткие пинги проходят, а этот нет, значит, какое-то устройство на пути использует меньший MTU.
Jumbo-кадры (MTU 9000) снижают накладные расходы на каждый пакет при передаче больших объёмов, но помогают, только если их поддерживает весь путь. Прежде чем увеличивать MTU, проконсультируйтесь с нашими инженерами поддержки, затем задайте его на каждом сервере и проверьте с -s 8972. Если связываете локации через WireGuard, оставьте его MTU по умолчанию — 1420: так остаётся место для заголовков туннеля.
3. Настройте файрвол на частном интерфейсе
Частная — не значит доверенная: скомпрометированный сервер в VLAN может добраться до всех остальных. В ufw сохраните политику запрета по умолчанию и открывайте только те порты, которые нужны каждому серверу, и только для частного диапазона:
ufw allow in on vlan100 from 10.20.0.0/24 to any port 5432 proto tcp
ufw allow in on vlan100 from 10.20.0.0/24 to any port 22 proto tcpКроме того, привяжите внутренние сервисы к частному адресу, чтобы они никогда не слушали публичный интерфейс:
- PostgreSQL:
listen_addresses = 'localhost,10.20.0.11' - MySQL и MariaDB:
bind-address = 10.20.0.11 - Redis:
bind 127.0.0.1 10.20.0.11
Затем выполните ss -tlnp, чтобы увидеть, на каком адресе слушает каждый сервис.
Сценарии использования
Репликация баз данных
Потоковая репликация поддерживает актуальность резервной копии (standby) базы данных PostgreSQL через VLAN. На основном сервере разрешите в pg_hba.conf подключение пользователя репликации с частного адреса реплики:
host replication replicator 10.20.0.12/32 scram-sha-256На реплике остановите PostgreSQL, очистите каталог данных и склонируйте основной сервер. Параметр -R сам запишет конфигурацию standby:
sudo -u postgres pg_basebackup -h 10.20.0.11 -U replicator -D /var/lib/postgresql/16/main -R -X stream -PБольше советов по подбору серверов для баз данных — на странице решений для баз данных.
Кластер Proxmox VE
Corosync, движку кластера Proxmox, нужна низкая и стабильная задержка — именно её обеспечивают серверы в одной локации. Proxmox VE использует /etc/network/interfaces, а не Netplan, поэтому опишите VLAN там и примените настройки командой ifreload -a:
auto enp1s0f0.100
iface enp1s0f0.100 inet static
address 10.20.0.21/24Затем создайте кластер на первом узле и подключите к нему остальные, привязав трафик кластера к частным адресам:
pvecm create prod --link0 10.20.0.21 # on the first node
pvecm add 10.20.0.21 --link0 10.20.0.22 # on each additional nodeУстановка и настройка самого Proxmox VE описаны в нашем руководстве по Proxmox.
Резервное копирование
Отправляйте ночные резервные копии на второй сервер в той же локации, например на Storage 264 в Ашберне, Лос-Анджелесе, Амстердаме или Франкфурте:
rsync -aHAX --numeric-ids --delete /srv/ backup@10.20.0.30:/backups/db1/srv/Храните ещё одну копию в другой локации. Резервная копия в той же локации не защитит от происшествия, которое затронет всю площадку.