Как настроить AdGuard Home на публичном сервере
- Введение
- Варианты настройки
- Регистрация доменного имени
- Аренда облачного сервера
- Подключение к своему серверу
- Установка AdGuard Home
- Первичная настройка
- Получение сертификата TLS
- Настройка шифрования в AdGuard Home
- Настройка устройств
- Настройка клиентов
- Вопросы и предложения
Введение
Начнём с краткого рассказа об AdGuard Home и о том, почему мы его создали. AdGuard Home — это не обычный блокировщик контента, работающий в вашем браузере. И не полнофункциональный блокировщик, работающий на уровне системы (как, например, премиум-приложения AdGuard). Это общесетевой блокировщик, и его цель — защитить ВСЕ ваши устройства одновременно.
Дисклеймер: В том виде, в котором он существует сегодня, AdGuard Home рассчитан скорее на продвинутых пользователей и технических специалистов, которые знают, что такое Linux и как его использовать. Если вы себя к ним не относите, вероятно, эта статья не для вас. Но следите за обновлениями! Прямо сейчас, пока вы это читаете, мы делаем продукт для сетевой блокировки, подходящий и понятный всем :)
Варианты настройки
Есть два «основных» способа настроить AdGuard Home. Первый — установить его дома на какое-нибудь устройство вроде Raspberry Pi. В этом случае оно будет управлять всеми устройствами в вашей домашней сети. Однако как только ваше устройство покидает домашнюю сеть (например, вы берёте телефон с собой и уходите), оно больше не будет защищено. Я не буду здесь описывать этот вариант настройки, но вы можете прочитать эту инструкцию.
Второй способ — это установить AdGuard Home на публичном (общедоступном) облачном сервере, подключить шифрование (это важно!) и настроить ваши устройства на использование нового сервера. Это, разумеется, не бесплатно — вы будете платить за сервер (~5 долларов в месяц) и доменное имя (~5-10 долларов в год), но зато теперь, куда бы вы ни пошли, AdGuard Home продолжит выполнять свою работу. А поскольку это ваш сервер, то контроль над вашими данными также будет у вас.
В этой статье мы остановимся на втором способе. Настройка AdGuard Home в вашей домашней сети будет темой для будущих статей.
Дисклеймер: большинство шагов в этой инструкции, а также сервисы, которые я использую, можно заменить любыми альтернативными. Я описываю свой путь настройки, а ваши предпочтения могут отличаться (и это нормально).
Регистрация доменного имени
Прежде всего надо зарегистрировать домен. Для этого я предпочитаю пользоваться GoDaddy, но есть и многие другие. Например, Name.com, Google Domains, Namecheap.
Подумайте, какое имя вам нравится больше всего, и едем дальше!
Как только у вас появилось своё доменное имя, можно переходить к следующему шагу — аренде общедоступного облачного сервера.
Аренда облачного сервера
Облачный сервер — это, по сути, виртуальная машина, которая работает в инфраструктуре некоторой хостинговой компании. Он имеет общедоступный статический IP-адрес, и вы можете подключиться к нему из любого места. Для своих небольших личных проектов я предпочитаю использовать либо DigitalOcean, либо Vultr, но вы можете выбрать любого другого хостинг-провайдера.
Теперь давайте арендуем сервер. У DigitalOcean они называются "Droplets", поэтому нажимаем "Create Droplets".
Прежде всего выбираем операционную систему. Я предпочитаю Debian 10, но в целом, AdGuard Home может работать на чём угодно.
Вам не понадобится особо мощный сервер для вашего частного AdGuard Home, поэтому просто выберите самый дешёвый из доступных тарифов.
Последний шаг — настройка аутентификации. Доступна аутентификация по паролю, но я настоятельно рекомендую использовать аутентификацию по ключу SSH.
Сервер будет создан за 30 секунд, и можно начинать им пользоваться!
Подключение к своему серверу
Если вы используете Linux или macOS, откройте Терминал и введите ssh root@ipaddress
. Вместо ipaddress
впишите IP-адрес вашего нового сервера, чтобы подключиться к нему.
Если вы пользователь Windows, возможно, вам понадобится для этого дополнительное программное обеспечение (например, Putty или WSL).
После успешного подключения к серверу вы увидите такую командную строку:
Наконец, можно установить и сам AdGuard Home!
Установка AdGuard Home
Есть множество опций установки AdGuard Home. Через Docker или SnapStore, скачать и запустить вручную. В этом посте я опишу сценарий автоматической установки.
Сначала выполните следующую команду:
apt update
apt install curl
apt install dnsutils
Теперь запустите установочный скрипт:
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
Ура! AdGuard Home установлен, и вы можете открыть его веб-интерфейс (скрипт установки передаст его адрес).
Первичная настройка
Первичная настройка позволяет задать общие параметры, выбрать сетевые интерфейсы, на которых AGH должен работать, и ввести учётные данные администратора.
Выбирайте сложный пароль! Это публичный сервер, и здесь важно не забывать об осторожности. Проверьте пароль на Haveibeenpwned, чтобы убедиться, что он не попал в слитые базы данных.
Поздравляем, вы установили собственный сервер AdGuard Home! Теперь вы можете проверить, работает ли он, отправив ему DNS-запрос:
nslookup example.org ipaddress
(замените ipaddress
на IP-адрес вашего сервера).
Вот как будет выглядеть панель AdGuard Home:
А теперь давайте взглянем на некоторые важные функции AdGuard Home.
Чёрные списки
По умолчанию AdGuard Home использует единственный черный список, который называется DNS-фильтр AdGuard. Это тот же список, который мы используем в AdGuard DNS, и я бы сказал, что он довольно удобен для обычного пользователя. Политика этого списка заключается в том, чтобы избегать блокировки доменов, если такая блокировка многое ломает.
Однако с AdGuard Home всё под вашим контролем, и вы можете выбрать любые наиболее подходящие вам списки для блокировки.
Журнал запросов
Здесь вы можете наблюдать за сетевой активностью и решать, что нужно заблокировать, а что разблокировать.
Настройки DNS -> Настройки доступа
Этот раздел очень важен, если вы используете общедоступный сервер. Многие люди сканируют интернет в поисках общедоступных DNS-серверов и пытаются использовать их для DDoS-атаки с DNS-усилением. AdGuard Home имеет разумное ограничение скорости по умолчанию, так что это не серьёзная проблема, но если вы не хотите видеть в статистике чужие IP-адреса, вы можете ограничить доступ.
Больше возможностей
В AdGuard Home много других интересных функций, рекомендуем поисследовать его самостоятельно. Вот очень подробный обзор, которые может помочь во всём разобраться.
А пока нам нужно решить вот какую проблему. Сейчас у вас есть простой незашифрованный DNS-сервер. Поскольку он общедоступный и все ваши DNS-запросы проходят через интернет, нам надо их зашифровать. Следовательно, следующим шагом будет настройка шифрования.
Получение сертификата TLS
Шифрование основано на сертификатах TLS, которые вы можете получить бесплатно, но только если у вас есть доменное имя. Рассмотрим, как его зарегистрировать и привязать к IP-адресу вашего нового сервера.
Снова зайдите в GoDaddy (или к другому регистратору доменов, который вы использовали), затем перейдите в DNS -> Manage Zones -> найдите там свой домен и измените значение записи "A" на IP-адрес вашего сервера.
Добавьте новую запись “A” для * , чтобы все поддомены также указывали на AdGuard Home — это нужно для более гибкой настройки клиентов, но о ней позже.
Теперь вы можете перейти на главную страницу AdGuard, используя доменное имя вместо IP-адреса.
Проблема в том, что он по-прежнему помечен браузером как «Небезопасный». Чтобы сделать его безопасным и зашифрованным, нам нужно получить сертификат, и самый простой способ сделать это бесплатно — использовать Let's Encrypt.
Let's Encrypt — это некоммерческая организация, которая бесплатно предоставляет сертификаты TLS. Вам просто нужно подтвердить, что вы являетесь владельцем домена. Для этого вам нужно использовать клиентский инструмент. Самый популярный вариант — CertBot, но я лично предпочитаю использовать Lego.
Нам потребуется получить Wildcard-сертификат, чтобы мы могли зашифровать не только ваш основной домен, но и его поддомены.
Прежде всего, нам нужно создать ключи API для GoDaddy. Выбирайте опцию "production". Там вы получите «ключ» и «секрет», они вам понадобятся.
Если вы выбрали не GoDaddy, посмотрите документацию Lego о том, как использовать его с другим DNS-провайдером.
Теперь у вас всё готово. Мы также подготовили скрипт, который упростит получение сертификата. Выполните следующие команды:
mkdir /opt/lego
cd /opt/lego
curl -s "https://raw.githubusercontent.com/ameshkov/legoagh/master/lego.sh" --output lego.sh
chmod +x lego.sh
Чтобы получить сертификаты, вам просто нужно выполнить следующую команду.
Не забудьте указать свои данные (доменное имя, адрес электронной почты, ключ и секрет).
DOMAIN_NAME="example.org" \
EMAIL="you@email" \
DNS_PROVIDER="godaddy" \
GODADDY_API_KEY="yourapikey" \
GODADDY_API_SECRET="yourapisecret" \
./lego.sh
Как только скрипт завершит работу, он поместит ваш сертификат и ключ в ту же директорию.
Настройка шифрования в AdGuard Home
Теперь, когда у вас есть сертификат TLS, пора использовать его в AdGuard Home. Зайдите в Настройки -> Шифрование.
Включите шифрование и настройте имя вашего сервера:
Настройте AdGuard Home на использование только что полученного сертификата:
Готово! Теперь AdGuard Home может работать по зашифрованным протоколам: DNS-over-HTTPS, DNS-over-TLS и DNS-over-QUIC.
Пора заставить ваши устройства тоже его использовать.
Настройка устройств
На самом деле, в AdGuard Home есть «Руководство по установке», где объясняется, как настроить все устройства.
Конечно, предпочтительнее использовать приложения AdGuard, поддерживающие DNS-фильтрацию:
- AdGuard для Windows
- AdGuard для Android
- AdGuard для iOS
- AdGuard для Mac
- Также вы можете изменить настройки DNS в вашем роутере, чтобы ваши домашние устройства использовали AdGuard Home.
В качестве альтернативы вы можете использовать зашифрованный DNS в нативной имплементации в большинстве современных операционных систем. Возьмём, к примеру, Android.
- Переходим в Настройки -> Сеть -> Расширенные -> Персональный DNS.
- Здесь есть одна хитрость. Вместо того, чтобы просто вводить своё доменное имя, придумайте какой-нибудь поддомен, то есть вместо
example.org
введитеmyandroid.example.org
(для этого мы получили wildcard-сертификат). Таким образом, AdGuard Home сможет идентифицировать устройство.
Теперь вы можете просматривать статистику для этого устройства в AdGuard Home.
Но что, если нужны разные настройки для разных устройств? Например, вы хотите установить более строгие настройки для устройств ваших детей.
Сделать это проще простого.
Настройка клиентов
Откройте AdGuard Home и перейдите в Настройки -> Настройки клиентов. Давайте создадим клиент для вашего Android устройства.
Вам необходимо ввести имя устройства (назовём его, например, Harry) и его идентификатор (в данном случае это будет myandroid).
И что же мы можем сделать с Harry?
- Выбрать, следует ли применять глобальные чёрные списки для трафика Harry.
- Включить списки защиты от фишинга и вредоносного ПО.
- Блокировать сайты для взрослых и включить безопасный поиск во всех основных поисковых системах.
- Запретить Harry доступ к определённым сервисам (например, Reddit или TikTok).
- Перенаправить трафик Harry на другой вышестоящий DNS-сервер.
В AdGuard Home вы можете создавать собственные правила фильтрации, которые изменяют трафик DNS. Вы можете что-то заблокировать, разблокировать, изменить, перезаписать и т.д. При желании, эти настраиваемые правила фильтрации могут применяться к конкретными клиентами. Возьмем для примера правило, которое нужно добавить, если вы хотите запретить Harry посещать icloud.com
:
||icloud.com^$client=Harry
Можете проверить его применение на устройстве, и вуаля — сайт недоступен.
Вопросы и предожения
AdGuard Home — это продукт с открытым исходным кодом, доступным на Github. Если у вас есть какие-либо вопросы или предложения, вы можете начать там новое обсуждение.
А если вы хотите внести свой вклад в разработку, есть несколько способов сделать это. Приглашаем вас тестировать бета- и более ранние версии, помогать с переводами или даже открыть пул-реквест и добавить свой код.