Блог 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