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-запросов.
У вас нет пользовательских правил фильтрации, которые могли бы мешать настройкам на странице Фильтры → Пользовательские правила фильтрации.
Где просмотреть логи?
Дефолтное расположение текстовых логов (не путайте их с теми, что в Журнале запросов) зависит от операционной системы и режима установки:
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
.
Как отобразить пользовательскую страницу блокировки?
note
Прежде чем выполнять все эти действия, обратите внимание, что современные браузеры настроены на использование 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
}
Отключите шифрование 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 в другое место. Вся необходимая информация есть в разделе Ограничения на странице Начало работы.
Как обновить 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. On most Unix systems the default directory is
/opt/AdGuardHome
, but on macOS it’s/Applications/AdGuardHome
.Остановите AdGuard Home:
sudo ./AdGuardHome -s stop
OpenBSD
On OpenBSD, you will probably want to use
doas
instead ofsudo
.Backup your data. That is, your configuration file and the data directory (
AdGuardHome.yaml
anddata/
by default). For example, to backup your data to a new directory called~/my-agh-backup
:mkdir -p ~/my-agh-backup
cp -r ./AdGuardHome.yaml ./data ~/my-agh-backup/Extract the AdGuard Home archive to a temporary directory. For example, if you downloaded the archive to your
~/Downloads
directory and want to extract it to/tmp/
:tar -C /tmp/ -f ~/Downloads/AdGuardHome_linux_amd64.tar.gz -x -v -z
On macOS, type something like:
unzip -d /tmp/ ~/Downloads/AdGuardHome_darwin_amd64.zip
Replace the old AdGuard Home executable file with the new one. On most Unix systems the command would look something like this:
sudo cp /tmp/AdGuardHome/AdGuardHome /opt/AdGuardHome/AdGuardHome
On macOS, something like:
sudo cp /tmp/AdGuardHome/AdGuardHome /Applications/AdGuardHome/AdGuardHome
You may also want to copy the documentation parts of the package, such as the change log (
CHANGELOG.md
), the README file (README.md
), and the license (LICENSE.txt
).You can now remove the temporary directory.
Перезапустите AdGuard Home:
sudo ./AdGuardHome -s start
Windows (Using PowerShell)
In all examples below, the PowerShell must be run as Administrator.
Загрузите новый пакет AdGuard Home со страницы релизов. If you want to perform this step from the command line:
$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"Navigate to the directory where AdGuard Home was installed. In the examples below, we’ll use
C:\Program Files\AdGuardHome
.Остановите AdGuard Home:
.\AdGuardHome.exe -s stop
Backup your data. That is, your configuration file and the data directory (
AdGuardHome.yaml
anddata/
by default). For example, to backup your data to a new directory calledmy-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 -RecurseExtract the AdGuard Home archive to a temporary directory. For example, if you downloaded the archive to your
Downloads
directory and want to extract it to a temporary directory:$outFile = Join-Path -Path $Env:USERPROFILE -ChildPath 'Downloads\AdGuardHome_windows_amd64.zip'
Expand-Archive -Path "$outFile" -DestinationPath $Env:TEMPReplace the old AdGuard Home executable file with the new one. Например:
$aghExe = Join-Path -Path $Env:TEMP -ChildPath 'AdGuardHome\AdGuardHome.exe'
Copy-Item -Path "$aghExe" -Destination .\AdGuardHome.exeYou may also want to copy the documentation parts of the package, such as the change log (
CHANGELOG.md
), the README file (README.md
), and the license (LICENSE.txt
).You can now remove the temporary directory.
Перезапустите AdGuard Home:
.\AdGuardHome.exe -s start
How do I uninstall AdGuard Home?
Depending on how you installed AdGuard Home, there are different ways to uninstall it.
caution
Before uninstalling AdGuard Home, don’t forget to change the configuration of your devices and point them to a different DNS server.
Regular installation
In this case, do the following:
Unregister AdGuard Home service:
./AdGuardHome -s uninstall
.Remove the AdGuard Home directory.
Docker
Simply stop and remove the image.
Snap Store
snap remove adguard-home