bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward
eco Начальный Туториал

Развёртывание Pi-hole и Unbound на VPS: приватный DNS и блокировка рекламы

calendar_month Jun 17, 2026 schedule 25 мин. чтения visibility 26 просмотров
Развёртывание Pi-hole и Unbound на VPS: приватный DNS и блокировка рекламы
info

Нужен сервер для этого гайда? Мы предлагаем выделенные серверы и VPS в 50+ странах с мгновенной настройкой.

Нужен сервер для этого гайда?

Разверните VPS или выделенный сервер за минуты.

Развёртывание Pi-hole и Unbound на VPS: приватный DNS и блокировка рекламы

TL;DR

В этом руководстве мы настроим связку Pi-hole и Unbound на виртуальном приватном сервере (VPS) для создания собственного приватного, рекурсивного DNS-сервера с функцией блокировки рекламы и трекеров. Это обеспечит повышенную конфиденциальность, безопасность и контроль над интернет-трафиком для всех устройств в вашей сети.

  • Полная блокировка рекламы и трекеров на уровне DNS для всех устройств.
  • Повышенная конфиденциальность за счет использования собственного рекурсивного DNS (Unbound), который не полагается на сторонние DNS-провайдеры.
  • Улучшенная производительность за счет кэширования DNS-запросов на вашем VPS.
  • Централизованное управление DNS-запросами и блокировками через удобный веб-интерфейс Pi-hole.
  • Максимальный контроль над данными и отсутствие передачи DNS-запросов третьим лицам.
  • Подробные пошаговые инструкции для настройки сервера на Ubuntu 24.04 LTS.

Что мы настраиваем и зачем

Схема: Что мы настраиваем и зачем
Схема: Что мы настраиваем и зачем

В современном интернете реклама и трекеры стали неотъемлемой частью пользовательского опыта, часто негативно влияя на скорость загрузки страниц, потребление трафика и, что наиболее важно, на конфиденциальность. Стандартные DNS-серверы, предоставляемые интернет-провайдерами или крупными компаниями (Google, Cloudflare), хоть и быстры, но собирают данные о ваших запросах, что может быть использовано для профилирования и таргетированной рекламы.

Эта статья посвящена развертыванию связки Pi-hole и Unbound на вашем собственном VPS. Pi-hole — это сетевой блокировщик рекламы и трекеров, работающий на уровне DNS. Он перехватывает DNS-запросы от всех устройств в вашей сети и блокирует запросы к известным рекламным и трекерным доменам, возвращая им пустой ответ. В результате реклама просто не загружается, что значительно улучшает скорость просмотра и снижает потребление данных.

Unbound — это валидирующий, рекурсивный, кэширующий DNS-резолвер. В отличие от традиционных DNS-серверов, которые просто перенаправляют ваши запросы другим серверам, Unbound самостоятельно выполняет весь процесс разрешения доменного имени, начиная с корневых DNS-серверов и постепенно спускаясь по иерархии доменов. Это означает, что ваши DNS-запросы не проходят через сторонних провайдеров, обеспечивая максимальную конфиденциальность и устойчивость к цензуре, так как никто, кроме вашего VPS, не знает, какие сайты вы посещаете.

В итоге, читатель получит полностью приватный и эффективный DNS-сервер, который:

  • Блокирует рекламу, всплывающие окна и трекеры на всех устройствах (компьютеры, смартфоны, Smart TV, IoT-устройства), подключенных к вашей сети.
  • Повышает конфиденциальность, не передавая ваши DNS-запросы третьим лицам.
  • Ускоряет загрузку веб-страниц за счет блокировки лишнего контента и кэширования DNS-запросов.
  • Предоставляет детальную статистику DNS-запросов и блокировок через удобный веб-интерфейс.
  • Обеспечивает дополнительный уровень безопасности за счет DNSSEC-валидации.

Альтернативы и почему self-hosted на VPS

Существует несколько альтернатив для блокировки рекламы и повышения конфиденциальности DNS:

  • Браузерные расширения: Эффективны только для конкретного браузера и не работают для приложений, Smart TV или других устройств.
  • Публичные DNS-серверы с блокировкой рекламы: Например, AdGuard DNS или NextDNS. Они блокируют рекламу, но вы по-прежнему доверяете свои DNS-запросы стороннему провайдеру, который может собирать и анализировать данные.
  • VPN-сервисы: Многие VPN предлагают блокировку рекламы и защиту конфиденциальности. Однако вы по-прежнему доверяете VPN-провайдеру, а DNS-запросы часто обрабатываются их собственными серверами, а не рекурсивно.
  • Cloud-managed решения: Некоторые провайдеры предлагают управляемые DNS-сервисы с расширенными функциями, но они обычно дороже и менее гибки в настройке, чем собственное решение.

Развертывание Pi-hole и Unbound на собственном VPS предлагает уникальное сочетание преимуществ:

  • Полный контроль: Вы полностью контролируете свои данные и настройки.
  • Максимальная конфиденциальность: Unbound гарантирует, что ваши запросы не проходят через сторонние DNS-серверы.
  • Гибкость: Возможность добавлять любые списки блокировки, создавать собственные правила, интегрировать с другими сервисами.
  • Экономичность: Стоимость небольшого VPS часто сопоставима с платными DNS-сервисами, но с гораздо большей функциональностью и конфиденциальностью.
  • Доступ из любой точки: Ваш Pi-hole/Unbound сервер будет доступен из любой точки мира, где есть интернет, если вы настроите к нему безопасный доступ (например, через VPN на том же VPS).

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

Какой VPS-конфиг нужен под эту задачу

Схема: Какой VPS-конфиг нужен под эту задачу
Схема: Какой VPS-конфиг нужен под эту задачу

Для развертывания Pi-hole и Unbound не требуются значительные вычислительные ресурсы. Эти сервисы достаточно легкие и могут работать даже на самых скромных конфигурациях.

Минимальные требования:

  • CPU: 1 ядро (виртуальное). Современные процессоры обеспечивают достаточную производительность.
  • RAM: 512 МБ. Для базовой работы Pi-hole и Unbound этого достаточно. Если планируете большое количество клиентов (более 50-100) или очень большие списки блокировки, может потребоваться 1 ГБ.
  • Диск: 10-20 ГБ SSD. Pi-hole и Unbound занимают мало места, но операционной системе и журналам требуется некоторое пространство. SSD предпочтителен для лучшей производительности DNS-запросов и ускорения загрузки системы.
  • Сеть: 100 Мбит/с. DNS-запросы потребляют очень мало трафика, поэтому даже базовая скорость канала будет более чем достаточной.
  • Операционная система: Ubuntu Server 24.04 LTS (или Debian 12/13).

Рекомендуемый VPS-план под задачу:

Для комфортной работы, с запасом на будущее и возможностью установки дополнительных небольших сервисов (например, WireGuard VPN на том же VPS), рекомендуется следующий конфиг:

  • CPU: 2 vCPU
  • RAM: 2 ГБ
  • Диск: 40 ГБ SSD
  • Сеть: 1 Гбит/с порт (с трафиком от 500 ГБ/мес)

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

Когда нужен dedicated, а не VPS

Для Pi-hole и Unbound в качестве единственной или основной задачи, выделенный сервер (dedicated) обычно не требуется. VPS полностью справляется с этой нагрузкой. Однако, dedicated сервер может быть оправдан в следующих случаях:

  • Очень высокая нагрузка: Если вы планируете обслуживать сотни или тысячи клиентов (например, крупный офис, общественная сеть) и использовать очень агрессивные и объемные списки блокировки.
  • Множество других ресурсоемких сервисов: Если ваш сервер будет хостить не только Pi-hole/Unbound, но и игровые серверы, высоконагруженные веб-приложения, базы данных с большим объемом операций ввода-вывода.
  • Требования к производительности диска: Если вам нужен максимальный IOPS для специфических задач, которые не связаны напрямую с DNS.
  • Полный контроль над оборудованием: Для некоторых задач, связанных с безопасностью или специфическими аппаратными требованиями, выделенный сервер может быть предпочтительнее.

Для большинства пользователей, желающих приватный DNS и блокировку рекламы, VPS является оптимальным и экономически выгодным решением. Если же вы все-таки решите, что вам нужен выделенный сервер, можно рассмотреть подходящий dedicated с аналогичными или более высокими характеристиками.

Локация: на что влияет

Расположение вашего VPS влияет в основном на задержку (latency) DNS-запросов. Чем ближе сервер к вам географически, тем быстрее будут разрешаться доменные имена. Для большинства задач разница в 50-100 мс незаметна, но для онлайн-игр или высокочастотного трейдинга это может быть критично.

  • Ближайший к вам датацентр: Идеален для личного использования, чтобы минимизировать задержки.
  • Центральная локация: Если вы обслуживаете пользователей из разных регионов, выберите датацентр в центральной точке, чтобы усреднить задержку для всех.
  • Законы и регулирование: В некоторых случаях выбор локации может зависеть от законодательства страны, особенно если вы беспокоитесь о конфиденциальности данных.

Для большинства пользователей, разворачивающих Pi-hole и Unbound, достаточно выбрать VPS в стране или регионе, который находится относительно близко к их основному местоположению.

Подготовка сервера

Схема: Подготовка сервера
Схема: Подготовка сервера

Предполагается, что вы уже получили доступ к своему VPS по SSH с правами пользователя root. Мы будем использовать Ubuntu Server 24.04 LTS, как актуальную и стабильную версию на 2026 год.

1. Обновление системы

Прежде всего, обновим список пакетов и саму систему до актуального состояния. Это обеспечит наличие последних патчей безопасности и стабильных версий ПО.


sudo apt update && sudo apt upgrade -y # Обновляем список пакетов и устанавливаем обновления
sudo apt autoremove -y # Удаляем ненужные пакеты
sudo reboot # Перезагружаем сервер, если было обновление ядра или критических компонентов

2. Создание нового пользователя и настройка sudo

Работать под учетной записью root напрямую не рекомендуется из соображений безопасности. Создадим нового пользователя и предоставим ему права sudo.


sudo adduser username # Создаем нового пользователя. Замените 'username' на желаемое имя.
sudo usermod -aG sudo username # Добавляем пользователя в группу sudo, чтобы он мог выполнять команды с правами root

Теперь выйдите из сессии root и войдите под новым пользователем:


exit # Выход из root-сессии
ssh username@your_vps_ip # Вход под новым пользователем

3. Настройка аутентификации по SSH-ключам (рекомендуется)

Использование SSH-ключей вместо паролей значительно повышает безопасность. Если вы еще не настроили это, сделайте это сейчас. Сгенерируйте SSH-ключ на вашей локальной машине (если у вас его нет):


ssh-keygen -t ed25519 -C "[email protected]" # Создает новый SSH-ключ Ed25519

Затем скопируйте публичный ключ на ваш VPS:


ssh-copy-id username@your_vps_ip # Копирует ваш публичный ключ на сервер

После успешной настройки, отключите аутентификацию по паролю в файле /etc/ssh/sshd_config. Откройте его:


sudo nano /etc/ssh/sshd_config # Открываем конфигурационный файл SSH-сервера

Найдите и измените следующие строки (или добавьте, если отсутствуют):


# Запрещаем вход под root по SSH
PermitRootLogin no

# Отключаем аутентификацию по паролю
PasswordAuthentication no

# Включаем аутентификацию по ключам
PubkeyAuthentication yes

Сохраните изменения (Ctrl+O, Enter, Ctrl+X) и перезапустите SSH-сервис:


sudo systemctl restart sshd # Перезапускаем SSH-сервер

Убедитесь, что вы можете войти по SSH с ключом, прежде чем закрывать текущую сессию.

4. Настройка файрвола (UFW)

Для защиты сервера от несанкционированного доступа настроим брандмауэр UFW (Uncomplicated Firewall).


sudo apt install ufw -y # Устанавливаем UFW
sudo ufw default deny incoming # Запрещаем все входящие соединения по умолчанию
sudo ufw default allow outgoing # Разрешаем все исходящие соединения
sudo ufw allow ssh # Разрешаем SSH (порт 22)
sudo ufw allow 53/tcp # Разрешаем DNS (TCP) для Pi-hole
sudo ufw allow 53/udp # Разрешаем DNS (UDP) для Pi-hole и Unbound
sudo ufw allow 80/tcp # Разрешаем HTTP (TCP) для веб-интерфейса Pi-hole
sudo ufw enable # Включаем файрвол
sudo ufw status # Проверяем статус файрвола

Если вы планируете использовать HTTPS для веб-интерфейса Pi-hole (через Caddy, как мы рассмотрим позже), вам также понадобится разрешить порт 443:


sudo ufw allow 443/tcp # Разрешаем HTTPS (TCP)
sudo ufw reload # Перезагружаем правила UFW

5. Установка Fail2Ban

Fail2Ban защищает сервер от атак методом подбора паролей, блокируя IP-адреса, с которых происходят многочисленные неудачные попытки входа.


sudo apt install fail2ban -y # Устанавливаем Fail2Ban
sudo systemctl enable fail2ban # Включаем автозапуск Fail2Ban при загрузке
sudo systemctl start fail2ban # Запускаем сервис Fail2Ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Копируем конфиг для локальных изменений
sudo nano /etc/fail2ban/jail.local # Открываем файл для настройки

В файле jail.local убедитесь, что секция [sshd] активна (enabled = true) и, возможно, настройте bantime (время блокировки) и findtime (период для обнаружения попыток) по своему усмотрению. По умолчанию настройки достаточно хороши. Например, можно увеличить bantime для более длительной блокировки:


[DEFAULT]
bantime = 1h # Время блокировки IP-адреса (по умолчанию 10m)
findtime = 10m # Период, за который считаются попытки (по умолчанию 10m)
maxretry = 5 # Количество попыток до блокировки (по умолчанию 5)

[sshd]
enabled = true

Сохраните изменения и перезапустите Fail2Ban:


sudo systemctl restart fail2ban # Перезапускаем Fail2Ban для применения изменений
sudo fail2ban-client status # Проверяем статус Fail2Ban
sudo fail2ban-client status sshd # Проверяем статус SSH-защиты

Теперь ваш сервер готов к установке Pi-hole и Unbound.

Установка ПО — пошагово

Схема: Установка ПО — пошагово
Схема: Установка ПО — пошагово

Мы будем устанавливать Unbound первым, а затем Pi-hole, конфигурируя Pi-hole для использования Unbound в качестве своего единственного восходящего (upstream) DNS-сервера.

1. Установка Unbound

Unbound — это рекурсивный DNS-резолвер, который будет напрямую взаимодействовать с корневыми DNS-серверами, обеспечивая максимальную конфиденциальность. Мы установим его из официальных репозиториев Ubuntu 24.04 LTS.


sudo apt update # Обновляем список пакетов
sudo apt install unbound -y # Устанавливаем Unbound версии 1.19.0 (актуально для Ubuntu 24.04 LTS)

После установки необходимо настроить Unbound для работы с Pi-hole. Мы создадим отдельный конфигурационный файл, чтобы не изменять основной.


sudo nano /etc/unbound/unbound.conf.d/pi-hole.conf # Создаем новый конфигурационный файл для Unbound

Вставьте следующее содержимое в файл pi-hole.conf. Этот конфиг настраивает Unbound на прослушивание только локального интерфейса, выполнение рекурсивных запросов, включение DNSSEC-валидации и кэширование ответов.


server:
    # Порт, на котором Unbound будет слушать запросы
    port: 5335
    # Прослушивать только локальный интерфейс (для Pi-hole)
    interface: 127.0.0.1
    # Отключить прослушивание всех интерфейсов
    do-not-query-address: 0.0.0.0/0
    do-not-query-address: ::0/0

    # Разрешить запросы только с localhost (где будет Pi-hole)
    access-control: 127.0.0.1 allow

    # Включить DNSSEC-валидацию
    auto-trust-anchor-file: "/var/lib/unbound/root.key"

    # Включить логирование запросов
    verbosity: 0 # 0 для минимального логирования, 1 для более подробного

    # Оптимизация производительности
    num-threads: 1 # Количество потоков (обычно 1 достаточно для VPS)
    msg-cache-size: 128m # Размер кэша сообщений (рекомендуется 128MB для 2GB RAM)
    rrset-cache-size: 256m # Размер кэша ресурсных записей
    # Увеличение лимитов для предотвращения ошибок при большой нагрузке
    outgoing-range: 8192
    num-queries-per-thread: 4096
    aggressive-nsec: yes # Ускоряет разрешение несуществующих доменов
    do-ip4: yes
    do-ip6: no # Отключаем IPv6, если не используется или если провайдер не поддерживает
    prefer-ip6: no
    harden-glue: yes # Укрепляет проверку склеивающих записей
    harden-dnssec-stripped: yes # Запрещает возврат невалидных DNSSEC ответов
    harden-referral-path: yes # Укрепляет проверку пути к рефералам
    use-caps-for-id: yes # Улучшает защиту от атак по кэшу
    private-address: 192.168.0.0/16 # Указываем частные IP-диапазоны, чтобы Unbound не пытался их разрешить
    private-address: 10.0.0.0/8
    private-address: 172.16.0.0/12
    private-address: 169.254.0.0/16
    private-address: fd00::/8
    private-address: fe80::/10
    hide-version: yes # Скрываем версию Unbound
    # Отключаем DNS64, если не требуется
    do-daemonize: yes
    root-hints: "/var/lib/unbound/root.hints" # Путь к файлу с корневыми DNS-серверами

Сохраните файл (Ctrl+O, Enter, Ctrl+X). Теперь загрузим актуальные корневые DNS-серверы и ключ DNSSEC.


sudo wget -O /var/lib/unbound/root.hints https://www.internic.net/domain/named.root # Загружаем актуальные корневые DNS-серверы
sudo unbound-anchor -a /var/lib/unbound/root.key # Генерируем и обновляем trust anchor для DNSSEC
sudo systemctl enable unbound # Включаем автозапуск Unbound при загрузке
sudo systemctl restart unbound # Перезапускаем Unbound для применения новой конфигурации
sudo systemctl status unbound # Проверяем статус Unbound. Должен быть 'active (running)'

Проверим, что Unbound слушает на порту 5335 и может разрешать домены:


dig @127.0.0.1 -p 5335 google.com # Проверяем разрешение домена через Unbound

Вы должны увидеть ответ с IP-адресами google.com. Если вы видите ошибку, проверьте конфигурацию и логи Unbound (sudo journalctl -u unbound).

2. Установка Pi-hole

Pi-hole будет использовать Unbound в качестве своего восходящего DNS-сервера. Установка Pi-hole выполняется с помощью удобного скрипта.


sudo apt install curl -y # Устанавливаем curl, если его еще нет
curl -sSL https://install.pi-hole.net | sudo bash # Запускаем установочный скрипт Pi-hole (версия 5.x, актуальна на 2026)

Инсталлятор Pi-hole проведет вас через несколько шагов:

  1. Static IP Address: Установщик предложит настроить статический IP-адрес для вашего сервера. Подтвердите использование текущего IP-адреса, который является внешним IP вашего VPS.
  2. Upstream DNS Provider: На этом шаге ОЧЕНЬ ВАЖНО выбрать Custom (Пользовательский) и ввести 127.0.0.1#5335. Это указывает Pi-hole использовать ваш локально запущенный Unbound на порту 5335.
  3. Select Blocklists: Выберите списки блокировки по умолчанию. Вы всегда сможете добавить больше позже через веб-интерфейс.
  4. Install Web Admin Interface: Обязательно выберите "On" для установки веб-интерфейса.
  5. Install Lighttpd Web Server: Подтвердите установку веб-сервера Lighttpd.
  6. Log Queries: Выберите уровень логирования (по умолчанию "Log all queries" — рекомендуется).

После завершения установки Pi-hole покажет вам экран с URL-адресом веб-интерфейса и временным паролем администратора. Обязательно сохраните этот пароль!

Пример вывода после установки:


...
[✓] Enabling Pi-hole automated updates
[✓] Enabling Pi-hole blocklist updates
[✓] Restarting lighttpd service
[✓] FTL is listening on port 53
[✓] Pi-hole blocking is enabled

The Pi-hole Web interface is now available!
        http://your_vps_ip/admin

You are strongly advised to change the default password.
        Default password: your_generated_password

Installation Complete!

Теперь Pi-hole установлен и настроен на использование Unbound. DNS-серверы на вашем VPS будут работать на порту 53 (Pi-hole), а Pi-hole будет перенаправлять запросы к Unbound на порт 5335.

Конфигурация

После установки Pi-hole и Unbound, необходимо выполнить несколько шагов для их оптимальной настройки и проверки работоспособности.

1. Доступ к веб-интерфейсу Pi-hole

Откройте веб-браузер и перейдите по адресу http://your_vps_ip/admin (замените your_vps_ip на реальный IP-адрес вашего VPS). Вы увидите страницу входа Pi-hole.


# Если вы забыли пароль, можете его сбросить
pihole -a -p # Установит новый случайный пароль
pihole -a -p your_new_password # Установит заданный пароль

Войдите, используя пароль, который был показан после установки. После входа вы увидите панель управления с статистикой DNS-запросов, заблокированной рекламы и другой полезной информацией.

2. Изменение пароля администратора Pi-hole

Сразу после первого входа рекомендуется изменить временный пароль на более надежный. Сделать это можно в веб-интерфейсе: Settings > Web Interface > Password.

3. Добавление и управление списками блокировки (Blocklists)

Pi-hole поставляется с несколькими списками блокировки по умолчанию. Вы можете добавить больше для более агрессивной фильтрации. Перейдите в Group Management > Adlists в веб-интерфейсе.

Некоторые популярные списки:

  • OISD Full: https://abp.oisd.nl/
  • StevenBlack's Unified Hosts File: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
  • Lightswitch05's Blocklist: https://raw.githubusercontent.com/Lightswitch05/Hosts/master/ads-and-tracking-extended.txt

После добавления новых списков, обновите гравитационную базу данных Pi-hole:


pihole -g # Обновит все списки блокировки

Это также можно сделать через веб-интерфейс: Tools > Update Gravity.

4. Настройка Whitelist/Blacklist

Если какой-то сайт не работает корректно из-за блокировки Pi-hole, вы можете добавить его домен в "белый список" (Whitelist). Если вы хотите заблокировать конкретный домен, которого нет в списках, добавьте его в "черный список" (Blacklist). Это делается через Domains в веб-интерфейсе.

5. Опционально: Настройка Conditional Forwarding

Если вы используете Pi-hole в домашней сети и хотите видеть имена устройств вместо только IP-адресов в логах Pi-hole, вы можете настроить "Conditional Forwarding". Это заставит Pi-hole перенаправлять запросы для вашей локальной сети (например, .local или .lan) на ваш роутер или локальный DNS-сервер. Перейдите в Settings > DNS > Advanced DNS settings и включите Use Conditional Forwarding, указав IP-адрес вашего роутера и локальный домен.

6. Опционально: Настройка HTTPS для веб-интерфейса Pi-hole с помощью Caddy

По умолчанию веб-интерфейс Pi-hole доступен по HTTP. Для повышения безопасности рекомендуется настроить HTTPS. Мы будем использовать Caddy — современный веб-сервер, который автоматически управляет сертификатами Let's Encrypt.

Установка Caddy:

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https # Устанавливаем необходимые пакеты
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg # Добавляем GPG-ключ Caddy
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list # Добавляем репозиторий Caddy
sudo apt update # Обновляем список пакетов
sudo apt install caddy -y # Устанавливаем Caddy (актуальная версия 2.x на 2026)
Настройка Caddyfile:

Создайте DNS-запись (A/AAAA) для вашего домена (например, pihole.yourdomain.com), указывающую на IP-адрес вашего VPS. Затем настройте Caddy для проксирования запросов к Pi-hole.


sudo nano /etc/caddy/Caddyfile # Открываем конфигурационный файл Caddy

Замените его содержимое на следующее, изменив pihole.yourdomain.com на ваш домен:


pihole.yourdomain.com {
    # Автоматическое получение SSL-сертификата от Let's Encrypt
    tls {
        dns cloudflare {env.CLOUDFLARE_API_TOKEN} # Пример для Cloudflare. Укажите свой DNS-провайдер и API-токен.
    }
    # Проксируем запросы к веб-интерфейсу Pi-hole
    reverse_proxy 127.0.0.1:80
    # Настройки для скрытия реального IP-адреса клиента от Pi-hole (опционально)
    header_up X-Forwarded-For {remote_host}
    header_up Host {host}
    header_up X-Real-IP {remote_host}
}

Примечание: Для автоматического получения сертификатов Let's Encrypt через DNS (чтобы Caddy мог работать на порту 80/443, даже если они заняты Pi-hole), вам понадобится DNS-провайдер с API-доступом (например, Cloudflare, Namecheap, DigitalOcean). Вам нужно будет установить соответствующий плагин Caddy и указать API-токен. Если вы не хотите использовать DNS-челлендж, убедитесь, что порты 80 и 443 свободны, или используйте другой порт для Caddy.

В случае использования DNS-челленджа, сохраните ваш API-токен в переменной окружения для безопасности.


# Пример для Cloudflare
echo 'CLOUDFLARE_API_TOKEN="your_cloudflare_api_token"' | sudo tee -a /etc/environment
source /etc/environment # Загружаем переменную окружения

Перезапустите Caddy для применения изменений:


sudo systemctl reload caddy # Перезагружаем Caddy
sudo systemctl enable caddy # Включаем автозапуск Caddy
sudo ufw allow 80,443/tcp # Убедитесь, что порты 80 и 443 разрешены в файрволе

Теперь ваш веб-интерфейс Pi-hole будет доступен по HTTPS по адресу https://pihole.yourdomain.com/admin.

7. Проверка работоспособности

После всех настроек необходимо убедиться, что все работает как надо.

  1. Проверка DNS-разрешения через Pi-hole:
    
    dig @your_vps_ip example.com # Проверяем обычный домен
    dig @your_vps_ip doubleclick.net # Проверяем рекламный домен - должен быть заблокирован (0.0.0.0 или ::)
    

    Вы должны увидеть, что example.com разрешается в его реальный IP, а doubleclick.net — в 0.0.0.0 или ::.

  2. Проверка логов Pi-hole:
    
    pihole -t # Просмотр логов Pi-hole в реальном времени
    

    Вы увидите все DNS-запросы, проходящие через Pi-hole, и их статус (OK, Blocked, Cached).

  3. Настройка клиентского устройства:

    Чтобы начать использовать ваш Pi-hole/Unbound сервер, необходимо настроить DNS-сервер на клиентских устройствах (компьютер, смартфон) или на роутере в вашей домашней сети. Укажите IP-адрес вашего VPS в качестве основного DNS-сервера.

    • Windows: Настройки сети и интернета -> Изменение параметров адаптера -> Свойства вашего подключения -> Протокол Интернета версии 4 (TCP/IPv4) -> Свойства -> Использовать следующие адреса DNS-серверов.
    • macOS: Системные настройки -> Сеть -> Выбрать подключение -> Дополнительно -> DNS.
    • Linux: Обычно в /etc/resolv.conf или через NetworkManager.
    • Роутер: Войдите в веб-интерфейс вашего роутера и найдите настройки WAN/LAN DNS. Рекомендуется установить IP-адрес вашего VPS как основной DNS-сервер для всей локальной сети.
  4. Тестирование на клиенте:

    После настройки DNS на клиенте, откройте веб-браузер и посетите несколько сайтов с рекламой (например, новостные порталы). Вы должны заметить значительное уменьшение или полное отсутствие рекламы. Проверьте также веб-интерфейс Pi-hole, чтобы убедиться, что запросы от вашего клиента отображаются и блокируются.

Теперь ваш приватный DNS-сервер с блокировкой рекламы полностью функционален!

Бэкапы и обслуживание

Регулярное резервное копирование и своевременное обслуживание являются критически важными для стабильной и безопасной работы вашего Pi-hole и Unbound сервера.

1. Что бэкапить

Для Pi-hole и Unbound необходимо регулярно сохранять следующие данные:

  • Конфигурация Pi-hole: Файлы в директории /etc/pihole/, которые содержат настройки, списки блокировки, белый и черный списки.
  • База данных FTL: Основная база данных Pi-hole (/etc/pihole/pihole-FTL.db), содержащая логи запросов, статистику и информацию о клиентах.
  • Конфигурация Unbound: Файлы в директории /etc/unbound/, особенно /etc/unbound/unbound.conf.d/pi-hole.conf.
  • Ключ Unbound DNSSEC: Файл /var/lib/unbound/root.key.
  • Корневые подсказки Unbound: Файл /var/lib/unbound/root.hints.

2. Простой скрипт автобэкапа

Вы можете создать простой скрипт для автоматического резервного копирования. Этот скрипт будет архивировать важные файлы и сохранять их в отдельной директории.


sudo mkdir -p /opt/backups/pihole_unbound # Создаем директорию для бэкапов
sudo chown username:username /opt/backups/pihole_unbound # Даем права вашему пользователю

nano /home/username/backup_pihole_unbound.sh # Создаем скрипт бэкапа

Добавьте следующее содержимое в файл backup_pihole_unbound.sh:


#!/bin/bash

# Директория для сохранения бэкапов
BACKUP_DIR="/opt/backups/pihole_unbound"
# Имя файла бэкапа с датой
DATE=$(date +%Y%m%d%H%M%S)
BACKUP_FILE="$BACKUP_DIR/pihole_unbound_config_$DATE.tar.gz"

# Останавливаем Pi-hole FTL и Unbound для консистентного бэкапа БД
sudo systemctl stop pihole-FTL.service
sudo systemctl stop unbound.service

# Создаем архив конфигурационных файлов и базы данных
sudo tar -czvf "$BACKUP_FILE" \
    /etc/pihole \
    /etc/unbound/unbound.conf.d/pi-hole.conf \
    /var/lib/unbound/root.key \
    /var/lib/unbound/root.hints \
    --exclude='/etc/pihole/pihole-FTL.db' # Исключаем БД из основного архива, будем бэкапить отдельно

# Копируем базу данных Pi-hole FTL
sudo cp /etc/pihole/pihole-FTL.db "$BACKUP_DIR/pihole-FTL.db.$DATE"

# Запускаем сервисы обратно
sudo systemctl start pihole-FTL.service
sudo systemctl start unbound.service

# Удаляем старые бэкапы (старше 7 дней), оставляем 7 последних
find "$BACKUP_DIR" -type f -name "pihole_unbound_config_.tar.gz" -mtime +7 -delete
find "$BACKUP_DIR" -type f -name "pihole-FTL.db." -mtime +7 -delete

echo "Backup created: $BACKUP_FILE and pihole-FTL.db.$DATE"

Сделайте скрипт исполняемым:


chmod +x /home/username/backup_pihole_unbound.sh # Делаем скрипт исполняемым

Теперь добавьте этот скрипт в расписание Cron для ежедневного выполнения:


crontab -e # Открываем crontab для текущего пользователя

Добавьте следующую строку в конец файла, чтобы скрипт запускался каждый день в 03:00 ночи:


0 3   * /home/username/backup_pihole_unbound.sh >> /var/log/pihole_unbound_backup.log 2>&1

Сохраните и закройте файл. Теперь ваши бэкапы будут создаваться автоматически.

3. Куда складывать бэкапы

Хранить бэкапы на том же VPS, где работают сервисы, небезопасно. В случае выхода из строя диска VPS, вы потеряете и данные, и бэкапы. Рекомендуется использовать внешнее хранилище:

  • Внешний S3-совместимый объектный сторадж: (например, Amazon S3, DigitalOcean Spaces, Backblaze B2, MinIO). Это надежное и масштабируемое решение. Вы можете использовать утилиты вроде rclone или s3cmd для автоматической синхронизации бэкапов.
  • Другой VPS: Если у вас есть второй VPS, вы можете использовать rsync или scp для копирования бэкапов на него.
  • Локальный компьютер: Для очень маленьких инсталляций можно вручную скачивать бэкапы по SSH/SFTP.

Пример использования rclone для S3:


sudo apt install rclone -y # Устанавливаем rclone
rclone config # Настраиваем rclone для вашего S3-провайдера (следуйте инструкциям)

Затем добавьте в ваш скрипт бэкапа после создания архива строку для копирования на S3:


rclone copy "$BACKUP_DIR" "your_s3_remote:your_bucket_name" # Копируем директорию бэкапов на S3

4. Обновления: rolling vs maintenance window

Регулярные обновления ПО важны для безопасности и получения новых функций.

  • Обновления операционной системы:

    Рекомендуется выполнять ежемесячно. Для Ubuntu 24.04 LTS это:

    
    sudo apt update && sudo apt upgrade -y # Обновление пакетов
    sudo apt autoremove -y # Удаление ненужных пакетов
    

    Если было обновление ядра, потребуется перезагрузка: sudo reboot. Планируйте это на время наименьшей активности.

  • Обновления Pi-hole:

    Pi-hole имеет собственный механизм обновления:

    
    pihole -up # Обновит Pi-hole до последней версии (актуальной на 2026 год)
    

    Это безопасно выполнять в "rolling" режиме, то есть без предварительного планирования остановки сервиса. Pi-hole автоматически перезапустит свои компоненты.

  • Обновления Unbound:

    Unbound обновляется вместе с системными пакетами через apt upgrade. Обычно это не требует ручного вмешательства, но после обновления желательно проверить статус sudo systemctl status unbound.

  • Обновления списков блокировки Pi-hole:

    Pi-hole автоматически обновляет списки блокировки по расписанию (по умолчанию раз в неделю). Вы можете запустить это вручную:

    
    pihole -g # Обновит гравитационную базу данных
    

Для критически важных систем рекомендуется проводить обновления в рамках "maintenance window" (окна обслуживания), чтобы минимизировать риски и иметь время для отката в случае проблем. Для домашнего Pi-hole/Unbound сервера можно быть менее строгим, но всегда делайте бэкап перед крупными обновлениями.

Troubleshooting + FAQ

Pi-hole web interface not accessible.

Если вы не можете получить доступ к веб-интерфейсу Pi-hole по адресу http://your_vps_ip/admin или https://pihole.yourdomain.com/admin, проверьте следующее:

  • Проверьте статус веб-сервера Lighttpd: sudo systemctl status lighttpd. Он должен быть active (running). Если нет, попробуйте sudo systemctl restart lighttpd.
  • Проверьте файрвол UFW: Убедитесь, что порты 80 (HTTP) и/или 443 (HTTPS) разрешены: sudo ufw status. Если нет, добавьте правила: sudo ufw allow 80/tcp и sudo ufw allow 443/tcp, затем sudo ufw reload.
  • Проверьте логи Pi-hole: cat /var/log/pihole/pihole.log и cat /var/log/lighttpd/error.log на наличие ошибок.
  • Если используете Caddy: Убедитесь, что Caddy запущен (sudo systemctl status caddy) и его конфигурация (/etc/caddy/Caddyfile) корректна. Проверьте логи Caddy: sudo journalctl -u caddy.

Ads still appearing on client devices.

Если реклама все еще отображается, несмотря на настройку Pi-hole:

  • Проверьте DNS-настройки клиента: Убедитесь, что ваше клиентское устройство (компьютер, телефон, роутер) настроено на использование IP-адреса вашего VPS в качестве основного DNS-сервера.
  • Очистите DNS-кэш на клиенте: На Windows: ipconfig /flushdns. На macOS: sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder. На Linux: sudo systemctl restart systemd-resolved или sudo /etc/init.d/nscd restart.
  • Проверьте логи Pi-hole: В веб-интерфейсе Pi-hole (Query Log) посмотрите, приходят ли запросы от вашего клиента и блокируются ли рекламные домены. Если запросы не приходят, проблема в DNS-настройках клиента. Если приходят, но не блокируются, возможно, рекламный домен отсутствует в ваших списках блокировки.
  • Обновите гравитационную базу данных: pihole -g или через веб-интерфейс Tools > Update Gravity.
  • Добавьте домен в Blacklist: Если вы видите конкретный рекламный домен, который не блокируется, добавьте его вручную в Blacklist через веб-интерфейс.

DNS resolution slow or failing.

Медленное или неработающее разрешение доменных имен может указывать на проблемы с Unbound или связкой Pi-hole/Unbound.

  • Проверьте статус Unbound: sudo systemctl status unbound. Должен быть active (running). Если нет, попробуйте sudo systemctl restart unbound.
  • Проверьте конфигурацию Unbound: sudo unbound-checkconf. Убедитесь, что нет ошибок.
  • Проверьте, что Pi-hole использует Unbound: В веб-интерфейсе Pi-hole, в Settings > DNS, убедитесь, что в качестве Upstream DNS-сервера указан 127.0.0.1#5335.
  • Проверьте, что Unbound слушает на 5335: sudo netstat -tulnp | grep 5335. Вы должны увидеть процесс Unbound.
  • Проверьте внешнюю связь VPS: Убедитесь, что ваш VPS может выходить в интернет: ping 8.8.8.8.
  • Проверьте логи Unbound: sudo journalctl -u unbound на наличие ошибок или предупреждений.

Какой VPS-конфиг минимально подойдёт?

Минимально для Pi-hole и Unbound на Ubuntu Server 24.04 LTS подойдет VPS с 1 vCPU, 512 МБ оперативной памяти, 10-15 ГБ SSD-диска и сетевым каналом от 100 Мбит/с. Такая конфигурация будет достаточной для обслуживания небольшой домашней сети или нескольких пользователей. Однако, для более стабильной работы и возможности масштабирования или добавления других легких сервисов, рекомендуется 2 vCPU, 2 ГБ RAM и 40 ГБ SSD.

Что выбрать — VPS или dedicated для этой задачи?

Для развертывания Pi-hole и Unbound в большинстве случаев достаточно VPS. Эти сервисы не являются ресурсоемкими и отлично работают на виртуализированных ресурсах. Выделенный сервер обычно избыточен для этой конкретной задачи. Dedicated сервер стоит рассматривать, если вы планируете обслуживать очень большое количество клиентов (сотни или тысячи), запускать множество других ресурсоемких приложений на том же сервере, или если у вас есть специфические требования к аппаратному обеспечению и полному контролю над ним. Для большинства личных или небольших командных нужд VPS будет более экономичным и адекватным выбором.

Как обновить Pi-hole и Unbound?

Обновление компонентов выполняется следующим образом:

  • Обновление операционной системы и Unbound: sudo apt update && sudo apt upgrade -y. Unbound обновляется как часть системных пакетов.
  • Обновление Pi-hole: pihole -up. Эта команда обновит Pi-hole и его компоненты (FTL, Web Interface) до последних стабильных версий.
  • Обновление списков блокировки Pi-hole: pihole -g. Это обновит все ваши adlists. Pi-hole делает это автоматически раз в неделю, но вы можете запустить вручную.

Могу ли я использовать Pi-hole как DHCP-сервер?

Да, Pi-hole может выступать в роли DHCP-сервера для вашей локальной сети. Это очень удобно, так как все устройства, получающие IP-адрес от Pi-hole, автоматически будут использовать его в качестве DNS-сервера. Чтобы включить DHCP-сервер Pi-hole, перейдите в веб-интерфейсе в Settings > DHCP, включите опцию "DHCP server enabled" и настройте диапазон IP-адресов. ВАЖНО: Перед включением DHCP на Pi-hole, отключите DHCP-сервер на вашем роутере, чтобы избежать конфликтов в сети.

Как настроить DNS over HTTPS/TLS для клиентов?

Pi-hole и Unbound обеспечивают приватность и блокировку рекламы, но трафик между вашим клиентом и VPS обычно идет по обычному DNS (UDP/TCP 53). Если вы хотите зашифровать этот трафик, есть несколько вариантов:

  • На стороне клиента: Использовать приложения типа Stubby (для DNS over TLS) или Cloudflared (для DNS over HTTPS) на каждом клиентском устройстве, настроив их на использование вашего VPS как DoT/DoH сервера.
  • VPN на VPS: Развернуть WireGuard или OpenVPN на том же VPS, и все клиенты, подключенные к VPN, будут автоматически использовать ваш приватный DNS-сервер через зашифрованный туннель. Это наиболее комплексное и безопасное решение для удаленного доступа.
  • Caddy с DoH/DoT: Caddy может быть настроен для предоставления DoH/DoT прокси, перенаправляя запросы на ваш Pi-hole. Это более сложно, но возможно.

В рамках этого руководства мы сосредоточились на базовой настройке, но расширение до DoH/DoT или VPN является логичным следующим шагом для максимальной безопасности и приватности.

Выводы и следующие шаги

Поздравляем! Вы успешно развернули и настроили Pi-hole и Unbound на своем VPS, создав мощный, приватный и эффективный DNS-сервер, который блокирует рекламу и трекеры на уровне сети. Это значительно повышает вашу конфиденциальность, ускоряет просмотр веб-страниц и дает вам полный контроль над DNS-запросами, не полагаясь на сторонних провайдеров.

Следующие шаги для дальнейшего улучшения и расширения вашего решения:

  • Интеграция с домашней сетью: Настройте ваш домашний роутер для использования Pi-hole в качестве основного DNS-сервера, чтобы все устройства в вашей локальной сети автоматически получали преимущества блокировки рекламы и приватности.
  • Развертывание VPN на том же VPS: Для доступа к вашему приватному DNS-серверу извне домашней сети (например, в поездках или при использовании мобильного интернета), рассмотрите возможность установки WireGuard или OpenVPN на том же VPS. Это позволит вам безопасно туннелировать весь трафик через ваш сервер, защищая его от отслеживания и цензуры.
  • Мониторинг и оптимизация: Регулярно просматривайте логи Pi-hole, экспериментируйте с различными списками блокировки, добавляйте домены в белый/черный список. Следите за потреблением ресурсов VPS, чтобы убедиться, что система работает оптимально.
  • Расширенные функции Pi-hole: Изучите возможности Pi-hole по созданию групп клиентов, назначению разных списков блокировки для разных устройств или пользователей, а также настройке локальных DNS-записей для ваших внутренних сервисов.

Поделиться этой записью:

развёртывание pi-hole и unbound на vps: приватный dns и блокировка рекламы
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.