Перейти к основному содержанию

FAQ

Почему AdGuard Home не блокирует рекламу или онлайн-угрозы?​

Предположим, вы хотите, чтобы AdGuard Home заблокировал somebadsite.com, но по какой-то причине он этого не делает. Попробуем решить эту проблему.

Скорее всего, вы не настроили устройство на использование AdGuard Home в качестве DNS-сервера по умолчанию. Чтобы проверить, используете ли вы AdGuard Home в качестве DNS-сервера по умолчанию:

  1. В Windows откройте командную строку (Пуск → Выполнить → cmd.exe). В других системах откройте приложение Терминал.

  2. Выполните команду 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>
  3. Проверьте, является ли IP-адрес, указанный в строке Server, тем, на котором запущен AdGuard Home. Если нет, нужно соответствующим образом настроить устройство. Как это сделать, смотрите ниже.

  4. Убедитесь, что ваш запрос к example.org отображается в интерфейсе AdGuard Home в Журнале запросов. Если нет, необходимо настроить AdGuard Home на прослушивание указанного сетевого интерфейса. Самый простой способ сделать это — переустановить AdGuard Home с настройками по умолчанию.

Если вы уверены, что ваше устройство использует AdGuard Home в качестве DNS-сервера по умолчанию, но проблема сохраняется, это может быть связано с неправильной настройкой AdGuard Home. Пожалуйста, проверьте и убедитесь, что:

  1. Вы включили настройку Блокировать домены с использованием фильтров и файлов hosts во вкладке Настройки → Основные настройки.

  2. Вы включили соответствующие механизмы безопасности, такие как родительский контроль, на той же странице.

  3. Вы включили соответствующие фильтры, перейдя в Фильтры → Чёрные списки DNS.

  4. У вас нет списков правил исключений, которые могли бы разрешить запросы, включённые на странице Фильтры → Белые списки DNS.

  5. У вас нет перезаписей DNS, которые могли бы мешать работе страницы Фильтры → Перезапись DNS-запросов.

  6. У вас нет пользовательских правил фильтрации, которые могли бы мешать настройкам на странице Фильтры → Пользовательские правила фильтрации.

Что означает «Заблокировано по 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-логи. Вот как это можно сделать:

  1. Остановите AdGuard Home:

    ./AdGuardHome -s stop
  2. Настройте AdGuard Home для записи verbose-логов:

    1. Откройте файл AdGuardHome.yaml в своём редакторе.

    2. Установите настройку log.file в путь до желаемого файла журнала, например /tmp/aghlog.txt. Обратите внимание, что директория должна существовать.

    3. Установите для параметра log.verbose значение true.

  3. Перезапустите AdGuard Home и воспроизведите проблему:

    ./AdGuardHome -s start
  4. Когда вы закончите отладку, установите log.verbose обратно на false.

Как отобразить пользовательскую страницу блокировки?​

note

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

Есть несколько расширений, которые, если они будут достаточно хорошо поддерживаться клиентами, обеспечат лучший опыт использования, в том числе RFC 8914 Extended DNS Error codes и DNS Access Denied Error Page RFC draft. Мы внедрим их, когда браузеры начнут их поддерживать.

Необходимые условия​

Чтобы использовать любой из этих методов для отображения пользовательской страницы блокировки, вам понадобится HTTP-сервер, работающий на некотором IP-адресе и обслуживающий соответствующую страницу по всем маршрутам. Что-то вроде pixelserv-tls.

Пользовательская страница блокировки для фильтров Родительский контроль и Безопасный просмотр​

В настоящее время нет возможности установить эти параметры из пользовательского интерфейса, поэтому вам придётся отредактировать файл конфигурации вручную:

  1. Остановите AdGuard Home:

    ./AdGuardHome -s stop
  2. Откройте файл AdGuardHome.yaml в своём редакторе.

  3. Установите в настройках 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
  4. Перезапустите AdGuard Home:

    ./AdGuardHome -s start

Пользовательская страница блокировки для других фильтров​

  1. Откройте веб-интерфейс.

  2. Перейдите в Настройки → DNS-Настройки.

  3. В разделе Настройки DNS-сервера выберите пункт Свой IP в селекторе Режим блокировки и введите адреса IPv4- и IPv6-серверов.

  4. Нажмите Сохранить.

Как изменить адрес интерфейса дашборда?​

  1. Остановите AdGuard Home:

    ./AdGuardHome -s stop
  2. Откройте файл AdGuardHome.yaml в своём редакторе.

  3. Установите параметр 'http.address' на новый сетевой интерфейс. Например:

    • 0.0.0.0:0 для прослушивания на всех сетевых интерфейсах;
    • 0.0.0.0:8080 для прослушивания всех сетевых интерфейсов с портом 8080;
    • 127.0.0.1:0 для прослушивания только локального loopback-интерфейса.
  4. Перезапустите AdGuard Home:

    ./AdGuardHome -s start

Как настроить AdGuard Home в качестве DNS-сервера по умолчанию?​

See the Configuring Devices section on the Getting Started page.

Существуют ли какие-то известные ограничения?​

Вот несколько примеров того, что блокировщик 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, вам придётся сделать это самостоятельно.

  1. Создайте каталог /etc/systemd/resolved.conf.d, если это необходимо:

    sudo mkdir -p /etc/systemd/resolved.conf.d
  2. Деактивируйте 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.

  1. Активируйте ещё один файл resolv.conf:

    sudo mv /etc/resolv.conf /etc/resolv.conf.backup
    sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
  2. Перезапустите 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>
note

Не используйте поддиректории с обратным 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?​

  1. Переместите двоичный файл AdGuardHome в /usr/local/bin.

  2. От имени root выполните следующую команду, чтобы изменить контекст безопасности файла:

    chcon -t bin_t /usr/local/bin/AdGuardHome
  3. Добавьте необходимые правила фаервола, чтобы сделать его доступным через сеть. Например:

    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)​

  1. Загрузите новый пакет 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'
  2. Перейдите в директорию, в которой установлен AdGuard Home. В большинстве систем Unix по умолчанию используется директория '/opt/AdGuardHome', а в macOS — '/Applications/AdGuardHome'.

  3. Остановите AdGuard Home:

    sudo ./AdGuardHome -s stop
    OpenBSD

    В OpenBSD вы, вероятно, захотите использовать doas вместо sudo.

  4. Сделайте резервную копию ваших данных. То есть ваш файл конфигурации и каталог данных (по умолчанию AdGuardHome.yaml и data/). Например, для резервного копирования данных в новую директорию под названием ~/my-agh-backup:

    mkdir -p ~/my-agh-backup
    cp -r ./AdGuardHome.yaml ./data ~/my-agh-backup/
  5. Распакуйте архив AdGuard Home во временную директорию. For example, if you downloaded the archive to your /tmp/ directory:

    tar -C /tmp/ -f /tmp/AdGuardHome_linux_amd64.tar.gz -x -v -z

    На macOS введите что-то вроде:

    unzip -d /tmp/ /tmp/AdGuardHome_darwin_amd64.zip
  6. Замените старый исполняемый файл 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).

    Теперь вы можете удалить временную директорию.

  7. Перезапустите AdGuard Home:

    sudo ./AdGuardHome -s start

Windows (с использованием PowerShell)​

Во всех приведённых ниже примерах PowerShell должен быть запущен от имени администратора.

  1. Загрузите новый пакет 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"
  2. Перейдите в директорию, в которой был установлен AdGuard Home. В приведённых ниже примерах мы будем использовать C:\Program Files\AdGuardHome.

  3. Остановите AdGuard Home:

    .\AdGuardHome.exe -s stop
  4. Сделайте резервную копию ваших данных. То есть ваш файл конфигурации и каталог данных (по умолчанию 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
  5. Распакуйте архив AdGuard Home во временную директорию. Например, если вы скачали архив в директорию Downloads и хотите извлечь его во временную директорию:

    $outFile = Join-Path -Path $Env:USERPROFILE -ChildPath 'Downloads\AdGuardHome_windows_amd64.zip'
    Expand-Archive -Path "$outFile" -DestinationPath $Env:TEMP
  6. Замените старый исполняемый файл 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).

    Теперь вы можете удалить временную директорию.

  7. Перезапустите AdGuard Home:

    .\AdGuardHome.exe -s start

Как удалить AdGuard Home?​

В зависимости от того, как вы установили AdGuard Home, удалить его можно разными способами.

caution

Перед удалением AdGuard Home не забудьте изменить конфигурацию устройств и направить их на другой DNS-сервер.

Обычная установка​

В этом случае сделайте следующее:

  • Отмените регистрацию сервиса AdGuard Home: './AdGuardHome -s uninstall'.

  • Удалите домашнюю директорию AdGuard.

Docker​

Просто остановитесь и удалите изображение.

Snap Store​

snap remove adguard-home