ZaLinux.ru

Как установить dnscrypt-proxy в Arch Linux, BlackArch и их производные

DNS через HTTPS — это протокол, благодаря которому DNS запросы шифруются, что делает невозможным атаку со спуфингом DNS ответов и контроль за тем, какие сайты открывал пользователь.

Программа dnscrypt-proxy — это кеширующий DNS сервер с поддержкой DNS через HTTPS и многих других протоколов безопасного DNS. Программа сама поддерживает список безопасных серверов. Установка и настройка работы с dnscrypt-proxy очень простая. Эта инструкция покажет вам, как пошагово установить dnscrypt-proxy и настроить систему на использование DNS сервера dnscrypt-proxy в результате чего все DNS запросы и ответы будут зашифрованы.

Установите пакет dnscrypt-proxy:

sudo pacman -S dnscrypt-proxy

Проверьте, чтобы порт 53 не был занят:

ss -lp 'sport = :domain'

В выводе должна быть всего одна строка, а именно шапка:

Netid State   Recv-Q  Send-Q   Local Address:Port     Peer Address:Port Process

Если вывод содержит более чем одну первую строку с названием столбцов, нужно отключить сервис, который использует порт 53. Одним из частых виновников является systemd-resolved.service (NetworkManager), но другие сетевые менеджеры могут иметь аналогичные компоненты. В общем, какая бы там ни была служба (возможно, вы уже устанавливали другой кэширующий DNS сервер), её нужно остановить и убрать из автозагрузки. Если нет процессов, прослушивающих порт 53, то можно продолжать.

Выполните проверку, чтобы убедиться, что dnscrypt-proxy работает:

dnscrypt-proxy -resolve example.com

Запустите службу dnscrypt-proxy и проверьте её статус:

sudo systemctl start dnscrypt-proxy.service
systemctl status dnscrypt-proxy.service

Если всё в порядке, добавьте службу в автозагрузку:

sudo systemctl enable dnscrypt-proxy.service

Откройте файл /etc/NetworkManager/NetworkManager.conf:

sudo gedit /etc/NetworkManager/NetworkManager.conf

и проверьте, имеются ли там следующие строки:

[main]
dns=none

Если их нет, то добавьте их и перезапустите NetworkManager:

sudo systemctl restart NetworkManager

Сделайте резервную копию файла /etc/resolv.conf:

sudo cp /etc/resolv.conf /etc/resolv.conf.backup

А затем удалите /etc/resolv.conf (это важно, поскольку это может быть ссылка на файл, а не настоящий файл):

sudo rm -f /etc/resolv.conf

И создайте файл /etc/resolv.conf 

sudo gedit /etc/resolv.conf

со следующим содержимым:

nameserver 127.0.0.1
# nameserver ::1 # для IPv6
options edns0 single-request-reopen
EDNSPayloadSize 4096

Теперь проверьте систему — откройте сайты, выполните обычные сетевые задачи, чтобы убедиться, что всё работает нормально.

Чтобы посмотреть, какой DNS сервер используется, выполните дважды команду dig:

dig zalinux.ru

Как видно на скриншоте, IP адрес DNS сервера 127.0.0.1. Первый запрос занял 53 msec, а второй запрос занял 0 msec, поскольку данные получены из кэша.

Смотрите также статью «Как пользоваться командой dig для DNS запросов».

Рекомендуемые статьи:

1 Комментарий

  1. Виктор

    Спасибо. Действительно простое решение и при этом эффективный способ обезопасить себя от MITM-атак и утечек DNS. Недавно настроил dnscrypt-proxy, ваша статья подчеркнула некоторые нюансы, о которых не знал.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *