DNS DNSCrypt VS Llanura
¿Qué es el DNS? DNS es un servicio de nombres de dominio, que es ampliamente utilizado por todo el mundo de hoy. Si usted no sabe si está utilizando DNS, entonces este artículo no es para ti.
DNS se utiliza para resolver legible para los nombres de dominio a direcciones legibles por máquina. Actualmente, para servidores de Internet no es importante si su lado tiene un nombre limpio y corta o no, aún no le importa tener direcciones IP como feos 19.5.81.65 y no el 1.1.1.1 – for example. Por cierto, 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.
Asi que, con el fin de conocer la dirección IP de algún servidor en Internet por el nombre de dominio DNS se utilizan servidores. Su navegador pregunta al servidor DNS pregunta como: “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”. Por supuesto que no es una verdadera IP, la IP real no puede contener un número mayor de 255 porque tiene que ser exactamente 1 byte. Asi que, in this routine anyone who sniffs on your wired/wireless connection can see that you are visiting “google.com”. DNSCrypt protocolo está aquí con el fin de cifrar esta información y nadie beetween su PC y el recurso de destino será capaz de oler sus peticiones de dominio.
El objetivo de este artículo
- Instalar su propio promotor DNSCrypt v2 (v1 se apoya demasiado) ( vamos a utilizar el paquete dnsdist)
- Instalar el cliente DNSCrypt para Windows
- Instalar el cliente DNSCrypt para Android
Nota: el artículo fue escrito en Inglés. Cambiar a Inglés desactivar traducción automática.
Lea el artículo más para ver todo el tutorial.
Como se puede ver que vamos a pasar por el proceso de instalación de software de cliente demasiado. Eso significa que si usted no desea instalar un servidor propio, omita este paso y vaya a la instalación del cliente. Hay toneladas de servidor DNSCrypt pública que se pueden utilizar y se sienten seguros al navegar por Internet.
Paso 1. DNSCrypt instalación del servidor
requisitos
- servidor VPS con Ubuntu 16.04 (Nota: cualquier Linux puede ser usado, esto no es un requisito de utilizar Ubuntu, pero en este tutorial voy a utilizar Ubuntu). Si está ejecutando Debian, el proceso de instalación son casi exactamente el mismo. Sin embargo, si está ejecutando CentOS (que está basado en paquetes RPM) que será diferente para usted
- Debe tener permisos de root en este servidor
- Cualquier PC con Windows para la instalación del cliente y la prueba
- (Opcional) Cualquier PC / enrutador / dispositivo que ejecute cualquier sistema operativo Linux (Ubuntu, Debian, CentOS, RedHat, etc.) con procesadores x64 / x86 / brazo / MIPS y etc.
- (Opcional) Cualquier teléfono Android con la aplicación instalada AdGuard
VPS preparar
Voy a utilizar algún servidor de la nube barata para instalar el servidor DNSCrypt en él. Asi que, Estoy conectado a través de SSH y veo a raíz de la consola
As you can see I’m using Putty to connect to Linux server from Windows machine. Disclaimer: Yo uso Windows aquí como una máquina cliente, ya que Windows se utiliza ampliamente y mucha gente lo está utilizando y yo quiero estar tan cerca de la realidad, ya que es. Las personas que usan Linux como sistema operativo principal no necesitan leer ese tipo de manuales porque pueden hacerlo por sí mismos 🙂
Asi que, deja para los paquetes de actualización y comprobar la versión del paquete de libsodium en repo oficial:
apt-get update apt-get install nano apt-cache search libsodium
Y vemos lista de paquetes
Vamos a comprobar la versión del paquete de libsodium18
apt-cache madison libsodium18
La versión del paquete que tengo es 1.0.8. Eso no es bueno para nosotros, ya que no admite el cifrado necesario para DNSCrypt v2 (anyway v1 will work though we want to do it the way “comme il le faut”. Necesitamos por lo menos la versión 1.0.9.
Asi que, giraremos Linux-mente-modo y compilar desde el código fuente!
De acuerdo, una pequeña nota aquí: si está ejecutando Ubuntu / Debian x64, se puede descargar dpkg paquetes compilados por mí aquí: libsodium-1.0.9-dpkg
Primero vamos a habilitar las fuentes de que esté disponible en APT: Para esto, 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”. A continuación, descarga las fuentes de libsodium y tratar de construir sin cambios:
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:
Asi que, *.paquetes deb se construyeron con éxito. Ahora vamos a actualizar la versión de este paquete de 1.0.9. Utilizaremos oficial gitHub fuente.
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
Nota: el último comando no es necesario para ser ejecutado. Pero esta es la versión que usé y funcionó. So if you want to install newer version just do not execute latest command with “c09b00cf20” commit id. Si usted no sabe que lo es, solo sigue el tutorial y esto debería funcionar 🙂
Ahora, vamos a actualizar el registro de cambios del paquete y estableció un nuevo número de versión:
dch -n
Esto abrirá un editor de texto (nano) y sólo tiene que guardarlo pulsando Ctrl + O y luego salir pulsando Ctrl + X.
Ahora, la reconstrucción de la versión 1.0.9
fakeroot debian/rules binary cd ../ ls -lah
Y ver la lista de archivos que tenemos: deberíamos tener libsodium18_1.0.9-0ubuntu1_amd64.deb libsodium-dbg_1.0.9-0ubuntu1_amd64.deb libsodium-dev_1.0.9-0ubuntu1_amd64.deb
Ahora, instalarlos todos:
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
Eso es. El paquete principal requisito está instalado. Ahora, vamos a compilar el paquete dnsdist de fuentes usando repo oficial 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
Compruebe si hay errores aquí y compilar
make make install
And wait it to compile… This will take a while depending on your VPS. A continuación, comprobar la versión:
dnsdist -V
Para mí es:
dnsdist 0.0.0.HEAD.gg27dd1e3 (Lua 5.2.4) Enabled features: dns-over-tls(openssl) dnscrypt ebpf libsodium protobuf recvmmsg/sendmmsg systemd
De acuerdo, vamos a añadir algunas configuraciones rápidas y ver cómo funciona
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
O simplemente descargar manualmente el archivo de configuración de aquí y copiar su contenido dnsdist.conf.zip
Debemos ver que el servicio se está ejecutando. Ahora, deja para generar las claves que serán necesarios para el cifrado.
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)
Entonces, pulsando salida Ctrl + C de la consola dnsdist y abrir su config para permitir que se une DNSCrypt reales. primero, vamos a averiguar nuestra dirección IP pública. Somos maestros fresco Linux así que vamos a utilizar la línea de comand para este
wget -4 -qO- ifconfig.co wget -6 -qO- ifconfig.co
Obtendremos 2 Direcciones IP: v4 y v6. Por supuesto, puede omitir v6 y trabajar sólo en IPv4, es suficiente para nosotros.
En mi caso, Me dio la dirección IP 85.143.172.89. También puede obtener la misma IP ejecutando ifconfig. Si es menor de NAT, éste debe asignarse a la propiedad intelectual como 192.168.10.135 – for example. Y luego hacia adelante puertos deseada (8443, 5353)
Ahora, 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. también, cambiar los nombres de proveedores en este config: these are “1.dnscrypt.mydomain.com” and same for other. Puede dejar tal y como está, que no es malo en absoluto y que no tiene que ser un nombre de dominio real, aunque es mejor que estar en un nombre de un verdadero dominio. Vamos a dejarlo como está para este ejemplo. Ahora, guardar el archivo Ctrl + O y salida Ctrl + X y detener el servicio y ejecutar de forma manual para ver los registros
service dnsdist stop dnsdist -v --disable-syslog
Vemos que está bien y que está escuchando en los puertos.
De acuerdo, la primera mitad del trabajo está hecho. Deje el dnsdist se ejecuta en la consola, no lo cierre y no corte a Internet fuera. Ahora, permite descubrir la clave pública del proveedor. Con el fin de hacerlo, escribir la siguiente a la derecha en la consola con dnsdist correr
printDNSCryptProviderFingerprint("/var/lib/dnsdist/providerPublic.key")
Y esto mostrará fingerpring de clave pública
Ahora, Deja la toma de huellas dactilares que y copiarlo en el portapapeles y abrir una nueva ventana de consola con conexión ssh a su VPS (porque no queremos detener el proceso de ejecución dnsdist). En la nueva consola, derecho de la siguiente
fingerprint="DF76:2D34:2E3A:DFCE:6A68:B520:AF34:7D58:A203:0967:184D:2C95:F341:4204:77DC:4450" fingerprint="${fingerprint//:}"; echo "${fingerprint,,}"
Por supuesto, fingerpring sustituir con su valor. Esto nos dará el valor normalizado en minúsculas. Copia esto en el portapapeles. For me it is “df762d342e3adfce6a68b520af347d58a2030967184d2c95f341420477dc4450”. Como se puede adivinar, we removed “:” character and lowercased the string, Eso es.
Ahora, vamos a crear un sello de DNS para este servidor. Ir a la página de súper gran utilidad aquí https://dnscrypt.info/stamps/
Y rellenar los valores de la configuración. Para mí se busca como esto
Y ahora guardar los SNDs://… server info stamp.
Para mí es: sdns://AQYAAAAAAAAAEjg1LjE0My4xNzIuODk6ODQ0MyDfdi00LjrfzmpotSCvNH1YogMJZxhNLJXzQUIEd9xEUBcxLmRuc2NyeXB0Lm15ZG9tYWluLmNvbQ
Esa fue una configuración para el protocolo DNSCrypt V1. Actualmente, es suficiente, pero se compilan a partir de fuentes dnsdist especialmente para utilizar el protocolo de la versión 2. Ahora, hacer lo mismo para DNSCrypt v2 (en el puerto 5353 en este caso)
Sello para DNSCrypt v2: sdns://AQYAAAAAAAAAEjg1LjE0My4xNzIuODk6NTM1MyDfdi00LjrfzmpotSCvNH1YogMJZxhNLJXzQUIEd9xEUBcyLmRuc2NyeXB0Lm15ZG9tYWluLmNvbQ
Esto es en realidad el resultado final que necesitamos. Este sello DNS está cifrada información sobre nuestro servidor DNS en particular, vamos a añadir esto en el lado cliente para conectarse a nuestro servidor. No está cifrado para la seguridad, pero sólo para hacer las cosas más fáciles, mismo que el código QR, pero para servidor DNS. De acuerdo, la configuración del servidor DNSCrypt está terminado. Vamos a probar nuestro servidor DNSCrypt de algún software de cliente.
En cuanto a que haya probado su servidor con algún cliente por debajo, no se necesita para ejecutarlo en la consola. Volver a su VPS y detener el proceso pulsando Ctrl + C. Entonces, activar este servicio de forma permanente
systemctl enable dnsdist systemctl restart dnsdist systemctl status dnsdist
Se ejecuta en segundo plano, para que pueda cerrar su conexión SSH y cerrar la ventana de masilla.
Configuracion avanzada
- Próximamente: La creación de registros TXT de dominio
- Próximamente: IPv6 que permite
Instalar el cliente DNSCrypt para Windows
Vamos a utilizar el software líder de la general para DNSCrypt que es ampliamente utilizado en Linux también: DNSCrypt Proxy. Ya se compila para Win32 y Win64 por lo que no es un problema para instalarlo y no es difícil en absoluto. Vamos a instalarlo para utilizar todos los dispositivos de resolución públicas. Para poder utilizar nuestro servidor DNS personalizado, comprobar configuation de apoderado dnscrypt para Linux.
Empecemos. Descargar la versión deseada para su sistema (x64 o x32) de la última versión del funcionario página GitHub. Si no está seguro de si su sistema es x64 o x32, versión de descarga x32. Voy a hacer lo mismo en este momento aunque no tengo sistema x64. Voy a descargar el archivo llamado dnscrypt-proxy-win32-2.0.22.zip (puede descargarlo desde aquí también). Veamos ahora el archivo descargado.
Y aquí es lo que tengo. Extraer este archivo. Pero primero, descarga 7Zip e instalarlo tener los mismos menús que tengo. ¿Por qué no WinRar? De acuerdo, No hay problema, pero no es gratis, aunque 7zip es gratis y no hace más o menos la misma. Voy a utilizar 7zip, ya que es gratuita para todos.
De acuerdo, Ahora hemos extraído las carpetas. Así que tiene una carpeta denominada dnscrypt-proxy-blabla
Cambiar el nombre a ser ordenada y agradable: dnscrypt-proxy
Ahora, ir a Mi PC>Disco C y crear una carpeta denominada Herramientas. Habrá que tener derechos de administrador para esta. Move our dnscrypt-proxy folder into this Tools folder so it will be “Tools->dnscrypt-proxy”
Ahora, rename the file “example-dnscrypt-proxy.toml” to “dnscrypt-proxy.toml” and open it in text editor, Te recomiendo instalar notepad ++. Este es el mejor reemplazo para el bloc de notas en las ventanas y quizás algún día Microsoft incluirá en lugar de este bloc de notas stupud de las ventanas (lo siento, microsoft).
Normalmente, no es necesario hacer nada aquí. Hacer algunos cambios si quieres, salvarlo y sólo echar un vistazo lo que este archivo Aspecto del producto y cerrarlo. Ahora, deja para instalar dnscrypt servicio de proxy. There is a file named “service-install.bat”. Usted tiene que ejecutarlo como administrador.
Habrá una nueva ventana de consola abierto. Compruebe si hay errores y cerca.
Asi que, now run the second file “service-restart.bat” also As Administrator.
Hay una advertencia de que el servicio no se puede detener, pero está bien. El servicio deberá ser instalado y funcionando como debiera. Press Start button and open command line by searching for “cmd”
Type “control” and press Enter
El panel de control se abrirá. Encuentra la categoría Internet y Redes
Now choose “Change adapter parameters”
Y seleccione en la lista de su adaptador de red principal (que está conectado a internet). Si tiene conexión Wi-Fi, será un adaptador WiFi para seleccionar
Y opciones abiertas. Choose from the list “ipv version 4” and press “Options”
Ahora guardar todos los puntos aquí y salir. Cierre todas las ventanas y tratar de abrir algunas páginas en su navegador. Si funciona como de costumbre, 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”. Si no lo usa, que no es necesario.
Instalar el cliente DNSCrypt para Android (AdGuard)
Descargar AdGuard e instalar en su dispositivo móvil. Ir a la configuración->Filtrado y DNS Habilitar esta característica. The down below there is “Select DNS server”. Pulse sobre él y vaya a la parte inferior para ver los botones para añadir un servidor DNS. Aquí hay algunas fotos para ver lo que estamos haciendo:
Ahora, tomemos sello para V2 de protocolo y probarlo.
Choose “Add custom DNS Server” and paste the sdns://… stuff here. Veremos esta imagen especie:
Press “Save and enable” and then check logs on server side:
Asi que, como podemos ver, protocolo de versión 2 es trabajo grande.
Instalar el cliente DNSCrypt en Linux
Próximamente
Instalar el cliente DNSCrypt en el Apple Mac OS X
Próximamente
Instalar el cliente DNSCrypt en el Apple iOS
Próximamente