Difference between revisions of "Dnscrypt-proxy (Español)"

From ArchWiki
Jump to: navigation, search
m (Pedro moved page DNSCrypt (Español) to Dnscrypt-proxy (Español): Redirigir siguiendo versión inglesa)
(Artículo actualizado)
Line 1: Line 1:
 +
{{Lowercase title}}
 
[[Category:Domain Name System (Español)]]
 
[[Category:Domain Name System (Español)]]
 
[[Category:Encryption (Español)]]
 
[[Category:Encryption (Español)]]
Line 5: Line 6:
 
[[pt:DNSCrypt]]
 
[[pt:DNSCrypt]]
 
[[zh-hans:DNSCrypt]]
 
[[zh-hans:DNSCrypt]]
[http://dnscrypt.org/ DNSCrypt] encrypta y autentifica el tráfico DNS entre el usuario y la resolución DNS, previene la suplantación local de las consultas DNS, asegurando que las respuestas DNS son enviadas por el servidor de eleccion. [https://www.reddit.com/r/sysadmin/comments/2hn435/dnssec_vs_dnscrypt/ckuhcbu]
+
{{TranslationStatus (Español)|dnscrypt-proxy|2018-09-14|537991}}
 +
 
 +
[https://github.com/jedisct1/dnscrypt-proxy dnscrypt-proxy] es un proxy DNS con soporte para los protocolos DNS cifrados, [[Wikipedia:DNS over HTTPS|DNS sobre HTTPS]] y [https://dnscrypt.info/ DNSCrypt], que se puede utilizar para evitar [[wikipedia:es:Ataque_de_intermediario|ataques de intermediario]] y escuchas ilegales. ''dnscrypt-proxy'' es compatible también con [[DNSSEC]].
  
 
== Instalación ==
 
== Instalación ==
  
Instale el paquete {{Pkg|dnscrypt-proxy}} disponible en los [[official repositories (Español)|repositorios oficiales]].
+
[[Install|Instale]] el paquete {{Pkg|dnscrypt-proxy}}.
  
 
== Configuración ==
 
== Configuración ==
  
Cuando {{ic|dnscrypt-proxy.socket}} esta activado. Acepta las peticiones entrantes en {{ic|127.0.0.1:53}} a una resolucion DNS. La resolucion DNS por defecto para {{ic|dnscrypt-proxy.service}} es ''dnscrypt.eu-nl''. Los nombres del ''resolver'' compatibles son visibles en la primera columna de {{ic|/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv}}.  
+
=== 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 {{ic|.service}}.
 +
 
 +
{{Nota|La opción {{ic|listen_addresses}} debe configurarse (por ejemplo, {{ic|1=listen_addresses = ['127.0.0.1:53', '[::1]:53']}}) en el archivo de configuración cuando se utiliza el archivo {{ic|.service}}.}}
 +
 
 +
* Mediante la activación del {{ic|.socket}}.  
 +
 
 +
{{Nota|Al utilizar la activación del socket, la opción {{ic|listen_addresses}} se debe dejar vacía (es decir, {{ic|1=listen_addresses = [ ]}}) en el archivo de configuración, ya que systemd se ocupa de la configuración del socket.}}
 +
 
 +
=== Seleccionar clientes DNS ===
 +
 
 +
Al dejar {{ic|server_names}} comentado en el archivo de configuración {{ic|/etc/dnscrypt-proxy/dnscrypt-proxy.toml}}, ''dnscrypt-proxy'' elegirá el servidor más rápido de entre los ya configurados en {{ic|[sources]}} [https://github.com/jedisct1/dnscrypt-proxy/wiki/Configuration#an-example-static-server-entry]. Las listas de dichos servidores se descargarán, verificarán y actualizarán automáticamente. [https://github.com/jedisct1/dnscrypt-proxy/wiki/Configuration-Sources#what-is-the-point-of-these-lists]. Por lo tanto, la configuración de un conjunto específico de servidores es opcional.
 +
 
 +
Para establecer manualmente qué servidor utilizar, edite {{ic|/etc/dnscrypt-proxy/dnscrypt-proxy.toml}} y elimine el comentario de la variable {{ic|server_names}}, seleccionando uno o más de los servidores. Por ejemplo, para usar los servidores de Cloudflare:
 +
 
 +
server_names = ['cloudflare', 'cloudflare-ipv6']
  
Para cambiar el valor por defecto editar {{ic|dnscrypt-proxy.service}}. Se recomienda elegis un proveedor creca de su ubicacion.
+
Una lista completa de clientes DNS («''resolver''») se encuentra en la [https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md página upstream] o [https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v2/public-resolvers.md Github]. Si ''dnscrypt-proxy'' se ejecutó con éxito en el sistema anteriormente, {{ic|/var/cache/dnscrypt-proxy/public-resolvers.md}} 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 {{ic|require_dnssec}}, {{ic|require_nolog}}, {{ic|require_nofilter}}.
  
Modificar el archivo [[Resolv.conf (Español)]] y reemplazar el conjunto actual de direcciones del ''resolver'' con ''localhost'':
+
=== Desactivar cualquier servicio ligado al puerto 53 ===
 +
 
 +
{{Sugerencia|Si utiliza [[#Unbound]] como su caché DNS local, esta sección se puede ignorar, ya que ''unbound'' se ejecuta en el puerto 53 de forma predeterminada.}}
 +
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 {{ic|systemd-resolved.service}}, 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 [https://github.com/jedisct1/dnscrypt-proxy/wiki/Installation-linux#step-4-change-the-system-dns-settings]:
  
 
  nameserver 127.0.0.1
 
  nameserver 127.0.0.1
 +
options edns0 single-request-reopen
  
Otros programas pueden sobreescribir este ajuste; consulte [[Resolv.conf (Español)#Conservar las configuraciones de DNS]] para mas detalles.
+
Otros programas pueden sobrescribir esta configuración; consulte [[resolv.conf#Overwriting of /etc/resolv.conf]] para obtener más detalles.
  
== Iniciar dnscrypt==
+
=== Iniciar el servicio de systemd ===
  
Está disponible como un servicio de [[systemd (Español)|systemd]]: {{ic|dnscrypt-proxy.service}}
+
Finalmente, [[start/enable|inicie/active]] la unidad {{ic|dnscrypt-proxy.service}} o {{ic|dnscrypt-proxy.socket}}, dependiendo del método que elija.
  
 
== Consejos y trucos ==
 
== Consejos y trucos ==
  
=== DNSCrypt como un reenviador para un caché DNS local ===
+
=== Configuración de la caché DNS local ===
  
Se recomienda ejecutar DNSCrypt como un reenviador para un caché DNS local, de lo contrario cada consulta única hará una ida y vuelta a la resolucion del upstream. Cualquier programa de almacenamiento de cache DNS local deberia trabajar. Los siguientes ejemplos muestran la configuracion para [[Unbound]] y [[dnsmasq (Español)|dnsmasq]].
+
{{Sugerencia|''dnscrypt-proxy'' puede almacenar en caché las entradas sin depender de otro programa. Esta función está activada de manera predeterminada con la línea {{ic|1=cache = true}} en el archivo de configuración ''dnscrypt-proxy''}}
  
==== Ejemplo: configuración para Unbound ====
+
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.
  
Configure [[Unbound]] a su gusto (recuerde [[Unbound#Set /etc/resolv.conf to use the local DNS server|ajustar /etc/resolv.conf para utilizar el servidor DNS local]]{{Broken section link}}) y añada las siguientes líneas al final de la sección{{ic|server}} en {{ic|/etc/unbound/unbound.conf}}:
+
==== Cambiar el puerto ====
do-not-query-localhost: no
+
 
 +
Para reenviar consultas desde una caché del DNS local, ''dnscrypt-proxy'' debe escuchar en un puerto diferente del predeterminado {{ic|53}}, ya que la caché DNS necesita escuchar en el puerto {{ic|53}} y la consulta de ''dnscrypt-proxy'' debe hacerse sobre un puerto diferente. El número de puerto {{ic|53000}} 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'''
 +
 
 +
[[Edit|Modifique]] {{ic|dnscrypt-proxy.socket}} 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 {{ic|53000}}, {{ic|dnscrypt-proxy.socket}} iniciará {{ic|dnscrypt-proxy.service}}.
 +
 
 +
'''Método service'''
 +
 
 +
Modifique la opción {{ic|listen_addresses}} en {{ic|/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  {{ic|53000}}.
 +
 
 +
===== 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 {{ic|server}} en {{ic|/etc/unbound/unbound.conf}}:
 +
 
 +
  do-not-query-localhost: no
 
  forward-zone:
 
  forward-zone:
 
   name: "."
 
   name: "."
   forward-addr: 127.0.0.1@40
+
  forward-addr: ::1@53000
 +
   forward-addr: 127.0.0.1@53000
  
{{Nota|El puerto 40 es dado como un ejemplo de cómo Unbound escucha por defecto el puerto 53, estos deben ser diferentes.}}
+
{{Sugerencia|Si está configurando un servidor, añada {{ic|interface: 0.0.0.0@53}} y {{ic|access-control: ''red''/''máscara-de-subred'' allow}} en la sección {{ic|server:}} para que los otros equipos puedan conectarse al servidor. Un cliente debe configurarse con {{ic|nameserver ''dirección-de-su-servidor''}} en {{ic|/etc/resolv.conf}}.}}
  
Inicie el servicio {{ic|unbound.service}} de [[systemd (Español)|systemd]]. Después configure DNScrypt para que coincidan la IP y el PORT presentes en {{ic|forward-zone}} de Unbound en {{ic|/etc/conf.d/dnscrypt-proxy}}:
+
[[Restart|Reinicie]] {{ic|unbound.service}} para aplicar los cambios.
DNSCRYPT_LOCALIP=127.0.0.1
 
DNSCRYPT_LOCALPORT=40
 
  
{{Nota|DNSCrypt debe ser iniciado antes que Unbound, así que incluya {{ic|unbound.service}} en una línea {{ic|1=Before=}} en la sección {{ic|[Unit]}} de {{ic|dnscrypt-proxy.service}}.}}
+
===== dnsmasq =====
  
Reinicie {{ic|dnscrypt-proxy.service}} y {{ic|unbound.service}} para aplicar los cambios.
+
Configure dnsmasq como un [[dnsmasq#DNS server|caché DNS local]]. La configuración básica para trabajar con ''dnscrypt-proxy'' es:
 
 
==== Ejemplo: configuración para dnsmasq ====
 
 
 
Configure dnsmasq como una [[dnsmasq (Español)#Configuración de la caché DNS|caché DNS local]]. He aquí la configuración básica para trabajar con DNSCrypt:
 
  
 
{{hc|/etc/dnsmasq.conf|2=
 
{{hc|/etc/dnsmasq.conf|2=
 
no-resolv
 
no-resolv
server=127.0.0.2#2053
+
server=::1#53000
listen-address=127.0.0.1
+
server=127.0.0.1#53000
 +
listen-address=::1,127.0.0.1
 
}}
 
}}
  
Si ha configurado DNSCrypt para usar un «resolver» con la validación DNSSEC activada, asegúrese de activarla también en dnsmasq:
+
Si configuró ''dnscrypt-proxy'' para usarlo como un «resolver» con la validación [[DNSSEC]], asegúrese de activarla también en dnsmasq:
  
 
{{hc|/etc/dnsmasq.conf|2=
 
{{hc|/etc/dnsmasq.conf|2=
proxy-dnssec
+
conf-file=/usr/share/dnsmasq/trust-anchors.conf
 +
dnssec
 +
dnssec-check-unsigned
 
}}
 
}}
  
Configure DNSCrypt para escuchar en {{ic|127.0.0.2}}, donde dnsmasq realizará la consulta:
+
Reinicie {{ic|dnsmasq.service}} para aplicar los cambios.
 +
 
 +
===== pdnsd =====
 +
 
 +
Instale [[pdnsd]]. Una configuración básica para trabajar con  ''dnscrypt-proxy'' es:
 +
 
 +
{{hc|/etc/pdnsd.conf|2=
 +
global {
 +
    perm_cache = 1024;
 +
    cache_dir = "/var/cache/pdnsd";
 +
    run_as = "pdnsd";
 +
    server_ip = 127.0.0.1;
 +
    status_ctl = on;
 +
    query_method = udp_tcp;
 +
    min_ttl = 15m;      # Retain cached entries at least 15 minutes.
 +
    max_ttl = 1w;        # One week.
 +
    timeout = 10;        # Global timeout option (10 seconds).
 +
    neg_domain_pol = on;
 +
    udpbufsize = 1024;  # Upper limit on the size of UDP messages.
 +
}
  
{{hc|/etc/conf.d/dnscrypt-proxy|2=
+
server {
DNSCRYPT_LOCALIP=127.0.0.2
+
    label = "dnscrypt-proxy";
DNSCRYPT_LOCALPORT=2053
+
    ip = 127.0.0.1;
 +
    port = 53000;
 +
    timeout = 4;
 +
    proxy_only = on;
 +
}
 +
 
 +
source {
 +
    owner = localhost;
 +
    file = "/etc/hosts";
 +
}
 
}}
 
}}
  
Reinicie {{ic|dnscrypt-proxy.service}} y {{ic|dnsmasq.service}} para aplicar los cambios.
+
Reinicie {{ic|pdnsd.service}} para aplicar los cambios.
 +
 
 +
=== Sandboxing ===
 +
 
 +
{{Nota| (del traductor) El «''sandboxing''» o [[wikipedia:es:Aislamiento_de_procesos|aislamiento de procesos]] es un mecanismo para ejecutar programas con seguridad y de manera separada, en este caso el servicio «dnscrypt-proxy.service».}}
 +
 
 +
[[Edit|Edite]] {{ic|dnscrypt-proxy.service}} 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 {{man|5|systemd.exec}} y [[Systemd#Sandboxing application environments]] para obtener más información. Además, consulte  [https://github.com/jedisct1/dnscrypt-proxy/pull/601#issuecomment-284171727 upstream comments] {{Dead link (Español)|2018|01|08}}.
  
 
=== Activar EDNS0 ===
 
=== Activar EDNS0 ===
  
Los [[wikipedia:es:Mecanismos de extension de DNS|mecanismos de extensión de DNS]] permiten, entre otras cosas, que a un cliente especifique cuán grande puede ser una respuesta a través de UDP.
+
Los [[wikipedia:Extension_mechanisms_for_DNS|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 {{ic|/etc/resolv.conf}}:
  
Agregue la siguiente línea a {{ic|/etc/resolv.conf}}:
 
 
  options edns0
 
  options edns0
  
También es posible que desee agregar el siguiente argumento a ''dnscrypt-proxy'':
+
También es posible que desee agregar el siguiente argumento a {{ic|/etc/dnscrypt-proxy.conf}}:
--edns-payload-size=<bytes>
 
  
El tamaño por defecto es '''1252''' bytes, con valores de hasta '''4096''' 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.
+
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 ====
 
==== Test de EDNS0 ====
  
Haga uso del [https://www.dns-oarc.net/oarc/services/replysizetest DNS Reply Size Test Server], utilizando la herramienta de línea de órdenes ''dig'', que forma parte del paquete {{Pkg|bind-tools}} disponible en los [[official repositories (Español)|repositorios oficiales]], para emitir una consulta TXT para el nombre ''rs.dns-oarc.net'':
+
Haga uso del [https://www.dns-oarc.net/oarc/services/replysizetest 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'':
  $ dig +short rs.dns-oarc.net txt
+
 
 +
  $ drill rs.dns-oarc.net TXT
 +
 
 +
Con '''EDNS0''' funcionando, la salida de la «answer section» debe ser similar a esta:
  
Con '''EDNS0''' funcionando, la salida debe ser similar a esta:
 
 
  rst.x3827.rs.dns-oarc.net.
 
  rst.x3827.rs.dns-oarc.net.
 
  rst.x4049.x3827.rs.dns-oarc.net.
 
  rst.x4049.x3827.rs.dns-oarc.net.

Revision as of 12:55, 14 September 2018

Estado de la traducción: este artículo es una versión traducida de dnscrypt-proxy. Fecha de la última traducción/revisión: 2018-09-14. Puedes ayudar a actualizar la traducción, si adviertes que la versión inglesa ha cambiado: ver cambios.

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.

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] [1]. Las listas de dichos servidores se descargarán, verificarán y actualizarán automáticamente. [2]. 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, /var/cache/dnscrypt-proxy/public-resolvers.md 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, require_nolog, require_nofilter.

Desactivar cualquier servicio ligado al puerto 53

Sugerencia: Si utiliza #Unbound como su caché DNS local, esta sección se puede ignorar, ya que unbound se ejecuta en el puerto 53 de forma predeterminada.

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, 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 [3]:

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 dnscrypt-proxy.service o dnscrypt-proxy.socket, dependiendo del método que elija.

Consejos y trucos

Configuración de la caché DNS local

Sugerencia: dnscrypt-proxy puede almacenar en caché las entradas sin depender de otro programa. Esta función está activada de manera predeterminada con la línea cache = true en el archivo de configuración dnscrypt-proxy

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 53, ya que la caché DNS necesita escuchar en el puerto 53 y la consulta de dnscrypt-proxy debe hacerse sobre un puerto diferente. El número de puerto 53000 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 dnscrypt-proxy.socket 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 53000, dnscrypt-proxy.socket iniciará dnscrypt-proxy.service.

Método service

Modifique la opción listen_addresses 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 53000.

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 server en /etc/unbound/unbound.conf:

  do-not-query-localhost: no
forward-zone:
  name: "."
  forward-addr: ::1@53000
  forward-addr: 127.0.0.1@53000
Sugerencia: Si está configurando un servidor, añada interface: 0.0.0.0@53 y access-control: red/máscara-de-subred allow en la sección server: para que los otros equipos puedan conectarse al servidor. Un cliente debe configurarse con nameserver dirección-de-su-servidor en /etc/resolv.conf.

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:

/etc/dnsmasq.conf
conf-file=/usr/share/dnsmasq/trust-anchors.conf
dnssec
dnssec-check-unsigned

Reinicie dnsmasq.service para aplicar los cambios.

pdnsd

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

/etc/pdnsd.conf
global {
    perm_cache = 1024;
    cache_dir = "/var/cache/pdnsd";
    run_as = "pdnsd";
    server_ip = 127.0.0.1;
    status_ctl = on;
    query_method = udp_tcp;
    min_ttl = 15m;       # Retain cached entries at least 15 minutes.
    max_ttl = 1w;        # One week.
    timeout = 10;        # Global timeout option (10 seconds).
    neg_domain_pol = on;
    udpbufsize = 1024;   # Upper limit on the size of UDP messages.
}

server {
    label = "dnscrypt-proxy";
    ip = 127.0.0.1;
    port = 53000;
    timeout = 4;
    proxy_only = on;
}

source {
    owner = localhost;
    file = "/etc/hosts";
}

Reinicie pdnsd.service para aplicar los cambios.

Sandboxing

Nota: (del traductor) El «sandboxing» o aislamiento de procesos es un mecanismo para ejecutar programas con seguridad y de manera separada, en este caso el servicio «dnscrypt-proxy.service».

Edite dnscrypt-proxy.service 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 systemd.exec(5) y Systemd#Sandboxing application environments para obtener más información. Además, consulte upstream comments [enlace roto 2018-01-08].

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 /etc/resolv.conf:

options edns0

También es posible que desee agregar el siguiente argumento a /etc/dnscrypt-proxy.conf:

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"