Homelab

Два сервера вместо одного: почему роутер живёт отдельно от сервисов

Почему роутер не должен жить на одном железе с медиатекой: как я разделил сеть и сервисы между мини-ПК и основным сервером на Proxmox.

Введение

В обзоре своего homelab я упомянул, что вся моя домашняя лаба держится на трёх машинах, и две из них — гипервизоры Proxmox. Одна маленькая на мини-ПК, другая — полноценный сервер с дисками и большим объемом памяти. Логичный вопрос: зачем два? Не проще ли купить один мощный компьютер и поселить на нём всё сразу?

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

Проблема: один компьютер, одна кнопка

Представьте, что роутер, который раздаёт интернет всей квартире, и медиатека с фильмами живут на одном компьютере. Пока всё работает, это удобно: одна коробка, одна розетка, одно место для администрирования.

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

Или хуже: новый сервис, с которым вы экспериментируете, съедает всю оперативную память, и сервер начинает тормозить. Тормозит всё — включая роутер. Следовательно и весь интернет в доме тормозит.

Суть проблемы простая: сеть — это то, что должно работать всегда, а сервисы — то, с чем я постоянно что-то делаю. Пока они живут на одном железе, любая возня с сервисами угрожает работе сети.

Как это решается

Удобная аналогия — квартира. Есть водопровод и электропроводка: их проложили один раз, и трогать их лишний раз никто не хочет. И есть бытовая техника: её меняют, переставляют, ремонтируют, покупают новую. Никому не придёт в голову отключать воду в стояке, чтобы поменять стиральную машину.

В homelab то же самое:

  • Сетевая часть — роутер, контроллер коммутатора, VPN для подключения к дому снаружи. Меняется редко, должна работать всегда. Ей почти не нужны ресурсы: роутеру для домашней сети хватает пары ядер и нескольких гигабайт памяти.
  • Прикладная часть — фотоархив, медиатека, менеджер паролей, видеонаблюдение и всё остальное. Меняется постоянно, требует много памяти, дисков и процессора. Перезагружать её не страшно — интернет при этом остаётся.

Отсюда решение: развести эти части по разным компьютерам. Маленький, тихий и экономичный — под сеть. Большой, с дисками — под сервисы. Тогда перезагрузка большого сервера для семьи выглядит как «на пару минут пропали фильмы», а не «пропал весь интернет».

Как сделано у меня

Обе машины работают под Proxmox VE — гипервизором, который превращает один компьютер в несколько независимых. Подробно про неё будет следующая статья, а пока достаточно знать: на каждом компьютере живут отдельные виртуальные машины и контейнеры, и каждый из них ведёт себя как самостоятельный сервер.

PVE-Mini: сетевая машина

Мини-ПК на процессоре Intel N150. Корпус размером с бутерброд, один SSD на 500 ГБ. Главное в нём — два сетевых порта Intel I226-V. Именно ради них он и выбран: один порт смотрит в интернет, второй — в домашнюю сеть.

На нём живут четыре гостя:

ID Что это Тип Память Зачем
101 OPNsense VM 6 ГБ Роутер и файрвол всего дома, DHCP, DNS, NTP
102 Omada LXC 4 ГБ Контроллер управляемого коммутатора
103 AmneziaWG LXC 512 МБ VPN для подключения к дому снаружи
104 Xray VM 1 ГБ Прокси для гео-обхода

Всё, что касается движения трафика, собрано здесь. На этой машине нет ни одного пользовательского сервиса, и я захожу на неё крайне редко.

Самое интересное — как подключены сетевые порты. Кабель провайдера заходит прямо в мини-ПК, в первый порт. Второй порт идёт в управляемый коммутатор и несёт сразу все VLAN домашней сети. Внутри Proxmox каждый порт превращён в виртуальный коммутатор — мост (bridge), к которому подключаются гости:

кабель провайдера ──► nic0 ──► vmbr0 ──► OPNsense (WAN)

коммутатор ◄──────── nic1 ──► vmbr1 ──► OPNsense (все внутренние сети)
                                    ├──► Omada
                                    ├──► AmneziaWG
                                    └──► Xray

Так выглядит сетевая конфигурация хоста, файл /etc/network/interfaces:

auto lo
iface lo inet loopback

iface nic0 inet manual
iface nic1 inet manual

auto vmbr0
iface vmbr0 inet manual
    bridge-ports nic0
    bridge-stp off
    bridge-fd 0
    bridge-vlan-aware yes
    bridge-vids 2-4094

auto vmbr1
iface vmbr1 inet manual
    bridge-ports nic1
    bridge-stp off
    bridge-fd 0
    bridge-vlan-aware yes
    bridge-vids 2-4094

auto vmbr1.10
iface vmbr1.10 inet static
    address 192.168.10.11/24
    gateway 192.168.10.1

Что здесь важно:

  • vmbr0 — мост в сторону интернета. У него нет IP-адреса на самом хосте: inet manual означает «мост есть, но Proxmox в нём не участвует». Интернет целиком принадлежит виртуальной машине с OPNsense. Сам гипервизор из интернета не виден вообще.
  • vmbr1 — мост в сторону домашней сети. По одному кабелю через него идут все VLAN сразу, каждый пакет помечен тегом с номером своего VLAN (стандарт 802.1Q). Подробно про VLAN и теги будет в блоке про сеть; пока достаточно знать, что bridge-vlan-aware yes разрешает мосту различать теги и подключать гостей к нужному VLAN.
  • vmbr1.10 — адрес самого Proxmox в VLAN 10 (MGMT). Это сеть управления, куда нельзя попасть ни из гостевого Wi-Fi, ни с телевизора.

PVE: основная машина

Вторая машина — полноценный сервер: 62 ГБ оперативной памяти, NVMe-диск под систему и гостей и несколько дисковых пулов под данные. На нём живёт около двадцати пяти гостей: reverse-proxy, менеджер паролей, мониторинг, медиасервер, фотоархив, видеонаблюдение, файловые шары, сервер документов, Home Assistant, общая база данных и так далее.

Сеть у него устроена проще: один мост на оба сетевых порта, и адрес хоста 192.168.10.12 в том же VLAN управления. Отдельного порта под интернет здесь нет и быть не должно — основной сервер ходит в интернет так же, как любое домашнее устройство, через роутер на PVE-Mini.

Про диски и то, как на них разложены данные, будет отдельная статья. Здесь важно другое: вся тяжёлая работа — транскодирование видео, распознавание лиц на фотографиях, запись с камер — происходит на этой машине и никак не задевает роутер.

Третья машина

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

Источник бесперебойного питания (ИБП)

Все три машины подключены к одному ИБП. Он подключён по USB к основному серверу, а мини-ПК и бекап сервер слушают его по сети. Если свет пропал надолго, каждая машина гасит своих гостей и только потом выключается сама.

Порядок запуска

Когда после отключения света всё включается обратно, важно, кто стартует первым. Сервисы, которые поднялись раньше роутера, не получат адрес и не найдут друг друга по именам.

Таким образом на PVE-Mini первым стартует OPNsense, и Proxmox выжидает 60 секунд, прежде чем запускать остальных.

Задаётся это одной командой на каждого гостя:

qm set 101 --onboot 1 --startup order=1,up=60,down=120
pct set 102 --onboot 1 --startup order=2
  • qm управляет виртуальными машинами, pct — контейнерами.
  • --onboot 1 — запускать гостя при старте хоста.
  • order — номер в очереди, при выключении очередь идёт в обратном порядке.
  • up=60 — сколько секунд ждать после запуска, прежде чем стартовать следующую очередь.
  • down=120 — сколько секунд дать гостю на корректное выключение.

Повтори у себя

Два компьютера с первого дня не нужны. Разделение — это не стартовая точка, а направление, в котором стоит двигаться. Я бы шёл так.

Шаг первый: один сервер, домашний роутер остаётся. Ставите Proxmox на любой компьютер, поднимаете на нём сервисы, а интернет по-прежнему раздаёт ваш обычный роутер — Keenetic, TP-Link или любой другой из магазина. Перезагрузка сервера не трогает сеть, потому что сеть — вообще не его забота. Это самый безопасный старт, и на нём можно жить годами. Большинство так и живет.

Шаг второй: захотелось своего роутера — берите под него отдельную коробку. Как только появляется желание заменить обычный роутер на что-то гибче — OPNsense или pfSense, чтобы разделить сеть на VLAN, поднять свой DNS и VPN, — не селите его на основной сервер. Подойдёт любой мини-ПК с двумя сетевыми портами. Смотрите на три вещи:

  • два порта Ethernet — не USB-адаптер, а два полноценных разъёма;
  • сетевые контроллеры Intel (I225, I226) — с ними у OPNsense и Proxmox меньше всего сюрпризов;
  • низкое потребление и тихое охлаждение — эта коробка будет работать круглосуточно годами.

Минимальная сеть такого мини-ПК, пока без VLAN, выглядит так:

auto vmbr0
iface vmbr0 inet manual
    bridge-ports nic0
    bridge-stp off
    bridge-fd 0

auto vmbr1
iface vmbr1 inet static
    address 192.168.1.2/24
    gateway 192.168.1.1
    bridge-ports nic1
    bridge-stp off
    bridge-fd 0

Порт nic0 — к провайдеру, отдаёте его целиком виртуальной машине с роутером. Порт nic1 — в домашнюю сеть, на нём же адрес самого Proxmox. VLAN можно добавить позже, когда до них дойдёт дело.

Шаг третий: переносите на мини-ПК всё сетевое. VPN для подключения к дому, контроллер точек доступа, DNS-фильтр — всё, без чего не работает сеть, живёт рядом с роутером. Всё, без чего сеть работает, — на основном сервере.

Совет

Простой тест, куда поселить новый сервис: «Если этот сервис упадёт, у домашних пропадёт интернет?» Если да — на сетевую машину. Если нет — на основную.

Итоги

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

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

В следующей статье разберём сам Proxmox: как один компьютер превращается в десяток серверов, что такое мосты и как создать первую виртуальную машину.

Esc