Блог 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, широко використовується і багато людей використовує його, і я хочу, щоб бути якомога ближче до реальності, як це. People who use Linux as their main OS don’t need to read that kind of manuals because they can do it by themselves 🙂

Так, дозволяє оновлювати пакети і перевірити версію пакету 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. Якщо ви не знаєте, що це таке, just follow the tutorial and this should work 🙂

в даний час, давайте оновити пакет змін і встановити новий номер версії:


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)

Download Adguard і встановити на своєму мобільному пристрої. Перейти до Settings->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