DNScrypt – szyfrowanie zapytań DNS

DNScrypt - szyfrowanie zapytań dns

Rola serwerów i żądań DNS przez wiele osób traktowana jest z pewną dozą ignorancji. Podejście “jest? działa? to jest dobrze” okazuje się nie zawsze być poprawne.
O co chodzi? Właśnie o te nieszczęsne zapytania DNS!
Zabawa z DNSami umożliwia nie tylko rejestrowanie odwiedzanych przez użytkownika stron (np. przez ISP, organizacje rządowe, złośliwe rodzeństwo/administrator) lecz również nieco
bardziej niebezpieczne rzeczy. Jak więc się przed tym ustrzec?

DNScrypt - szyfrowanie zapytań dns

Moja odpowiedź, dająca dużo większą swobodę, a jednocześnie ochraniająca prywatność i bezpieczeństwo DNScrypt.

W dużym skrócie, działanie DNScrypta polega na przesyłaniu podpisanych kluczem kryptograficznym zapytań DNS po szyfrowanym tunelu, najczęsciej na porcie 443 tcp
(co pomaga jednocześnie ominąć restrykcje lokalnej sieci).

Jak więc to uruchomić?

DNScrypt - szyfrowanie zapytań dns

Postaram się pokazać jak zmusić do współpracy dnscrypt-proxy z dnsmasq, użytym w celu keszowania odpowiedzi, które może skutkować na przykład przyspieszeniem wczytywania stron 😉

Zacznijmy więc od instalacji zarówno dnscrypt-proxy jak i dnsmasq.

O ile dnsmasq znajduje się w repozytoriach większości dystrybucji, i można go łatwo zainstalować poprzez dołączonego menadżera pakietów:

# pacman -S dnsmasq

# aptitude install dnsmasq

# yum install dnsmasq

DNScrypt - szyfrowanie zapytań dns

o tyle dnsmasq możemy ściągnąć ze strony projektu, jeśli nie znajduje się on w repozytorium naszego systemu.

HINT! można również przekompilować źródła dla naszego genialnego smartfona z androidem!

Gdy mamy już potrzebne oprogramowanie, czas na konfigurację gniazdka dnscrypt-proxy. Na systemie ArchLinux, jego konfigurację można łatwo wyedytować za pomocą polecenia:

systemctl edit dnscrypt-proxy.socket

W tym momencie trzeba dokonać wyboru z którego serwera chcemy korzystać
i w zależności od dokonanego wyboru uzupełnić odpowiednie pola:

DNScrypt - szyfrowanie zapytań dns

[Socket]
ListenStream=
ListenDatagram=
ListenStream=127.0.0.1:40
ListenDatagram=127.0.0.1:40

Zgodnie z powyższą konfiguracją dnscrypt-proxy odpowiada na zapytania wysłane na adres 127.0.0.1:40.

Pora więc na ustawienie dnsmasq w roli serwera keszującego!

Tutaj sprawa jest tak samo prosta, ustawiamy stosowną konfigurację w pliku:

/etc/dnsmasq.conf
no-resolv
server=127.0.0.1#40
listen-address=127.0.0.1

I gotowe! Ustawmy jeszcze tylko adres serwera DNS z którego korzysta system w pliku:

/etc/resolv.conf

DNScrypt - szyfrowanie zapytań dns

na:

nameserver 127.0.0.1

Poprawność działania możemy sprawdzić korzystając z programu dig:

dig onet.pl @127.0.0.1

Zwróć uwagę, że ponowne takie samo zapytanie trwa już jedynie 0 milisekund. Jest to zasługa dnsmasq!

Niestety, przy każdym uruchomieniu klienta dhcp nadpisuje on ustawienia dotyczące serwerów dns. Jeśli nie korzystasz z NetworkManagera,
można ustawić odpowiedni atrybut na plik w którym znajdują się adresy serwerów dns. Można to zrobić wydając polece:

DNScrypt - szyfrowanie zapytań dns

chattr +i /etc/resolv.conf

I gotowe!

Korzystałem z ArchLinuxa tutaj.

Leave a Reply

Your email address will not be published. Required fields are marked *