FAQ
Почему AdGuard Home не блокирует рекламу или онлайн-угрозы?
Предположим, вы хотите, чтобы AdGuard Home заблокировал somebadsite.com
, но по какой-то причине он этого не делает. Попробуем решить эту проблему.
Скорее всего, вы не настроили устройство на использование AdGuard Home в качестве DNS-сервера по умолчанию. Чтобы проверить, используете ли вы AdGuard Home в качестве DNS-сервера по умолчанию:
В Windows откройте командную строку (Пуск → Выполнить →
cmd.exe
). В других системах откройте приложение Терминал.Выполните команду
nslookup example.org
. В результате вы увидите что-то вроде этого:Server: 192.168.0.1
Address: 192.168.0.1#53
Non-authoritative answer:
Name: example.org
Address: <IPv4>
Name: example.org
Address: <IPv6>Проверьте, является ли IP-адрес, указанный в строке
Server
, тем, на котором запущен AdGuard Home. Если нет, нужно соответствующим образом настроить устройство. Как это сделать, смотрите ниже.Убедитесь, что ваш запрос к
example.org
отображается в интерфейсе AdGuard Home в Журнале запросов. Если нет, необходимо настроить AdGuard Home на прослушивание указанного сетевого интерфейса. Самый простой способ сделать это — переустановить AdGuard Home с настройками по умолчанию.
Если вы уверены, что ваше устройство использует AdGuard Home в качестве DNS-сервера по умолчанию, но проблема сохраняется, это может быть связано с неправильной настройкой AdGuard Home. Пожалуйста, проверьте и убедитесь, что:
Вы включили настройку Блокировать домены с использованием фильтров и файлов hosts во вкладке Настройки → Основные настройки.
Вы включили соответствующие механизмы безопасности, такие как родительский контроль, на той же странице.
Вы включили соответствующие фильтры, перейдя в Фильтры → Чёрные списки DNS.
У вас нет списков правил исключений, которые могли бы разрешить запросы, включённые на странице Фильтры → Белые списки DNS.
У вас нет перезаписей DNS, которые могли бы мешать работе страницы Фильтры → Перезапись DNS-запросов.
У вас нет пользовательских правил фильтрации, которые могли бы мешать настройкам на странице Фильтры → Пользовательские правила фильтрации.
Что означает «Заблокировано по CNAME или IP» в журнале запросов?
AdGuard Home проверяет как DNS-запросы, так и DNS-ответы, чтобы предотвратить технику обхода блокировки рекламы, известную как CNAME cloaking. То есть если в ваших правилах фильтрации указан домен, скажем, tracker.example
, а DNS-ответ для другого доменного имени, например blogs.example
, содержит это доменное имя среди своих CNAME-записей, то этот ответ будет заблокирован, поскольку он действительно ведёт на заблокированный сервис отслеживания.
Где просмотреть логи?
Дефолтное расположение текстовых логов (не путайте их с теми, что в Журнале запросов) зависит от операционной системы и режима установки:
OpenWrt Linux: используйте команду
logread -e AdGuardHome
.Системы Linux с systemd и другие системы Unix с SysV-стилем init: используйте команду
/var/log/AdGuardHome.err
.macOS:
/var/log/AdGuardHome.stderr.log
.В системах Linux с Snapcraft используйте команду
snap logs adguard-home
.FreeBSD:
/var/log/daemon.log
.OpenBSD:
/var/log/daemon
.Windows: используйте Журнал событий Windows.
Как настроить AdGuard Home для записи verbose-логов?
Для устранения сложной проблемы иногда требуется собрать verbose-логи. Вот как это можно сделать:
Остановите AdGuard Home:
./AdGuardHome -s stop
Настройте AdGuard Home для записи verbose-логов:
Откройте файл
AdGuardHome.yaml
в своём редакторе.Установите настройку
log.file
в путь до желаемого файла журнала, например/tmp/aghlog.txt
. Обратите внимание, что директория должна существовать.Установите для параметра
log.verbose
значениеtrue
.
Перезапустите AdGuard Home и воспроизведите проблему:
./AdGuardHome -s start
Когда вы закончите отладку, установите
log.verbose
обратно наfalse
.
Как отобразить пользовательскую страницу блокировки?
Прежде чем выполнять все эти действия, обратите внимание, что современные браузеры настроены на использование HTTPS, поэтому они проверяют подлинность сертификата веб-сервера. Это означает, что использование любого из них приведёт к появлению экранов с предупреждениями.
Есть несколько расширений, которые, если они будут достаточно хорошо поддерживаться клиентами, обеспечат лучший опыт использования, в том числе RFC 8914 Extended DNS Error codes и DNS Access Denied Error Page RFC draft. Мы внедрим их, когда браузеры начнут их поддерживать.
Необходимые условия
Чтобы использовать любой из этих методов для отображения пользовательской страницы блокировки, вам понадобится HTTP-сервер, работающий на некотором IP-адресе и обслуживающий соответствующую страницу по всем маршрутам. Что-то вроде pixelserv-tls
.
Пользовательская страница блокировки для фильтров Родительский контроль и Безопасный просмотр
В настоящее время нет возможности установить эти параметры из пользовательского интерфейса, поэтому вам придётся отредактировать файл конфигурации вручную:
Остановите AdGuard Home:
./AdGuardHome -s stop
Откройте файл
AdGuardHome.yaml
в своём редакторе.Установите в настройках
dns.parental_block_host
илиdns.safebrowsing_block_host
IP-адрес сервера (в данном примере192.168.123.45
):# …
dns:
# …
# NOTE: Change to the actual IP address of your server.
parental_block_host: 192.168.123.45
safebrowsing_block_host: 192.168.123.45Перезапустите AdGuard Home:
./AdGuardHome -s start
Пользовательская страница блокировки для других фильтров
Откройте веб-интерфейс.
Перейдите в Настройки → DNS-Настройки.
В разделе Настройки DNS-сервера выберите пункт Свой IP в селекторе Режим блокировки и введите адреса IPv4- и IPv6-серверов.
Нажмите Сохранить.
Как изменить адрес интерфейса дашборда?
Остановите AdGuard Home:
./AdGuardHome -s stop
Откройте файл
AdGuardHome.yaml
в своём редакторе.Установите параметр 'http.address' на новый сетевой интерфейс. Например:
0.0.0.0:0
для прослушивания на всех сетевых интерфейсах;0.0.0.0:8080
для прослушивания всех сетевых интерфейсов с портом8080
;127.0.0.1:0
для прослушивания только локального loopback-интерфейса.
Перезапустите AdGuard Home:
./AdGuardHome -s start
Как настроить AdGuard Home в качестве DNS-сервера по умолчанию?
Вся необходимая информация есть в разделе Настройка устройств на странице Начало работы.
Существуют ли какие-то известные ограничения?
Вот несколько примеров того, что блокировщик DNS-уровня не сможет заблокировать:
Реклама на YouTube, Twitch.
Спонсируемые посты Facebook, X (ранее Twitter), Instagram.
В принципе, любая реклама, имеющая общий домен с контентом, не может быть заблокирована блокировщиком на уровне DNS, если только вы не готовы заблокировать и контент.
Есть ли возможность решить эту проблему в будущем?
DNS никогда с этим не справится. Единственный вариант — использовать прокси-сервер для блокировки контента, как это сделано в приложениях AdGuard. В будущем мы добавим поддержку этой функции в AdGuard Home. К сожалению, даже тогда будут случаи, когда этого будет недостаточно или потребуется довольно сложная настройка.
Почему я получаю ошибку bind: address already in use
при попытке установки на Ubuntu?
Это происходит потому, что порт 53 на localhost
, который используется для DNS, уже занят другой программой. Ubuntu поставляется с локальным DNS под названием systemd-resolved
, который использует адрес 127.0.0.53:53
, что не позволяет AdGuard Home привязываться к 127.0.0.1:53
. Вы можете убедиться в этом, выполнив команду:
sudo lsof -i :53
Результат должен быть похож на следующий:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 14542 systemd-resolve 13u IPv4 86178 0t0 UDP 127.0.0.53:domain
systemd-r 14542 systemd-resolve 14u IPv4 86179 0t0 TCP 127.0.0.53:domain
Чтобы это исправить, вам необходимо либо отключить демон systemd-resolved
, либо выбрать другой сетевой интерфейс и привязать AdGuard Home к доступному IP-адресу на нём, например, к IP-адресу вашего роутера внутри вашей сети. Но если вам нужно прослушивать localhost
, есть несколько решений.
Во-первых, AdGuard Home может обнаружить такие конфигурации и отключить systemd-resolved, если вы нажмёте кнопку *Fix*, расположенную рядом с сообщением
address already in use` на экране установки.
Во-вторых, если это не сработает, следуйте инструкциям ниже. Обратите внимание: если вы используете AdGuard Home с Docker или Snap, вам придётся сделать это самостоятельно.
Создайте каталог
/etc/systemd/resolved.conf.d
, если это необходимо:sudo mkdir -p /etc/systemd/resolved.conf.d
Деактивируйте
DNSStubListener
и обновите адрес DNS-сервера. Для этого создайте новый файл/etc/systemd/resolved.conf.d/adguardhome.conf
со следующим содержимым:[Resolve]
DNS=127.0.0.1
DNSStubListener=no
Указать 127.0.0.1
в качестве адреса DNS-сервера необходимо. В противном случае сервером имён будет 127.0.0.53
, который не будет работать без DNSStubListener
.
Активируйте ещё один файл
resolv.conf
:sudo mv /etc/resolv.conf /etc/resolv.conf.backup
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.confПерезапустите DNSStubListener:
sudo systemctl reload-or-restart systemd-resolved
После этого systemd-resolved
не должен будет отображаться в выводе lsof
, а AdGuard Home сможет привязываться к 127.0.0.1:53
.
Как настроить обратный прокси-сервер для AdGuard Home?
Если вы уже используете веб-сервер и хотите получить доступ к панели управления AdGuard Home с URL-адреса типа http://YOUR_SERVER/aghome/
, вы можете использовать эту конфигурацию для своего веб-сервера:
nginx
location /aghome/ {
proxy_cookie_path / /aghome/;
proxy_pass http://AGH_IP:AGH_PORT/;
proxy_redirect / /aghome/;
proxy_set_header Host $host;
}
caddy
:80/aghome/* {
route {
uri strip_prefix /aghome
reverse_proxy AGH_IP:AGH_PORT
}
}
Или, если вы хотите обслуживать AdGuard Home только с автоматическим TLS, используйте конфигурацию, аналогичную примеру ниже:
DOMAIN {
encode gzip zstd
tls YOUR_EMAIL@DOMAIN
reverse_proxy AGH_IP:AGH_PORT
}
Apache
<VirtualHost *:80>
ProxyPass "/" "http://AGH_IP:AGH_PORT/"
ProxyPassReverse "/" "http://AGH_IP:AGH_PORT/"
PreserveHost On
</VirtualHost>
Не используйте поддиректории с обратным HTTP-прокси Apache. Известная проблема (#6604): Apache обрабатывает относительные перенаправления иначе, чем другие веб-серверы. Это вызывает проблемы с веб-интерфейсом AdGuard Home.
Отключите шифрование DoH на AdGuard Home
Если вы используете TLS на обратном прокси-сервере, вам не нужно использовать TLS на AdGuard Home. Установите allow_unencrypted_doh: true
в AdGuardHome.yaml
, чтобы разрешить AdGuard Home отвечать на запросы DoH без шифрования TLS.
Реальные IP-адреса клиентов
Вы можете установить параметр trusted_proxies
на IP-адрес(-а) вашего HTTP-прокси, чтобы AdGuard Home учитывал заголовки, содержащие реальный IP-адрес клиента. Дополнительную информацию смотрите на страницах настроек и шифрования.
Как исправить ошибки permission denied
на Fedora?
Переместите двоичный файл
AdGuardHome
в/usr/local/bin
.От имени
root
выполните следующую команду, чтобы изменить контекст безопасности файла:chcon -t bin_t /usr/local/bin/AdGuardHome
Добавьте необходимые правила фаервола, чтобы сделать его доступным через сеть. Например:
firewall-cmd --new-zone=adguard --permanent
firewall-cmd --zone=adguard --add-source=192.168.0.14/24 --permanent
firewall-cmd --zone=adguard --add-port=3000/tcp --permanent
firewall-cmd --zone=adguard --add-port=53/udp --permanent
firewall-cmd --zone=adguard --add-port=80/tcp --permanent
firewall-cmd --reload
Если вы по-прежнему получаете code=exited status=203/EXEC
или подобные ошибки из systemctl
, попробуйте удалить AdGuard Home и установить его напрямую в /usr/local/bin
с помощью опции -o
сценария установки:
curl -s -S -L 'https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh' | sh -s -- -o '/usr/local/bin' -v
Смотрите [ошибку 765] и [ошибку 3281].
Как исправить ошибки incompatible file system
?
Переместите установку или рабочую директорию AdGuard Home в другое место. Вся необходимая информация есть в разделе Ограничения на странице Начало работы.
Что означает Error: control/version.json
?
Это сообщение об ошибке означает, что AdGuard Home не смог связаться с серверами AdGuard, чтобы проверить наличие обновлений и/или загрузить их. Это может означать, что серверы заблокированы вашим интернет-провайдером или временно не работают. Если через некоторое время ошибка не устранится, вы можете попробовать выполнить ручное обновление или отключить автоматическую проверку обновлений, запустив исполняемый файл AdGuardHome
с опцией командной строки --no-check-update
.
Как обновить AdGuard Home вручную?
Если кнопка не отображается или автоматическое обновление не удалось, вы можете выполнить его вручную. В примерах ниже мы будем использовать версии AdGuard Home для Linux и Windows для процессоров AMD64.
Unix (Linux, macOS, BSD)
Загрузите новый пакет AdGuard Home со страницы релизов. Если вы хотите выполнить этот шаг из командной строки, введите:
curl -L -S -o '/tmp/AdGuardHome_linux_amd64.tar.gz' -s\
'https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz'Или с помощью
wget
:wget -O '/tmp/AdGuardHome_linux_amd64.tar.gz'\
'https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz'Перейдите в директорию, в которой установлен AdGuard Home. В большинстве систем Unix по умолчанию используется директория '/opt/AdGuardHome', а в macOS — '/Applications/AdGuardHome'.
Остановите AdGuard Home:
sudo ./AdGuardHome -s stop
OpenBSDВ OpenBSD вы, вероятно, захотите использовать
doas
вместоsudo
.Сделайте резервную копию ваших данных. То есть ваш файл конфигурации и каталог данных (по умолчанию
AdGuardHome.yaml
иdata/
). Например, для резервного копирования данных в новую директорию под названием~/my-agh-backup
:mkdir -p ~/my-agh-backup
cp -r ./AdGuardHome.yaml ./data ~/my-agh-backup/Распакуйте архив AdGuard Home во временную директорию. Например, если вы скачали архив в директорию
~/Downloads
и хотите извлечь его в/tmp/
:tar -C /tmp/ -f ~/Downloads/AdGuardHome_linux_amd64.tar.gz -x -v -z
На macOS введите что-то вроде:
unzip -d /tmp/ ~/Downloads/AdGuardHome_darwin_amd64.zip
Замените старый исполняемый файл AdGuard Home на новый. В большинстве Unix-систем команда будет выглядеть примерно так:
sudo cp /tmp/AdGuardHome/AdGuardHome /opt/AdGuardHome/AdGuardHome
На macOS введите что-то вроде:
sudo cp /tmp/AdGuardHome/AdGuardHome /Applications/AdGuardHome/AdGuardHome
Вы также можете скопировать части документации пакета, такие как журнал изменений (
CHANGELOG.md
), файл README (README.md
) и лицензию (LICENSE.txt
).Теперь вы можете удалить временную директорию.
Перезапустите AdGuard Home:
sudo ./AdGuardHome -s start
Windows (с использованием PowerShell)
Во всех приведённых ниже примерах PowerShell должен быть запущен от имени администратора.
Загрузите новый пакет AdGuard Home со страницы релизов. Если вы хотите выполнить этот шаг из командной строки:
$outFile = Join-Path -Path $Env:USERPROFILE -ChildPath 'Downloads\AdGuardHome_windows_amd64.zip'
$aghUri = 'https://static.adguard.com/adguardhome/release/AdGuardHome_windows_amd64.zip'
Invoke-WebRequest -OutFile "$outFile" -Uri "$aghUri"Перейдите в директорию, в которой был установлен AdGuard Home. В приведённых ниже примерах мы будем использовать
C:\Program Files\AdGuardHome
.Остановите AdGuard Home:
.\AdGuardHome.exe -s stop
Сделайте резервную копию ваших данных. То есть ваш файл конфигурации и каталог данных (по умолчанию
AdGuardHome.yaml
иdata/
). Например, для резервного копирования данных в новую директорию под названиемmy-agh-backup
:$newDir = Join-Path -Path $Env:USERPROFILE -ChildPath 'my-agh-backup'
New-Item -Path $newDir -ItemType Directory
Copy-Item -Path .\AdGuardHome.yaml, .\data -Destination $newDir -RecurseРаспакуйте архив AdGuard Home во временную директорию. Например, если вы скачали архив в директорию
Downloads
и хотите извлечь его во временную директорию:$outFile = Join-Path -Path $Env:USERPROFILE -ChildPath 'Downloads\AdGuardHome_windows_amd64.zip'
Expand-Archive -Path "$outFile" -DestinationPath $Env:TEMPЗамените старый исполняемый файл AdGuard Home на новый. Например:
$aghExe = Join-Path -Path $Env:TEMP -ChildPath 'AdGuardHome\AdGuardHome.exe'
Copy-Item -Path "$aghExe" -Destination .\AdGuardHome.exeВы также можете скопировать части документации пакета, такие как журнал изменений (
CHANGELOG.md
), файл README (README.md
) и лицензию (LICENSE.txt
).Теперь вы можете удалить временную директорию.
Перезапустите AdGuard Home:
.\AdGuardHome.exe -s start
Как удалить AdGuard Home?
В зависимости от того, как вы установили AdGuard Home, удалить его можно разными способами.
Перед удалением AdGuard Home не забудьте изменить конфигурацию устройств и направить их на другой DNS-сервер.
Обычная установка
В этом случае сделайте следующее:
Отмените регистрацию сервиса AdGuard Home: './AdGuardHome -s uninstall'.
Удалите домашнюю директорию AdGuard.
Docker
Просто остановитесь и удалите изображение.
Snap Store
snap remove adguard-home