DNSCrypt - гибкая служба DNS прокси. Служба может работать на вашем компьютере или роутере, и вы можете локально блокировать нежелательный контент, выяснять, куда ваши устройства отправляют данные, ускорять работу приложений за счет кэширования DNS ответов, а также улучшать безопасность и конфиденциальность за счет связи с DNS серверами по защищенным каналам.
Зачем использовать это?
DNS - это служба, которую используют все, но она передает все в виде простого текста. Это позволяет безопасно использовать DNS с шифрованием, чтобы даже ваши интернет-провайдеры не могли видеть ваши запросы DNS :) Вы также можете туннелировать запросы через известные серверы DNSSEC.
Не только вы получаете шифрование DNS, но при правильной настройке с помощью Anonymized-DNS может препятствовать тому, чтобы посредники записывали и вмешивались в трафик DNS, поскольку это «мешает серверам узнавать что-либо об IP-адресах клиентов, используя промежуточные реле, предназначенные для пересылки зашифрованных данных DNS
Вы также можете настроить фильтрацию через чёрный список IP-адресов и белый список, которые будут кратко обсуждаться в этом руководстве.
Сначала установите его
sudo apt update
sudo apt install dnscrypt-proxy
Далее мы настраиваем это следующим образом
После установки DNSCrypt Proxy переходим к настройке, по сути, можно оставить сервера которые используются по умолчанию. А можно заменить на свои, это дело индивидуальное, для того что бы изменить сервера открываем конфигурационный файл, для примера я буду использовать текстовый редактор “Nano”
sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
В открывшемся окне для изменения сервером ищем строку “server_names”
, раскомментируем её и заменяем имена серверов на нужные нам public-resolvers по принципу server_names = [‘cloudflare’, ‘scaleway-fr’]
можно через запятые перечислять несколько имен адресов. Обязательно используйте несколько адресов. Бывает такое, что один блокируют или отваливается. В таком случае будет подхватываться другой, который Вы указали. После того как отредактировали конфигурационный файл, сохраняем его комбинацией клавиш “ctrl + o”
и выходим из редактора “Nano”
комбинацией клавиш “ctrl + x”
. Идём в настройки сети IPV4 – DNS – отключаем Автоматический и вписываем 127.0.0.1
определить критерии используемых серверов
ipv4_servers = true
ipv6_servers = true
dnscrypt_servers = true
doh_servers = true
require_dnssec = true
require_nolog = true
require_nofilter = true
установить ответ для заблокированных запросов
blocked_query_response = 'refused'
установите журнал в системный журнал
use_syslog = true
(необязательно) создайте новый и уникальный ключ для каждого запроса DNS
dnscrypt_ephemeral_keys = true
затем настройте анонимные маршруты DNS - больше информации здесь и Anonymized DNS relays
[anonymized_dns]
routes = [
{ server_name='scaleway-fr', via=['anon-meganerd', 'anon-scaleway-ams'] },
{ server_name='cloudflare', via=['anon-scaleway', 'anon-meganerd'] }
]
затем сохраните конфигурацию и выйдите.
Далее настройте чёрный список
В разделе чёрный список раскомментируйте и установите
[blocked_names]
blocked_names_file = '/etc/dnscrypt-proxy/dnscrypt-blacklist-domains.txt'
log_file = '/etc/dnscrypt-proxy/dnscrypt-blacklist-domains.log'
log_format = 'tsv'
Создайте свой собственный файл чёрного списка из примера и используйте эту ссылку. Есть и другие чёрные списки там.
Кроме того, вы можете раскомментировать «log_file»
в этом разделе, если вы хотите получить журнал того, что занесено в чёрный список. Очень полезно для устранения неполадок в вашем dnscrypt-blacklist-domains.txt
.
Перезапускаем NetworkManager
sudo systemctl restart NetworkManager
Перезапускаем dnscrypt-proxy.
sudo systemctl restart dnscrypt-proxy.service
Вот небольшой скрипт bash update-adblocker.sh
для загрузки и обновления чёрного списка от Steven Black lists.
#!/bin/bash
# Name: update-adblocker.sh
# Purpose: Download and update adblocker list for dnscrypt proxy
DEST="/etc/dnscrypt-proxy/dnscrypt-blacklist-domains.txt"
#
# Blocks both adware + malware
# See for other lists https://github.com/StevenBlack/hosts
SRC="https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"
TMP_HOSTS="$(mktemp)"
TMP_B_FILE="$(mktemp)"
TMP_B_FILE_SORTED="$(mktemp)"
wget --timeout=3 --tries=5 -qO "${TMP_HOSTS}" "${SRC}"
grep -Ev "(localhost)" "${TMP_HOSTS}" | grep -Ev "#" | sed -E "s/(0.0.0.0 |127.0.0.1 |255.255.255.255 )//" >> "${TMP_B_FILE}"
awk '/^[^#]/ { print $1 }' "${TMP_B_FILE}" | sort -u > "${TMP_B_FILE_SORTED}"
cat "${TMP_B_FILE_SORTED}" > "$DEST"
rm -f "${TMP_B_FILE}" "${TMP_B_FILE_SORTED}" "${TMP_HOSTS}"
./update-adblocker.sh
Убедитесь, что вы ежедневно запускаете скрипт update-adblocker.sh
, чтобы получать обновленный список файла hosts. Добавьте новое задание cron следующим образом
@daily /etc/dnscrypt-proxy/update-adblocker.sh
Помимо рекламы и вредоносного ПО, вы также можете блокировать поддельные новости, азартные игры и социальные сети.
Далее настройте белый список
В разделе белый список раскомментируйте и установите
[allowed_names]
allowed_names_file = '/etc/dnscrypt-proxy/dnscrypt-whitelist-domains.txt'
log_file = '/etc/dnscrypt-proxy/dnscrypt-whitelisted-domains.log'
log_format = 'tsv'
Создайте свой собственный файл белого списка из примера.
Кроме того, вы можете раскомментировать «log_file»
в этом разделе, если вы хотите получить журнал того, что занесено в белом списке.
Измените /etc/resolv.conf для использования dnscrypt-proxy
Теперь редактируем файл /etc/resolv.conf
и на сервере имён мы удаляем то, что там есть, и ставим 127.0.0.1
sudo nano /etc/resolv.conf
nameserver 127.0.0.1
Включите прокси-сервис dnscrypt
Используйте команду systemctl
для включения службы dnscrypt-proxy в Linux
sudo systemctl enable dnscrypt-proxy.service
sudo systemctl start dnscrypt-proxy.service
sudo systemctl status dnscrypt-proxy.service
Перейдите на dnsleaktest.com, нажмите на расширенный тест, а затем убедитесь, что он работает, так как результаты не будут отображать DNS вашего провайдера, а только те, которые есть в нашем файле конфигурации.
Поиск проблемы
Q1: Что делать, если /etc/resolv.conf
перезаписывается при перезагрузке?
A1: следуйте инструкциям выше, чтобы изменить, но затем используйте следующую команду, чтобы убедиться, что /etc/resolv.conf
не изменился.
sudo chattr + i /etc/resolv.conf
Заключение
И вот оно. Прокси-сервер DNSCrypt устанавливается со списком блокировщиков рекламы в Linux, чтобы повысить конфиденциальность и защиту DNS. Если вам понравился этот пост о том, как установить DNSCrypt, делитесь нашими постами и помогайте нам расти.