Загрузка 0
ПОДЕЛИТЬСЯ

Мой блог

Листай вниз

Как я развернул полный сетевой стек на Raspberry Pi Zero и изменил свои взгляды

Как я развернул полный сетевой стек на Raspberry Pi Zero и изменил свои взгляды

Когда речь заходит о создании домашнего сетевого стека, многие представляют мощный старый ноутбук, сетевые коммутаторы или даже полноценные корпоративные серверы. Я решил поэкспериментировать и разместить всю необходимую инфраструктуру на миниатюрной плате Raspberry Pi Zero 2 W, и результаты меня приятно удивили.

Внешний вид одноплатного компьютера Raspberry Pi Zero 2 W
Миниатюрная плата Raspberry Pi Zero 2 W, ставшая основой для домашнего сервера.

Этот скромный мини-ПК успешно справляется с ролью сетевого DNS-резолвера, блокировщика рекламы и удобного центра мониторинга. Ниже я подробно расскажу, как мне удалось реализовать этот проект с помощью легковесной ОС DietPi и набора контейнеров.

Конфигурация сети и подготовка к запуску Pi-hole
Настройка сетевых параметров перед развертыванием DNS-фильтрации.

Выбор инструментов и операционной системы DietPi

После установки DietPi мне больше не хочется возвращаться к другим операционным системам для одноплатных компьютеров. Меня поразил богатый набор встроенных утилит, огромная база предустановленного софта и невероятная экономичность. В ходе моих тестов эта система потребляла всего около 70 МБ оперативной памяти, тогда как Armbian и официальная Raspberry Pi OS Lite требовали более 100 МБ.

Реклама
Развертывание Docker-контейнеров с сетевыми сервисами
Запуск Pi-hole и Unbound в изолированных контейнерах Docker.
Интерфейс управления Pi-hole и Unbound
Проверка работоспособности веб-портала Pi-hole после завершения настройки.
Интеграция систем мониторинга Beszel и Glance
Подключение легких инструментов мониторинга для контроля ресурсов платы.

Для подготовки microSD-карты я воспользовался стандартной утилитой Raspberry Pi Imager. Обычно я предпочитаю заранее настраивать беспроводную сеть и параметры SSH для удаленного доступа, но в этот раз подключил к плате USB-решение для проводного интернета через адаптер. Кабельное подключение работает гораздо стабильнее, что критично для сетевых проектов.

Развертывание сервисов в Docker и настройка Pi-hole с Unbound

Следующим шагом стало создание связки из Pi-hole и Unbound. Первая программа фильтрует рекламный трафик и DNS-запросы, а вторая работает как рекурсивный DNS-резолвер. Благодаря такому тандему мне больше не нужно зависеть от публичных провайдеров вроде Google. Кроме того, я установил Tailscale с помощью простой команды curl, что обеспечило безопасный удаленный доступ и поддержку HTTPS на случай необходимости.

Особенности контейнеризации и сетевой конфигурации

Почти все компоненты моего стека работают внутри Docker и Docker Compose, за исключением Tailscale, установленного напрямую в систему. Процесс настройки взаимодействия Unbound и Pi-hole потребовал определенного внимания к конфигурации сети, но в итоге оба контейнера заработали стабильно, открыв доступ к веб-панели Pi-hole. Мне также понадобилось зайти в настройки домашнего роутера и указать IP-адрес Raspberry Pi Zero 2 W в качестве основного DNS-сервера, чтобы все запросы перенаправлялись на порт 53 платы.

Хотя многие пользователи ограничиваются одной лишь установкой Pi-hole, добавление локального резолвера Unbound полностью избавляет от необходимости передавать запросы сторонним компаниям. Конечно, блокировка рекламы не работает внутри мобильных приложений вроде YouTube, но веб-страницы теперь загружаются без назойливых баннеров. Важно отметить, что нагрузка на мой сервер невелика: активными клиентами являются лишь мой персональный компьютер и телефон, тогда как остальные устройства обращаются к сети эпизодически.

Мониторинг сервера с помощью Beszel и Glance

Следить за состоянием системы через веб-интерфейс Pi-hole полезно, но специализированные инструменты мониторинга делают управление намного удобнее. Тяжелые комплексные решения вроде Prometheus и Grafana не подходят для скромных ресурсов одноплатника, поэтому я остановился на легковесном инструменте Beszel. Он потребляет минимум ресурсов, выводит всю необходимую статистику на понятный графический интерфейс и умеет отправлять уведомления при достижении пороговых значений загрузки процессора.

Итоговая работа сетевого стека на Raspberry Pi Zero 2 W
Готовый домашний сервер на базе Raspberry Pi Zero 2 W без признаков задержек.

Интерфейс и объединение дашбордов

Для еще большего удобства я задействовал утилиту Glance, которая позволила собрать единый и аккуратный дашборд. В левой части экрана отображается текущий статус всех запущенных Docker-контейнеров, что позволяет мгновенно заметить сбой и подключиться к плате по SSH. Справа расположены две большие панели: одна встраивает веб-интерфейс Beszel через iframe для отслеживания загрузки процессора, памяти и времени непрерывной работы, а вторая выводит виджет Pi-hole из каталога сообщества с графиками запросов и заблокированных доменов.

Итоги эксперимента с Raspberry Pi Zero 2 W

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

01.