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, прошивці
Незабаром