Как установить последнюю версию dnscrypt-proxy
dnscrypt-proxy — это популярная программа для запуска локального (на своём компьютере) DNS-прокси, используется для кэширования DNS запросов, что немного ускоряет подключения и снижает трафик, а также для добавления функции DNS-over-HTTPS, благодаря которой DNS запросы и ответы шифруются, что увеличивает конфиденциальность пользователя (поскольку его DNS не могут быть перехвачены и проанализированы), а также делает невозможными атаки на основе DNS спуфинга.
Пакет dnscrypt-proxy много лет присутствует в репозиториях Debian, а следовательно и во всех других дистрибутивах на основе Debian (таких, как Kali Linux, Linux Mint, Ubuntu).
Но в свежих версиях Debian Testing и Kali Linux при попытке установить пакет:
sudo apt update sudo apt install dnscrypt-proxy
Вы можете столкнуться с ошибкой:
Чтение списков пакетов… Готово Построение дерева зависимостей… Готово Чтение информации о состоянии… Готово E: Невозможно найти пакет dnscrypt-proxy
Причина ошибки в том, что 2022-09-28 пакет был исключён из репозитория Debian Testing, а следовательно и из Kali Linux, которая основывается на Debian Testing. Подробности об этом можно прочитать на странице https://tracker.debian.org/pkg/dnscrypt-proxy, как можно понять из этой страницы, пакет dnscrypt-proxy был исключён автоматически из-за не разрешённой зависимости.
Скорее всего, рано или поздно dnscrypt-proxy будет возвращён в Debian Testing, а следовательно и в Kali Linux, но что если вам нужно установить и использовать dnscrypt-proxy прямо сейчас?
На самом деле программа dnscrypt-proxy распространяется автором в виде скомпилированного исполнимого файла, установка которого не требует никаких зависимостей. Поэтому dnscrypt-proxy легко установить вручную.
Даже если dnscrypt-proxy уже возвращён в репозитории, возможно вы захотите вручную установить последнюю версию данной программы.
Как вручную установить dnscrypt-proxy
Эта инструкция расскажет, как вручную установить dnscrypt-proxy, а также добавить файл в автозагрузку.
Чтобы в командной строке скачать последнюю версию dnscrypt-proxy запустите следующую команду:
wget https://github.com/`curl -s https://github.com/DNSCrypt/dnscrypt-proxy/releases/expanded_assets/$(curl -s https://github.com/DNSCrypt/dnscrypt-proxy/releases | grep -E -o '/DNSCrypt/dnscrypt-proxy/releases/tag/[0-9.]+' | head -n 1 | grep -o -E '[0-9.]{2,}') | grep -E -o '[^"]+/dnscrypt-proxy-linux_x86_64[0-9.-]+.tar.gz"' | sed 's/"//'`
Она определит и скачает последний выпуск dnscrypt-proxy.
Вы также можете скачать исполнимый файл вручную на странице https://github.com/DNSCrypt/dnscrypt-proxy/releases, вам нужен файл вида dnscrypt-proxy-linux_x86_64*.tar.gz.
Теперь распакуйте скачанный архив:
tar xvzf dnscrypt-proxy-linux_x86_64-*.tar.gz
Перейдите в директорию с распакованными файлами:
cd linux-x86_64/
Переместите исполнимый файл dnscrypt-proxy в директорию /usr/bin/:
sudo cp dnscrypt-proxy /usr/bin/
Создайте директорию /etc/dnscrypt-proxy/ и скопируйте в неё файл example-dnscrypt-proxy.toml, при этом файл нужно переименовать в dnscrypt-proxy.toml:
sudo mkdir /etc/dnscrypt-proxy/ sudo cp example-dnscrypt-proxy.toml /etc/dnscrypt-proxy/dnscrypt-proxy.toml
Создайте файл /usr/lib/systemd/system/dnscrypt-proxy.service:
sudo gedit /usr/lib/systemd/system/dnscrypt-proxy.service
И скопируйте в него следующее:
[Unit] Description=DNSCrypt-proxy client Documentation=https://github.com/jedisct1/dnscrypt-proxy/wiki Wants=network-online.target nss-lookup.target Before=nss-lookup.target [Service] AmbientCapabilities=CAP_NET_BIND_SERVICE CacheDirectory=dnscrypt-proxy CapabilityBoundingSet=CAP_NET_BIND_SERVICE DynamicUser=yes ExecStart=/usr/bin/dnscrypt-proxy --config /etc/dnscrypt-proxy/dnscrypt-proxy.toml LockPersonality=yes LogsDirectory=dnscrypt-proxy MemoryDenyWriteExecute=true NonBlocking=true NoNewPrivileges=true PrivateDevices=true ProtectControlGroups=yes ProtectHome=yes ProtectHostname=yes ProtectKernelLogs=yes ProtectKernelModules=yes ProtectKernelTunables=yes ProtectSystem=strict RestrictAddressFamilies=AF_INET AF_INET6 RestrictNamespaces=true RestrictRealtime=true RuntimeDirectory=dnscrypt-proxy StateDirectory=dnscrypt-proxy SystemCallArchitectures=native SystemCallFilter=@system-service SystemCallFilter=~@resources @privileged SystemCallFilter=@chown [Install] WantedBy=multi-user.target
Проверьте, чтобы порт 53 не был занят:
sudo ss -tulpn 'sport = :domain'
В моём случае я получил следующее:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process udp UNCONN 0 0 10.0.3.1:53 0.0.0.0:* users:(("dnsmasq",pid=754,fd=6)) tcp LISTEN 0 32 10.0.3.1:53 0.0.0.0:* users:(("dnsmasq",pid=754,fd=7))
То есть процесс dnsmasq прослушивает 53 порт на адресе 10.0.3.1. Этот процесс запущен службой NetworkManager. Он не будет мешать и можно игнорировать его. Главное, чтобы не было процессов прослушивающих порт 53 на IP адресе 127.0.0.1.
Запустите службу 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
Защита файла /etc/resolv.conf от изменений
Выше мы добавили настройку NetworkManager чтобы эта служба не меняла содержимое файла /etc/resolv.conf, как это делает она без предупреждений. На самом деле, NetworkManager действительно является самой частой причиной сброса настроек в /etc/resolv.conf, но не единственной. Подробности, а также способы, как определить, какая программа меняет файл /etc/resolv.conf и как надёжно заблокировать этот файл от изменения любыми программами, смотрите в статье «Как запретить NetworkManager менять файл /etc/resolv.conf».
Продолжение смотрите в разделах:
7. Как настроить dnscrypt-proxy
8. Проверка работы dnscrypt-proxy
9. Настройка dnscrypt-proxy для использования с IPv6
Связанные статьи:
- Как установить dnscrypt-proxy в Kali Linux (100%)
- Как установить dnscrypt-proxy в Arch Linux, BlackArch и их производные (98.5%)
- Изменения в конфигурационных файлах при переходе с OpenVPN 2.4.* на OpenVPN 2.5.* (55.3%)
- Как использовать OpenVPN с протоколом TCP (55.3%)
- Сравнение производительности (скорости передачи данных) OpenVPN через UDP и TCP (55.3%)
- Как установить Kali Linux с зашифрованной домашней папкой пользователя (автоматическая разметка) (RANDOM - 3.7%)
Здравствуйте.
Делала всё по порядку, у меня возникла ошибка на стадии:
sudo systemctl start dnscrypt-proxy.service
Failed to start dnscrypt-proxy.service: Unit dnscrypt-proxy.service is masked.
Приветствую! У вас Kali Linux или другой дистрибутив?
Я с таким не сталкивался, но снять маску с процесса можно следующей командой:
А затем опять попробуйте запустить:
Приветствую,
А как полностью удалить старую версию программы 2.0.45 и ее проблемные зависимости?!