How to Wiki Database (change log)
http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
7.5 KiB
113 lines
7.5 KiB
====== 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 |