dnscrypt-proxy (Español)

dnscrypt-proxy es un proxy DNS con soporte para los protocolos DNS cifrados, DNS sobre HTTPS y DNSCrypt, que se puede utilizar para evitar ataques de intermediario y escuchas ilegales. dnscrypt-proxy es compatible también con DNSSEC.

Esta traducción de dnscrypt-proxy fue revisada el 2019-11-06. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Instalación

Instale el paquete dnscrypt-proxy.

Configuración

Poner en marcha

El servicio se puede iniciar de dos maneras mutuamente excluyentes (es decir, solo se puede activar uno de los dos):

  • Con el archivo .service.
Nota: La opción listen_addresses debe configurarse (por ejemplo, listen_addresses = ['127.0.0.1:53', '[::1]:53']) en el archivo de configuración cuando se utiliza el archivo .service.
  • Mediante la activación del .socket.
Nota: Al utilizar la activación del socket, la opción listen_addresses se debe dejar vacía (es decir, listen_addresses = [ ]) en el archivo de configuración, ya que systemd se ocupa de la configuración del socket.

Seleccionar clientes DNS

Al dejar server_names comentado en el archivo de configuración /etc/dnscrypt-proxy/dnscrypt-proxy.toml, dnscrypt-proxy elegirá el servidor más rápido de entre los ya configurados en [sources] . Las listas de dichos servidores se descargarán, verificarán y actualizarán automáticamente. . Por lo tanto, la configuración de un conjunto específico de servidores es opcional.

Para establecer manualmente qué servidor utilizar, edite /etc/dnscrypt-proxy/dnscrypt-proxy.toml y elimine el comentario de la variable server_names, seleccionando uno o más de los servidores. Por ejemplo, para usar los servidores de Cloudflare:

server_names = ['cloudflare', 'cloudflare-ipv6']

Una lista completa de clientes DNS («resolver») se encuentra en la página upstream o Github. Si dnscrypt-proxy se ejecutó con éxito en el sistema anteriormente, también contendrá una lista. Mire la descripción de los servidores que validan DNSSEC, sin registro y sin cesura. Estos requisitos se pueden configurar de forma global con las opciones require_dnssec, , .

Desactivar cualquier servicio ligado al puerto 53

Para ver si algún programa está usando el puerto 53, ejecute:

 $ ss -lp 'sport = :domain'

Si el resultado contiene más de una línea a parte de los nombres de las columnas, debe desactivar cualquier servicio que esté utilizando el puerto 53. Un servicio común que lo utiliza es systemd-resolved.service, (NetworkManager#Unit dbus-org.freedesktop.resolve1.service not found), pero otros administradores de red pueden tener componentes análogos. Puede continuar una vez que la orden anterior imprima solo la siguiente línea:

 Netid               State                 Recv-Q                Send-Q                                 Local Address:Port                                   Peer Address:Port

Modificar resolv.conf

Modifique el archivo resolv.conf y reemplace el conjunto vigente de direcciones de resolución con la dirección para localhost y las opciones :

nameserver ::1
nameserver 127.0.0.1
options edns0 single-request-reopen

Otros programas pueden sobrescribir esta configuración; consulte resolv.conf#Overwriting of /etc/resolv.conf para obtener más detalles.

Iniciar el servicio de systemd

Finalmente, inicie/active la unidad o , dependiendo del método que elija.

Consejos y trucos

Configuración de la caché DNS local

Se recomienda ejecutar dnscrypt-proxy como un reenviador a una caché de DNS local, si no se utiliza la función caché de dnscrypt-proxy; de lo contrario, cada consulta hará un viaje de ida y vuelta al servidor de resolución ascendente. Cualquier programa de almacenamiento DNS local debería funcionar. Además de configurar dnscrypt-proxy, debe configurar su programa de caché de DNS local.

Cambiar el puerto

Para reenviar consultas desde una caché del DNS local, dnscrypt-proxy debe escuchar en un puerto diferente del predeterminado , ya que la caché DNS necesita escuchar en el puerto y la consulta de dnscrypt-proxy debe hacerse sobre un puerto diferente. El número de puerto se usa como ejemplo en esta sección. En este ejemplo, el número de puerto es mayor que 1024 por lo que no es necesario que dnscrypt-proxy sea ejecutado por root.

Hay dos métodos para cambiar el puerto predeterminado:

Método socket

Modifique con los siguientes contenidos:

[Socket]
ListenStream=
ListenDatagram=
ListenStream=127.0.0.1:53000
ListenStream=[::1]:53000
ListenDatagram=127.0.0.1:53000
ListenDatagram=[::1]:53000

Cuando las consultas se reenvían desde la caché del DNS local al puerto , iniciará .

Método service

Modifique la opción en /etc/dnscrypt-proxy/dnscrypt-proxy.toml con lo siguiente:

listen_addresses = ['127.0.0.1:53000', '[::1]:53000']

Ejemplo de configuraciones para una caché DNS local

Las siguientes configuraciones deberían funcionar con dnscrypt-proxy y asumir que está escuchando en el puerto .

Unbound

Configure Unbound a su gusto (en particular, consulte Unbound#Local DNS server) y añada las siguientes líneas al final de la sección en :

  do-not-query-localhost: no
forward-zone:
  name: "."
  forward-addr: ::1@53000
  forward-addr: 127.0.0.1@53000

Reinicie unbound.service para aplicar los cambios.

dnsmasq

Configure dnsmasq como un caché DNS local. La configuración básica para trabajar con dnscrypt-proxy es:

/etc/dnsmasq.conf
no-resolv
server=::1#53000
server=127.0.0.1#53000
listen-address=::1,127.0.0.1

Si configuró dnscrypt-proxy para usarlo como un «resolver» con la validación DNSSEC, asegúrese de activarla también en dnsmasq:

Reinicie para aplicar los cambios.

pdnsd

Instale pdnsd. Una configuración básica para trabajar con dnscrypt-proxy es:

Reinicie para aplicar los cambios.

Sandboxing

Edite para incluir las siguientes líneas:

[Service]
CapabilityBoundingSet=CAP_IPC_LOCK CAP_SETGID CAP_SETUID CAP_NET_BIND_SERVICE
ProtectSystem=strict
ProtectHome=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
PrivateTmp=true
PrivateDevices=true
MemoryDenyWriteExecute=true
NoNewPrivileges=true
RestrictRealtime=true
RestrictAddressFamilies=AF_INET AF_INET6
SystemCallArchitectures=native
SystemCallFilter=~@clock @cpu-emulation @debug @keyring @ipc @module @mount @obsolete @raw-io

Consulte y Systemd (Español)#Entornos seguros para probar aplicaciones para obtener más información.

Activar EDNS0

Los mecanismos de extensión de DNS permiten, entre otras cosas, que un cliente especifique cuán grande puede ser una respuesta a través de UDP.

Añada la siguiente línea a :

options edns0

También es posible que desee agregar el siguiente argumento a :

EDNSPayloadSize <bytes>

Donde <bytes> es un número, El tamaño por defecto comienza en 1252, con valores de hasta 4096 bytes siguen siendo, supuestamente, seguros. Un valor por debajo o igual a 512 bytes desactivará este mecanismo, a menos que un cliente envíe un paquete con una sección OPT, proporcionando un tamaño de carga útil.

Test de EDNS0

Haga uso del DNS Reply Size Test Server, utilizando la herramienta de línea de órdenes drill para emitir una consulta TXT para el nombre rs.dns-oarc.net:

$ drill rs.dns-oarc.net TXT

Con EDNS0 funcionando, la salida de la «answer section» debe ser similar a esta:

rst.x3827.rs.dns-oarc.net.
rst.x4049.x3827.rs.dns-oarc.net.
rst.x4055.x4049.x3827.rs.dns-oarc.net.
"2a00:d880:3:1::a6c1:2e89 DNS reply size limit is at least 4055 bytes"
"2a00:d880:3:1::a6c1:2e89 sent EDNS buffer size 4096"
gollark: If you were to actually deploy this in production, wouldn't it be better to make pyrobot store the messages as they're sent rather than going through the previous ones?
gollark: $markov <@!258639553357676545>
gollark: Why *would* they randomly stop? It's probably profitable.
gollark: I have no idea, I don't pay much attention to that.
gollark: Yes, though not for very long. Last year, if I remember right. I don't live there or anything.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.