howto-db/data/pages/pi-hole/dnscrypt.txt
2024-02-10 12:53:55 +00:00

113 lines
7.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

====== DNSCrypt на Pi-hole ======
DNSCrypt - это сетевой протокол, реализующий шифрование DNS-запросов между компьютером пользователя и специальными DNS-серверами.
Шифрование DNS запросов позволяет защитить себя от некоторых видов сетевых атак, скрывает от посторонних глаз ваш трафик по протоколу DNS и позволяет обойти блокировки на уровне DNS-запросов.
Для использования DNSCrypt на клиентских машинах (или на локальном DNS-сервере) необходимо установить DNSCrypt-proxy, код которого открыт и размещен на [[https://github.com/DNSCrypt/dnscrypt-proxy/|GitHub]].
В качестве DNSCrypt-сервера (резолвера) могут использоваться публичные сервера (сразу несколько), либо собственный сервер на базе [[https://github.com/DNSCrypt/dnscrypt-server-docker|dnscrypt-server]].
===== Установка DNSCrypt-proxy =====
Со [[https://github.com/DNSCrypt/dnscrypt-proxy/releases|страницы релизов]] скачиваем архив для нашей системы:
<code>cd ~ && wget https://github.com/DNSCrypt/dnscrypt-proxy/releases/download/2.0.45/dnscrypt-proxy-linux_arm-2.0.45.tar.gz</code>
Распаковываем и удаляем архив:
<code>tar -xvzf dnscrypt-proxy-linux_arm-2.0.45.tar.gz && rm -f dnscrypt-proxy-linux_arm-2.0.45.tar.gz</code>
Переходим в распакованный каталог, создаем конфигурационный файл, путем копирования файла из поставки:
<code>mv linux-arm dnscrypt-proxy && cd dnscrypt-proxy && cp example-dnscrypt-proxy.toml dnscrypt-proxy.toml</code>
==== Настройка DNSCrypt-proxy ====
Редактируем файл:
<code>nano dnscrypt-proxy.toml</code>
Указываем адрес и порт, на котором будет работать сервис:
<code>listen_addresses = ['127.0.0.1:5053']</code>
Параметру cache можно присвоить значение false, для того, чтобы dnscrypt-proxy не использовала собственный кэш, т.к., у нас будет использоваться кэш pi-hole.
<code>cache = true</code>
По-умолчанию, в качестве резолверов будут использоваться публичные сервера, содержащиеся в списках на GitHub.
Адреса этих списков перечислены в разделе [sources] конфигурационного файла.
DNSCrypt-proxy будет автоматически выбирать из них самые быстрые сервера.
Для того, чтобы использовать только ограниченный набор серверов из этих списков, необходимо раскомментировать строку:
<code># server_names = ['scaleway-fr', 'google', 'yandex', 'cloudflare']</code>
Здесь через запятую перечисляются имена серверов, которые будут использоваться DNSCrypt-proxy (имена, описание и адреса можно посмотреть в конкретном списке ([[https://github.com/DNSCrypt/dnscrypt-resolvers/blob/master/v3/public-resolvers.md|public-resolvers.md]])).
Например, для использования только серверов AdGuard можно оставить такую строку:
<code>server_names = ['adguard-dns']</code>
Для использования какого-то одного DNS-резолвера (например, своего собственного или какого-то платного), укажите его имя иадрес в секции [static].
Пример:
<code>[static]
[static.'myserver']
stamp = 'sdns://AQcAAAAAAAAAAAAQMi5kbnNjcnlwdC1jZXJ0Lg'</code>
Не забудьте в этом случае указать имя вашего сервера в параметре server_names:
<code>server_names = ['myserver']</code>
Для анонимизации ваших обращений к DNS-резолверам и усложнения идентификации исходного места отправления DNS-запроса можно использовать секцию routes.
В этой секции сопоставляются сервера, которые вы планируете использовать с путями их достижения, т.е., с промежуточными серверами, через которые будут идти ваши запросы.
Пример:
<code>routes = [
{ server_name='example-server-1', via=['anon-example-1', 'anon-example-2'] },
{ server_name='example-server-2', via=['sdns://gRIxMzcuNzQuMjIzLjIzNDo0NDM'] }
]</code>
В этом примере для разрешения имен будут использоваться два сервера: example-server-1 и example-server-2. Запросы к первому серверу будут идти через сервера anon-example-1 и anon-example-2, ко второму серверу - через сервер с адресом %%sdns://gRIxMzcuNzQuMjIzLjIzNDo0NDM%%.
Кроме того, можно отключить запросы к несовместимым серверам с помощью параметра: skip_incompatible = false
Более подробную информацию о списках можно получить со страницы: https://github.com/DNSCrypt/dnscrypt-resolvers
Остальные параметры конфигурационного файла можно оставить без изменений.
Проверяем корректность конфигурационного файла:
<code>./dnscrypt-proxy -check</code>
==== Установка сервиса DNSCrypt-proxy ====
Установка производится исполнением распакованного бинарного файла с параметром -service install:
<code>sudo ./dnscrypt-proxy -service install</code>
Запуск сервиса:
<code>sudo ./dnscrypt-proxy -service start</code>
Проверяем, что всё работает:
<code>sudo systemctl status dnscrypt-proxy</code>
и
<code>./dnscrypt-proxy -resolve www.aol.com</code>
===== Настройка Pi-hole =====
Необходимо указать сервис адрес и порт установленного DNSCrypt-proxy в соответствующем поле настроек для вышестоящего DNS-сервера (Settings - DNS):
{{pi-hole:dohconfig.png|Настройки вышестоящего DNS-сервера}}\\
На этом всё.
Информацию по быстрой настройке собственного DNSCrypt-сервера можно найти на этой странице (EN):\\
https://github.com/DNSCrypt/dnscrypt-proxy/wiki/How-to-setup-your-own-DNSCrypt-server-in-less-than-10-minutes
====== Ссылки ======
Страница проекта на GitHub: https://github.com/DNSCrypt/ \\
Сравнение DNS over TLS и DNSCrypt (EN): https://tenta.com/blog/post/2017/12/dns-over-tls-vs-dnscrypt