Блог P1ratRuleZZZ

Настройка собственного сервера DNSCrypt на Ubuntu 16.04 Linux

DNSCrypt VS Plain DNS

Что такое DNS? DNS является службой доменных имен, который широко используется всеми сегодня. Если вы не знаете, если вы используете DNS, то эта статья не для вас.

DNS используется для разрешения чтения человека доменных имен машиночитаемых адресов. На самом деле, для серверов в Интернете это не важно, если ваша сторона имеет аккуратное и короткое имя или нет, он даже не против иметь уродливый IP-адрес, такие как 19.5.81.65 и не 1.1.1.1 – for example. Кстати, 1.1.1.1 – is a really working DNS server address of CloudFlare and it supports all the protocols: DNS, DNSCrypt, DNS-Over-TLS, DNS-Over-HTTPS.

Так, для того, чтобы знать IP-адрес какого-либо сервера в Интернете по имени домена в DNS серверы используются. Ваш браузер запрашивает DNS-сервер на вопрос, как: “What is the IPv4 address of www.google.com” and the DNS server responds “The IPv4 address of www.google.com is 123.456.789.123”. Конечно, это не реальный IP, реальный IP не может содержать цифры больше 255 потому что она должна быть точно 1 байт. Так, in this routine anyone who sniffs on your wired/wireless connection can see that you are visiting “google.com”. Протокол DNSCrypt здесь для того, чтобы зашифровать эту информацию, и никто не Разногласие между вашими ПК и ресурсом назначения будет иметь возможность понюхать ваши запросы доменов.

Цель этой статьи

  • Установите свой собственный DNSCrypt v2 форвардер (v1 поддерживается тоже) ( мы будем использовать пакет dnsdist)
  • Установите DNSCrypt клиент для Windows,
  • Установите DNSCrypt клиент для Android

Внимание: статья была написана на английском языке. Переключиться на английский язык, чтобы отключить автоматический перевод.

Читать статью дальше, чтобы увидеть все обучающие.

Как вы можете видеть, что мы собираемся пройти через процесс установки клиентского программного обеспечения тоже. Это означает, что если вы не хотите, чтобы установить собственный сервер, просто пропустите этот шаг и перейдите к установке клиента. Есть тонны общественного DNSCrypt сервера, который вы можете использовать и чувствовать себя в безопасности во время работы в Интернете.

шаг 1. Установка DNSCrypt сервера

Требования

  • сервер VPS работает в Ubuntu 16.04 (нота: любой линукс можно использовать, это не является обязательным требованием для использования Ubuntu, но в этом уроке я буду использовать Ubuntu). Если вы работаете в Debian, процесс установки почти точно так же,. Но если вы работаете в CentOS (которая основана на пакетах RPM) она будет отличаться для вас
  • Вы должны иметь права суперпользователя на данном сервере
  • Любой компьютер, работающий под управлением Windows для установки клиента и испытания
  • (необязательный) Любой компьютер / маршрутизатор / Устройство работает под управлением любой операционной системы Linux (Ubuntu, Debian, CentOS, RedHat и т.д.) с процессорами x64 / x86 / ARM / MIPS и т.д..
  • (необязательный) Любой Android телефон с Adguard приложение установлено

Подготовка VPS

Я буду использовать некоторый дешевый сервер облака для установки сервера DNSCrypt на нем. Так, Я подключен через SSH и видеть корень консоли


As you can see I’m using Putty to connect to Linux server from Windows machine. Disclaimer: Я использую окно здесь в качестве клиентской машины, так как Windows, широко используется и много людей использует его, и я хочу, чтобы быть как можно ближе к реальности, как это. Людям, которые используют Linux в качестве основной ОС, не нужно читать такие руководства, потому что они могут сделать это сами 🙂

Так, позволяет обновлять пакеты и проверить версию пакета libsodium в официальном репо:

apt-get update
apt-get install nano
apt-cache search libsodium

И мы видим, список пакетов

Давайте проверим версию libsodium18 пакета

 apt-cache madison libsodium18 

Версия пакета я получил, 1.0.8. Это не хорошо для нас, потому что он не поддерживает шифрование, необходимое для DNSCrypt v2 (anyway v1 will work though we want to do it the way “comme il le faut”. Нам нужно по крайней мере, версия 1.0.9.

Так, мы превратим Linux-ум-режим, и скомпилировать из исходных текстов!

Хорошо, записочку здесь: если вы работаете в Ubuntu / Debian x64, Вы можете скачать DPKG пакеты, собранные мною здесь: libsodium-1.0.9-dpkg

Давайте сначала включить источники будут доступны в APT: За это, open the file /etc/apt/sources.list and uncomment in sources universe the row with deb-src … universe OR just execute the following:


echo "deb-src http://mirror.yandex.ru/ubuntu $(lsb_release -cs) universe" > /etc/apt/sources.list.d/universe.list
apt-get update

Let’s create a new folder inside /root and call it “build”. Затем загрузите источники libsodium и попытаться построить его без изменений:

apt-get build-dep libsodium18
apt-get install git nano dpkg-dev devscripts fakeroot
mkdir -p /root/build/libsodium
cd /root/build/libsodium
apt-get source libsodium18
cd libsodium-1.0.8/
fakeroot debian/rules binary

It will take some time… But the main point is that you should not have any errors while compilation and should see at the end the following:

Так, *.Пакеты DEB были успешно построены. Теперь давайте обновить версию этого пакета 1.0.9. Мы будем использовать официальные GitHub источник.


uupdate -v 1.0.9 ../libsodium_1.0.8-5.debian.tar.xz
cd ../libsodium-1.0.9
git init
git remote add origin https://github.com/jedisct1/libsodium.git
git fetch origin
git checkout -b stable origin/stable
git checkout c09b00cf20

Внимание: последняя команда не обязательно должна быть выполнена. Но это версия, которую я использовал, и она работала. So if you want to install newer version just do not execute latest command with “c09b00cf20” commit id. Если вы не знаете, что это такое, просто следуйте инструкциям, и это должно сработать 🙂

Теперь, давайте обновить пакет изменений и установить новый номер версии:


dch -n

Это откроет текстовый редактор (нано) и вам просто нужно, чтобы сохранить его, нажав Ctrl + O затем выйти, нажав Ctrl + X.

Теперь, восстановить версию 1.0.9

fakeroot debian/rules binary
cd ../
ls -lah

И увидеть список файлов, которые мы имеем: мы должны иметь libsodium18_1.0.9-0ubuntu1_amd64.deb libsodium-dbg_1.0.9-0ubuntu1_amd64.deb libsodium-dev_1.0.9-0ubuntu1_amd64.deb
Теперь, установить их:

dpkg -i libsodium18_1.0.9-0ubuntu1_amd64.deb libsodium-dbg_1.0.9-0ubuntu1_amd64.deb libsodium-dev_1.0.9-0ubuntu1_amd64.deb

Это оно. Основной пакет требования устанавливаются. Теперь, давайте компилировать dnsdist пакет из источников с использованием официального репо на GitHub.


apt-get install ragel virtualenv zip libsystemd-dev protobuf-compiler libssl-dev libprotobuf-dev dh-systemd libboost-dev libboost1.58-dev libbsd-dev libedit-dev liblua5.2-0 liblua5.2-dev libreadline-dev libreadline6-dev libtinfo-dev
cd /root/build
git clone -b "dnsdist-1.3.3" https://github.com/PowerDNS/pdns
cd pdns/pdns/dnsdistdist
autoreconf -i
./configure --prefix="" --exec-prefix=/usr --sysconfdir="/etc/dnsdist" --with-systemd="/lib/systemd/system" --enable-dns-over-tls --enable-dnscrypt --with-protobuf

Проверьте, нет никаких ошибок здесь и компилировать


make
make install

And wait it to compile… This will take a while depending on your VPS. Затем проверьте версию:


dnsdist -V

Для меня это:


dnsdist 0.0.0.HEAD.gg27dd1e3 (Lua 5.2.4)
Enabled features: dns-over-tls(openssl) dnscrypt ebpf libsodium protobuf recvmmsg/sendmmsg systemd

Хорошо, давайте добавим несколько быстрой конфиги и посмотреть, как это работает


mkdir /etc/dnsdist
cd /etc/dnsdist
wget -O "/tmp/dnsdist.zip" "https://blog.jazinbaz.in/download/2571/"
unzip /tmp/dnsdist.zip

systemctl daemon-reload
service dnsdist restart
service dnsdist status

Или просто вручную загрузить конфигурационный файл здесь и скопировать его содержимое dnsdist.conf.zip

Мы должны видеть, что служба работает. Теперь, позволяет генерировать ключи, которые будут необходимы для шифрования.

mkdir -p /var/lib/dnsdist
dnsdist -c 

generateDNSCryptProviderKeys("/var/lib/dnsdist/providerPublic.key", "/var/lib/dnsdist/providerPrivate.key")
sinceDate=os.time(os.date("!*t"))
expireDate=os.time({year=2100, month=0, day=1, hour=00, minute=00})
generateDNSCryptCertificate("/var/lib/dnsdist/providerPrivate.key", "/var/lib/dnsdist/resolver.cert", "/var/lib/dnsdist/resolver.key", 1, sinceDate, expireDate, VERSION1)
generateDNSCryptCertificate("/var/lib/dnsdist/providerPrivate.key", "/var/lib/dnsdist/resolver2.cert", "/var/lib/dnsdist/resolver2.key", 1, sinceDate, expireDate, VERSION2)

затем, нажав Ctrl + C выход из dnsdist консоли и открыть его конфигурацию для того, чтобы фактического DNSCrypt связывает. Первый, давайте выясним наш публичный IP-адрес. Мы крутые мастера Linux, поэтому мы будем использовать COMAND линию для этого


wget -4 -qO- ifconfig.co
wget -6 -qO- ifconfig.co

Мы получим 2 IP-адрес: для v4 и v6. Конечно, Вы можете пропустить v6 и работать только на ipv4, достаточно для нас.

В моем случае, Я получил IP-адрес 85.143.172.89. Вы также можете получить тот же IP-адрес, запустив IFCONFIG. Если вы находитесь под NAT, вы должны назначить его внутрибрюшинно, как 192.168.10.135 – for example. И затем вперед желательно порты (8443, 5353)

Теперь, lets open the config file /etc/dnsdist/dnsdist.conf and find the line with “ipv4addr” and change the address here.

Then go to addDNSCryptBind… part at the end of the file and uncomment the ones with ipv4 in it so it will look like this

We’ve just removed ‘–‘ from the start of the strings to uncomment them. Также, изменить имена поставщиков в этой конфигурации: these are “1.dnscrypt.mydomain.com” and same for other. Вы можете оставить его как есть, что это совсем не плохо, и он не должен быть реальным доменным именем, хотя это лучше, чтобы быть в реальном доменном имени. Мы оставим его как для этого примера. Теперь, сохранить файл Ctrl + O и выход Ctrl + X и остановить службу и запустить его вручную, чтобы увидеть журналы


service dnsdist stop
dnsdist -v --disable-syslog

Мы видим, что это нормально, и это прослушивает наши порты.

Хорошо, первая половина работы сделана. Оставьте dnsdist работает в консоли, не закрывайте его и не режут Интернет от. Теперь, позволяет выяснить, открытый ключ поставщика. Для того, чтобы сделать это, написать следующее право на консоли с управлением dnsdist

printDNSCryptProviderFingerprint("/var/lib/dnsdist/providerPublic.key")

И это будет отображаться fingerpring открытого ключа

Теперь, позволяет считать, что отпечатки пальцев и скопировать его в буфер обмена и открыть новое окно консоли с SSH подключения к VPS (потому что мы не хотим, чтобы остановить dnsdist запущенного процесса). В новой консоли, право следующее


fingerprint="DF76:2D34:2E3A:DFCE:6A68:B520:AF34:7D58:A203:0967:184D:2C95:F341:4204:77DC:4450"
fingerprint="${fingerprint//:}"; echo "${fingerprint,,}"

Конечно, заменить fingerpring с значением. Это даст нам нормализованное значение строчного. Скопируйте это в буфер обмена. For me it is “df762d342e3adfce6a68b520af347d58a2030967184d2c95f341420477dc4450”. Как вы можете догадаться,, we removed “:” character and lowercased the string, вот и все.

Теперь, давайте создадим DNS Штамп для этого сервера. Перейти к супер большой полезности страницы здесь https://dnscrypt.info/stamps/

И заполнить значения из конфигурации. Для меня это будет выглядеть как этот

А теперь сохранить snds://… server info stamp.

Для меня это: НСУР://AQYAAAAAAAAAEjg1LjE0My4xNzIuODk6ODQ0MyDfdi00LjrfzmpotSCvNH1YogMJZxhNLJXzQUIEd9xEUBcxLmRuc2NyeXB0Lm15ZG9tYWluLmNvbQ

Это было конфигурации для протокола DNSCrypt V1. На самом деле, этого достаточно, но мы скомпилированы dnsdist из источников, особенно для использования протокола версии 2. Теперь, сделать то же самое для DNSCrypt v2 (порт 5353 в этом случае)

Штамп для DNSCrypt v2: НСУР://AQYAAAAAAAAAEjg1LjE0My4xNzIuODk6NTM1MyDfdi00LjrfzmpotSCvNH1YogMJZxhNLJXzQUIEd9xEUBcyLmRuc2NyeXB0Lm15ZG9tYWluLmNvbQ

Это на самом деле конечный результат нам нужно. Этот DNS Stamp зашифрована информация о нашем конкретном сервере DNS, мы добавим это на стороне клиента для подключения к нашему серверу. Это не шифруется для безопасности, но только для сделать вещи проще, так же, как QR-код, но для DNS-сервера. Хорошо, конфигурация DNSCrypt сервера закончена. Давайте проверим наш DNSCrypt сервер в каком-то клиентском программном обеспечении.

Как только у вас протестировали сервер с некоторым ниже клиентом, это не нужно, чтобы запустить его в консоли. Возвращайтесь в свой VPS и остановить процесс, нажав Ctrl + C. затем, включить эту услугу на постоянной основе


systemctl enable dnsdist
systemctl restart dnsdist
systemctl status dnsdist

Он будет работать в фоновом режиме, так что вы можете закрыть соединение SSH и закрыть окно Шпатлевки.

Расширенная конфигурация

  • Скоро будет: Настройка домена TXT записи
  • Скоро будет: Включение ipv6

Установка DNSCrypt клиент для Windows,

Мы будем использовать общее программное обеспечение для лидера DNSCrypt, который широко используется в Linux тоже: DNSCrypt Proxy. Он уже скомпилированные для win32 и Win64, так что это не проблема, чтобы установить его, и это совсем не трудно. Мы установим его, чтобы использовать все государственные арбитр. Для использования нашего пользовательского DNS-сервера, проверить в Кoнфигурировании из dnscrypt прокси для Linux.

Давайте начнем. Загрузите нужную версию для вашей системы (x64 или x32) в последней версии с официального GitHub страница. Если вы не уверены, что ваша система x64 или x32, скачать x32 версия. Я буду делать то же самое сейчас, хотя у меня есть система x64. Я загрузит файл с именем dnscrypt-proxy-win32-2.0.22.zip (Вы можете скачать его здесь). Давайте теперь найти загруженный файл.

И вот что у меня есть. Извлеките этот файл. Но сначала, скачать 7Zip и установить его, чтобы иметь то же меню, как и я. Почему не WinRar? Хорошо, нет проблем, но это не бесплатно, хотя 7zip свободно и делает почти то же самое. Я буду использовать 7zip, как это бесплатно для всех.

Хорошо, Теперь мы извлекли папки. Таким образом, у нас есть папка с именем dnscrypt прокси-блаб

Переименуйте его быть аккуратным и хорошо: dnscrypt-прокси

Теперь, перейти в Мой компьютер->Диск C и создайте папку с именем Tools. Мы должны иметь права администратора для этого. Move our dnscrypt-proxy folder into this Tools folder so it will be “Tools->dnscrypt-proxy”

Теперь, rename the file “example-dnscrypt-proxy.toml” to “dnscrypt-proxy.toml” and open it in text editor, Я рекомендую вам установить Notepad ++. Это лучшая замена для блокнота в окнах и, возможно, один день Microsoft включит его вместо этого stupud блокнот из окон (извиняюсь, Microsoft).

Обычно, это не нужно делать что-либо здесь. Внесите изменения, если вы хотите, сохранить его и просто посмотрим, что этот файл выглядит и закрыть его. Теперь, позволяет установить dnscrypt прокси-сервис. There is a file named “service-install.bat”. Вы должны запустить его в качестве администратора.

Там будет новая консоль открылось окно. Проверьте, нет никаких ошибок и близко.

Так, now run the second file “service-restart.bat” also As Administrator.

Существует предупреждение, что служба не может быть остановлена, но это нормально. Сервис должен быть установлен и запущен, как должно. Press Start button and open command line by searching for “cmd”

Type “control” and press Enter

Панель управления откроется. Найти Интернет и сети категории

Now choose “Change adapter parameters”

И выберите в списке ваш главный сетевой адаптер (который подключен к Интернету). Если у вас есть Wi-Fi, это будет адаптер Wi-Fi, поэтому выберите

И открытые варианты. Choose from the list “ipv version 4” and press “Options”

Теперь сохраните все точки здесь и выход. Закройте все окна и попытайтесь открыть несколько страниц в вашем браузере. Если он работает в обычном режиме, the setup has been done and you have now secured your dns requests.

For ipv6 set your DNS server under the “IP Version 6” to “::1. Если вы не используете его, что не требуется.

Установка DNSCrypt клиент для Android (Adguard)

Скачать Adguard и установить на своем мобильном устройстве. Перейдите в настройки->DNS Фильтрация и включить эту функцию. The down below there is “Select DNS server”. Нажмите на нее, и прокрутите вниз, чтобы увидеть кнопки для добавления DNS-сервера. Вот некоторые фотографии, чтобы увидеть, что мы делаем:

Теперь, давайте возьмем штамп V2 протокола и проверить его.

Choose “Add custom DNS Server” and paste the sdns://… stuff here. Мы видим такого рода картину:

Press “Save and enable” and then check logs on server side:

Так, как мы видим, протокол версии 2 работает прекрасно.

Установка DNSCrypt клиента на Linux

Скоро будет

Установка DNSCrypt клиента на Apple Mac OS X

Скоро будет

Установка DNSCrypt клиента на Apple, прошивке

Скоро будет

Exit mobile version