16.03.2016

DNSLeak - DNSCrypt-proxy

Установить его можно, конечно, очень легко:
add-apt-repository ppa:anton+/dnscrypt
apt-get update
apt-get install dnscrypt-proxy
и он сразу заработает на адресе 127.0.0.2
Причесать можно в файле конфигурации
/etc/default/dnscrypt-proxy
Но я для надёжности хочу две копии процесса на разные DNSCrypt-сервера.
Поэтому пойдём более сложным путём.


Установка

Для работы dnscrypt-proxy нужна библиотека Sodium crypto, установим её предварительно: 
Установка LIBSODIUM

Установка расписана в документации

В таких делах, разумеется, лучше перебздеть и установить крайнюю версию.
git clone https://github.com/jedisct1/dnscrypt-proxy.git 
cd dnscrypt-proxy 
./autogen.sh
./configure && make -j2
make install

Но у меня не получилось с GitHub-а, тогда можно, как вариант, зная желаемую версию, установить вот так:

wget http://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.6.1.tar.gz -O - | tar -xz

cd dnscrypt-proxy-1.6.1/
./configure && make -j2
make install
>>>???>>> cp dnscrypt.conf /etc/init/
cd ..
rm -rf dnscrypt-proxy*

В попытках запустить две копии с разными конфигами всякое непотребное творил. Приходилось полностью удалять установленные пакеты:
dpkg --purge --force-depends dnscrypt-proxy


Запуск

Пробуем запустить:
/usr/local/sbin/dnscrypt-proxy -R 4armed --local-address=127.0.0.1:40 --daemonize --pidfile=/run/dnscrypt-proxy40.pid 

Задать можно и другие опции.
При этом, dnscrypt-proxy подсматривает в файл:
 /usr/local/share/dnscrypt-proxy/dnscrypt-resolvers.csv
 /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv
где сопоставлены имена серверов с их адресами и портами, ключами и всё такое - БД. Это сделано для нашего удобства! В качестве аргумента даём просто имя. Но и не забываем оберегать этот файл от изменений злыдней.

Запускается, сообщает радостные вести, но не демонизируется.
[INFO] + DNS Security Extensions are supported
[INFO] + Provider supposedly doesn't keep logs


DNSCrypt-Loader


Тыркался и нашёл DNSCrypt-Loader
Установка и запуск расписаны там.
Но при попытке запуска с заданным резолвером ошибка: Loading failed.
Конфиги в директории /etc/dnscrypt-loader/ пустые.
Из исходников стало ясно, что конфиги сохраняются, если процесс запущен и работает. А из текстово-графического интерфейса стало понятно, что dnscrypt-loader не может грамотно распарсить файл /usr/local/share/dnscrypt-proxy/dnscrypt-resolvers.csv
Пришлось открыть вопрос #5

Наткнулся ещё на предупреждение, что
Please note that on Linux systems (kernel >= 3.9), multiples instances of dnscrypt-wrapper can run at the same time. Therefore, in order to switch to a new configuration, one can start a new daemon without killing the previous instance, and only kill the previous instance after the new one started.
И понял, что устал от Ubuntu и решил, что пора перебираться на ванильный Дебиан, пожертвовав графикой.

Установил Ванильный и всё заработало.

Всяческие проверки

Список открытых портов:
netstat -lntu
netstat -anp | grep dnscrypt-proxy

Посмотрим на зашифрованный запрос
tcpdump -i eth0 port 443


Косяки


1. При запуске dnscrypt-proxy получаем ошибку:
loading shared libraries: libsodium.so.4: cannot open shared object file: No such file or directory

Решение (via):
Если libsodium был установлен без ошибок, но проблема возникает, то выполняем:
# ./configure --libdir=/usr/local/lib
Если проблема остается то выполняем:
# ln -s /usr/local/lib/libsodium.so.4 /usr/lib/libsodium.so.4

2. При выполнении service dnscrypt start получаем:
# service dnscrypt start
dnscrypt stop/waiting
Скрипт dnscrypt-proxy находится в /usr/local/sbin/dnscrypt-proxy, а скрипт его ищет в /usr/sbin/dnscrypt-proxy.

Решение (via):
# ln -s /usr/local/sbin/dnscrypt-proxy /usr/sbin/dnscrypt-proxy

Комментариев нет: