Как настроить AdGuard Home на публичном сервере
- Введение
- Варианты настройки
- Регистрация доменного имени
- Аренда облачного сервера
- Подключение к своему серверу
- Установка AdGuard Home
- Первичная настройка
- Получение сертификата TLS
- Настройка шифрования в AdGuard Home
- Настройка устройств
- Настройка клиентов
- Вопросы и предложения
Введение
Начнём с краткого рассказа об AdGuard Home и о том, почему мы его создали. AdGuard Home — это не обычный блокировщик контента, работающий в вашем браузере. И не полнофункциональный блокировщик, работающий на уровне системы (как, например, премиум-приложения AdGuard). Это общесетевой блокировщик, и его цель — защитить ВСЕ ваши устройства одновременно.
Дисклеймер: В том виде, в котором он существует сегодня, AdGuard Home рассчитан скорее на продвинутых пользователей и технических специалистов, которые знают, что такое Linux и как его использовать. Если вы себя к ним не относите, вероятно, эта статья не для вас. Но следите за обновлениями! Прямо сейчас, пока вы это читаете, мы делаем продукт для сетевой блокировки, подходящий и понятный всем :)
Варианты настройки
Есть два «основных» способа настроить AdGuard Home. Первый — установить его дома на какое-нибудь устройство вроде Raspberry Pi. В этом случае оно будет управлять всеми устройствами в вашей домашней сети. Однако как только ваше устройство покидает домашнюю сеть (например, вы берёте телефон с собой и уходите), оно больше не будет защищено. Я не буду здесь описывать этот вариант настройки, но вы можете прочитать эту инструкцию.
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/in-depth-review/home_1.png?mw=1360)
Второй способ — это установить AdGuard Home на публичном (общедоступном) облачном сервере, подключить шифрование (это важно!) и настроить ваши устройства на использование нового сервера. Это, разумеется, не бесплатно — вы будете платить за сервер (~5 долларов в месяц) и доменное имя (~5-10 долларов в год), но зато теперь, куда бы вы ни пошли, AdGuard Home продолжит выполнять свою работу. А поскольку это ваш сервер, то контроль над вашими данными также будет у вас.
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/in-depth-review/home_2.png?mw=1360)
В этой статье мы остановимся на втором способе. Настройка AdGuard Home в вашей домашней сети будет темой для будущих статей.
Дисклеймер: большинство шагов в этой инструкции, а также сервисы, которые я использую, можно заменить любыми альтернативными. Я описываю свой путь настройки, а ваши предпочтения могут отличаться (и это нормально).
Регистрация доменного имени
Прежде всего надо зарегистрировать домен. Для этого я предпочитаю пользоваться GoDaddy, но есть и многие другие. Например, Name.com, Google Domains, Namecheap.
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/godaddy_cart.png?mw=1360)
Подумайте, какое имя вам нравится больше всего, и едем дальше!
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/.godaddy_start~imageoptim.png?mw=1360)
Как только у вас появилось своё доменное имя, можно переходить к следующему шагу — аренде общедоступного облачного сервера.
Аренда облачного сервера
Облачный сервер — это, по сути, виртуальная машина, которая работает в инфраструктуре некоторой хостинговой компании. Он имеет общедоступный статический IP-адрес, и вы можете подключиться к нему из любого места. Для своих небольших личных проектов я предпочитаю использовать либо DigitalOcean, либо Vultr, но вы можете выбрать любого другого хостинг-провайдера.
Теперь давайте арендуем сервер. У DigitalOcean они называются "Droplets", поэтому нажимаем "Create Droplets".
Прежде всего выбираем операционную систему. Я предпочитаю Debian 10, но в целом, AdGuard Home может работать на чём угодно.
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/do_create_droplets.png?mw=1360)
Вам не понадобится особо мощный сервер для вашего частного AdGuard Home, поэтому просто выберите самый дешёвый из доступных тарифов.
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/do_tariffs.png?mw=1360)
Последний шаг — настройка аутентификации. Доступна аутентификация по паролю, но я настоятельно рекомендую использовать аутентификацию по ключу SSH.
Сервер будет создан за 30 секунд, и можно начинать им пользоваться!
Подключение к своему серверу
Если вы используете Linux или macOS, откройте Терминал и введите ssh root@ipaddress
. Вместо ipaddress
впишите IP-адрес вашего нового сервера, чтобы подключиться к нему.
Если вы пользователь Windows, возможно, вам понадобится для этого дополнительное программное обеспечение (например, Putty или WSL).
После успешного подключения к серверу вы увидите такую командную строку:
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/terminal.png?mw=1360)
Наконец, можно установить и сам 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 установлен, и вы можете открыть его веб-интерфейс (скрипт установки передаст его адрес).
Первичная настройка
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/agh_welcome.png?mw=1360)
Первичная настройка позволяет задать общие параметры, выбрать сетевые интерфейсы, на которых AGH должен работать, и ввести учётные данные администратора.
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/agh_auth.png?mw=1360)
Выбирайте сложный пароль! Это публичный сервер, и здесь важно не забывать об осторожности. Проверьте пароль на Haveibeenpwned, чтобы убедиться, что он не попал в слитые базы данных.
Поздравляем, вы установили собственный сервер AdGuard Home! Теперь вы можете проверить, работает ли он, отправив ему DNS-запрос:
nslookup example.org ipaddress
(замените ipaddress
на IP-адрес вашего сервера).
Вот как будет выглядеть панель AdGuard Home:
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/agh_dashboard.png?mw=1360)
А теперь давайте взглянем на некоторые важные функции AdGuard Home.
Чёрные списки
По умолчанию AdGuard Home использует единственный черный список, который называется DNS-фильтр AdGuard. Это тот же список, который мы используем в AdGuard DNS, и я бы сказал, что он довольно удобен для обычного пользователя. Политика этого списка заключается в том, чтобы избегать блокировки доменов, если такая блокировка многое ломает.
Однако с AdGuard Home всё под вашим контролем, и вы можете выбрать любые наиболее подходящие вам списки для блокировки.
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/agh_blocklists.png?mw=1360)
Журнал запросов
Здесь вы можете наблюдать за сетевой активностью и решать, что нужно заблокировать, а что разблокировать.
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/agh_querylog.png?mw=1360)
Настройки DNS -> Настройки доступа
Этот раздел очень важен, если вы используете общедоступный сервер. Многие люди сканируют интернет в поисках общедоступных DNS-серверов и пытаются использовать их для DDoS-атаки с DNS-усилением. AdGuard Home имеет разумное ограничение скорости по умолчанию, так что это не серьёзная проблема, но если вы не хотите видеть в статистике чужие IP-адреса, вы можете ограничить доступ.
Больше возможностей
В AdGuard Home много других интересных функций, рекомендуем поисследовать его самостоятельно. Вот очень подробный обзор, которые может помочь во всём разобраться.
А пока нам нужно решить вот какую проблему. Сейчас у вас есть простой незашифрованный DNS-сервер. Поскольку он общедоступный и все ваши DNS-запросы проходят через интернет, нам надо их зашифровать. Следовательно, следующим шагом будет настройка шифрования.
Получение сертификата TLS
Шифрование основано на сертификатах TLS, которые вы можете получить бесплатно, но только если у вас есть доменное имя. Рассмотрим, как его зарегистрировать и привязать к IP-адресу вашего нового сервера.
Снова зайдите в GoDaddy (или к другому регистратору доменов, который вы использовали), затем перейдите в DNS -> Manage Zones -> найдите там свой домен и измените значение записи "A" на IP-адрес вашего сервера.
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/godaddy_dns.png?mw=1360)
Добавьте новую запись “A” для * , чтобы все поддомены также указывали на AdGuard Home — это нужно для более гибкой настройки клиентов, но о ней позже.
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/godaddy_dns_wildcard.png?mw=1360)
Теперь вы можете перейти на главную страницу AdGuard, используя доменное имя вместо IP-адреса.
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/agh_login.png?mw=1360)
Проблема в том, что он по-прежнему помечен браузером как «Небезопасный». Чтобы сделать его безопасным и зашифрованным, нам нужно получить сертификат, и самый простой способ сделать это бесплатно — использовать 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. Зайдите в Настройки -> Шифрование.
Включите шифрование и настройте имя вашего сервера:
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/agh_encryption_1.png?mw=1360)
Настройте AdGuard Home на использование только что полученного сертификата:
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/agh_encryption_2.png?mw=1360)
Готово! Теперь 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 сможет идентифицировать устройство.
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/android_private_dns.png?mw=1360)
Теперь вы можете просматривать статистику для этого устройства в AdGuard Home.
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/agh_top_clients.png?mw=1360)
Но что, если нужны разные настройки для разных устройств? Например, вы хотите установить более строгие настройки для устройств ваших детей.
Сделать это проще простого.
Настройка клиентов
Откройте AdGuard Home и перейдите в Настройки -> Настройки клиентов. Давайте создадим клиент для вашего Android устройства.
Вам необходимо ввести имя устройства (назовём его, например, Harry) и его идентификатор (в данном случае это будет myandroid).
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/agh_new_client.png?mw=1360)
И что же мы можем сделать с Harry?
- Выбрать, следует ли применять глобальные чёрные списки для трафика Harry.
- Включить списки защиты от фишинга и вредоносного ПО.
- Блокировать сайты для взрослых и включить безопасный поиск во всех основных поисковых системах.
- Запретить Harry доступ к определённым сервисам (например, Reddit или TikTok).
- Перенаправить трафик Harry на другой вышестоящий DNS-сервер.
В AdGuard Home вы можете создавать собственные правила фильтрации, которые изменяют трафик DNS. Вы можете что-то заблокировать, разблокировать, изменить, перезаписать и т.д. При желании, эти настраиваемые правила фильтрации могут применяться к конкретными клиентами. Возьмем для примера правило, которое нужно добавить, если вы хотите запретить Harry посещать icloud.com
:
||icloud.com^$client=Harry
Можете проверить его применение на устройстве, и вуаля — сайт недоступен.
![](https://cdn.adtidy.org/public/Adguard/Blog/AGHome/public-server/android_blocked.png?0=&mw=1360)
Вопросы и предожения
AdGuard Home — это продукт с открытым исходным кодом, доступным на Github. Если у вас есть какие-либо вопросы или предложения, вы можете начать там новое обсуждение.
А если вы хотите внести свой вклад в разработку, есть несколько способов сделать это. Приглашаем вас тестировать бета- и более ранние версии, помогать с переводами или даже открыть пул-реквест и добавить свой код.