{"id":93512,"date":"2018-12-28T01:00:51","date_gmt":"2018-12-28T01:00:51","guid":{"rendered":"https:\/\/www.internetsociety.org\/blog\/2019\/01\/el-protocolo-dns-over-tls-en-linux-systemd\/"},"modified":"2025-11-14T15:21:58","modified_gmt":"2025-11-14T15:21:58","slug":"el-protocolo-dns-over-tls-en-linux-systemd","status":"publish","type":"post","link":"https:\/\/www.internetsociety.org\/es\/blog\/2018\/12\/el-protocolo-dns-over-tls-en-linux-systemd\/","title":{"rendered":"El Protocolo DNS-over-TLS en Linux (systemd)"},"content":{"rendered":"<p>Mientras est\u00e1bamos elaborando contenidos acerca de la privacidad de DNS recientemente, supimos que las nuevas distribuciones de Linux incorporan el protocolo de encriptaci\u00f3n DNS over TLS. Por lo tanto, decidimos probar Ubuntu 18.10 en un port\u00e1til.<\/p>\n<p>Las versiones m\u00e1s recientes de Ubuntu emplean un servicio especial para la resoluci\u00f3n de nombres llamado \u00absystem-solve.service(8)\u00bb. El archivo de configuraci\u00f3n \u00abresolved.conf(5)\u00bb especifica la mayor\u00eda de los detalles para la resoluci\u00f3n de nombres, incluyendo qu\u00e9 protocolos y resolvedores se deben emplear, mientras que los archivos de configuraci\u00f3n \u00ab\/etc\/systemd\/network\/* .network\u00bb (para m\u00e1s informaci\u00f3n, consulte \u00absystemd.network(5)\u00bb) del \u00bbsystemd-networkd.service (8)\u00bb especifican cualquier configuraci\u00f3n determinada por v\u00ednculo.<\/p>\n<p>La configuraci\u00f3n predeterminada de \u00absystemd-solve\u00bb se selecciona en el tiempo de compilaci\u00f3n, y \u00ab\/etc\/systemd\/resolved.conf\u00bb contiene normalmente l\u00edneas comentadas que describen estos valores predeterminados. Por ejemplo, el contenido del archivo mencionado en una nueva instalaci\u00f3n de Ubuntu 18.10 es:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"post-img post-img-none 92466\" src=\"https:\/\/www.internetsociety.org\/wp-content\/uploads\/2018\/12\/systemd-Config-1-450x299.png\" alt=\"\" width=\"450\" height=\"299\"><\/p>\n<p>Como puede deducirse del archivo, el protocolo DNS-over-TLS (DoT) es compatible, pero est\u00e1 deshabilitado por defecto. En el momento de escribir este art\u00edculo, solo se admite el DoT oportunista seg\u00fan el manual, lo que significa que el resolvedor primero intentar\u00e1 resolver el problema utilizando el DoT antes de volver a la DNS tradicional en caso de fallo, permitiendo as\u00ed ataques de descenso de categor\u00eda cuando un atacante provoque intencionadamente un fallo del DoT con el fin de hacer que la resoluci\u00f3n de nombres se reduzca a la DNS tradicional.<\/p>\n<p>Decidimos probar con el DoT cambiando tres variables de configuraci\u00f3n en \u00ab\/etc\/systemd\/solve.conf&#8217;:\u00bb<\/p>\n<ul>\n<li>Pusimos \u00abDNS\u00bb en la direcci\u00f3n IP del servidor DoT<\/li>\n<li>Establecimos \u00abDNSOverTLS\u00bb como \u00aboportunista\u00bb<\/li>\n<li>Configuramos \u00abDomains\u00bb como \u00ab~\u00bb.<\/li>\n<\/ul>\n<p>La variable \u00abDNS\u00bb contiene la lista de direcciones IP que corresponden al resolvedor recurrente del DoT (<a href=\"https:\/\/dnsprivacy.org\/wiki\/display\/DP\/DNS+Privacy+Public+Resolvers#DNSPrivacyPublicResolvers-DNS-over-TLS(DoT)\">aqu\u00ed<\/a> puede encontrar una lista de resolvedores recurrentes p\u00fablicos).<\/p>\n<p>El ajuste de \u00abDNSOverTLS\u00bb como \u00aboportunista\u00bb activa el DoT en modo oportunista \u2013 esto significa que el DoT se emplear\u00e1 si es posible, pero el resolvedor simple volver\u00e1 a la DNS tradicional si falla.<\/p>\n<p>Por \u00faltimo, establecer \u00abDomains\u00bb como \u00ab~.\u00bb programa a \u00absystemd-resolved\u00bb para que prefiera el servidor de nombres especificado antes que cualquier servidor DNS por v\u00ednculo que est\u00e9 disponible. Esta es una configuraci\u00f3n importante, ya que de lo contrario un resolvedor DNS no DoT por v\u00ednculo podr\u00eda tener prioridad sobre el resolvedor DoT.<\/p>\n<p>Nuestra configuraci\u00f3n resultante es por lo tanto la siguiente:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"post-img post-img-none 92469\" src=\"https:\/\/www.internetsociety.org\/wp-content\/uploads\/2018\/12\/systemd-Config-2-450x299.png\" alt=\"\" width=\"450\" height=\"299\"><\/p>\n<p>Una vez aplicados estos cambios, es necesario hacerlos efectivos ejecutando el comando:<\/p>\n<p>sudo systemctl restart systemd-resolved<\/p>\n<p>Hecho esto, decidimos entonces comprobar si DoT se estaba empleando en lugar del DNS tradicional. As\u00ed que simplemente ejecutamos un analizador de protocolos (sniffer) en el ordenador port\u00e1til con Ubuntu, y realizamos una consulta DNS para \u00abfgont.go6lab.si\u00bb que revel\u00f3 lo siguiente:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"post-img post-img-none 92472\" src=\"https:\/\/www.internetsociety.org\/wp-content\/uploads\/2018\/12\/systemd-Config-3-450x301.png\" alt=\"\" width=\"450\" height=\"301\"><\/p>\n<p>Nuestra consulta gener\u00f3 tr\u00e1fico DNS tradicional y DoT en paralelo. De hecho, cuando m\u00e1s tarde ejecutamos un analizador de protocolos en el propio servidor de nombres autorizado, confirm\u00f3 que tanto el resolvedor local de nuestra red (192.168.3.1) como el resolvedor de Cloud-flare estaban generando consultas para el dominio anterior.<\/p>\n<p>En respuesta a este resultado, tratamos de averiguar por qu\u00e9 ve\u00edamos el tr\u00e1fico DNS tradicional en paralelo, en lugar de solo el tr\u00e1fico DoT, o al menos el tr\u00e1fico DoT seguido por el tr\u00e1fico DNS tradicional partiendo del supuesto de que DoT hubiera fallado. Adem\u00e1s, \u00bfpor qu\u00e9 se emple\u00f3 el resolvedor local para la resoluci\u00f3n DNS incluso cuando la variable \u00abDomains\u00bb ordena a \u00absystemd-resolved\u00bb que emplee el resolvedor DoT especificado antes que cualquier otro resolvedor?<\/p>\n<p>Parece que la ejecui\u00f3n de \u00absystemd-resolved\u00bb para el DoT oportunista no emplea DNS tradicionales solo como resultado de fallos del DoT, sino m\u00e1s bien en paralelo a las consultas del DoT. Por otro lado, un an\u00e1lisis sobre el repositorio GitHub para \u00absystemd\u00bb se\u00f1ala que la documentaci\u00f3n para la variable \u00abDomains\u00bb es en realidad incorrecta y simplemente especifica que el resolvedor DoT debe emplearse para dominios que coincidan con el sufijo especificado (\u00ab.\u00bb, en nuestro caso), el cual <strong>no <\/strong>significa que este resolvedor deba ser el \u00fanico empleado para solucionar dominios coincidentes.<\/p>\n<p><strong>Conclusi\u00f3n<\/strong><\/p>\n<p>Bas\u00e1ndonos en las pruebas que llevamos a cabo, solo podemos concluir que existe un defecto en la ejecuci\u00f3n del DoT de \u00absystemd-resolved\u00bb. Claramente, el uso de un resolvedor DoT solo tiene sentido si las consultas DNS se env\u00edan exclusivamente a trav\u00e9s de un canal cifrado, o si, al menos, el DNS tradicional solo se emplea en respuesta a fallos de DoT (y posiblemente despu\u00e9s de que el usuario admita que se debe emplear el DNS tradicional).<\/p>\n<p>Por lo tanto, actualmente recomendamos que si se necesita utilizar DoT, se deben usar aplicaciones alternativas como <a href=\"https:\/\/dnsprivacy.org\/wiki\/display\/DP\/DNS+Privacy+Daemon+-+Stubby\">Stubby<\/a> hasta que este problema se resuelva con \u00absystemd\u00bb.<\/p>\n<p><strong>Agradecimientos<\/strong><\/p>\n<p>Nos gustar\u00eda darle las gracias a Sara Dickinson por su ayuda en la depuraci\u00f3n de estos problemas.<\/p>\n<p><strong>M\u00e1s informaci\u00f3n<\/strong><\/p>\n<ul>\n<li>Introducci\u00f3n de la Internet Society a la privacidad de DNS<\/li>\n<li><a href=\"https:\/\/dnsprivacy.org\/wiki\/display\/DP\/DNS+Privacy+Public+Resolvers#DNSPrivacyPublicResolvers-DNS-over-TLS(DoT)\">Resolvedores p\u00fablicos de la privacidad de DNS<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/systemd\/systemd\/issues\/9472\">Parece que el comportamiento de .~ no es v\u00e1lido<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Mientras est\u00e1bamos elaborando contenidos acerca de la privacidad de DNS recientemente, supimos que las nuevas distribuciones de Linux incorporan el protocolo de encriptaci\u00f3n DNS over TLS. Por lo tanto, decidimos probar Ubuntu 18.10 en un port\u00e1til. Las versiones m\u00e1s recientes de Ubuntu emplean un servicio especial para la resoluci\u00f3n de nombres llamado \u00absystem-solve.service(8)\u00bb. El archivo [&hellip;]<\/p>\n","protected":false},"author":1411,"featured_media":92425,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","footnotes":""},"categories":[6188,2582,179,4910,4777,147],"tags":[3543,6238],"region_news_regions":[6030],"content_category":[6102],"ppma_author":[4605,4622],"class_list":["post-93512","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-como-funciona-internet","category-domain-name-system-dns-es","category-seguridad","category-fortalecimiento-de-internet","category-seguridad-es","category-deploy360-es","tag-dns-over-tls-es","tag-sistema-de-nombres-de-dominio-dns","region_news_regions-global","content_category-blog-type"],"acf":[],"uagb_featured_image_src":{"full":["https:\/\/www.internetsociety.org\/wp-content\/uploads\/2018\/12\/DNS-over-TLS.png",275,183,false],"thumbnail":["https:\/\/www.internetsociety.org\/wp-content\/uploads\/2018\/12\/DNS-over-TLS-150x150.png",150,150,true],"medium":["https:\/\/www.internetsociety.org\/wp-content\/uploads\/2018\/12\/DNS-over-TLS.png",275,183,false],"medium_large":["https:\/\/www.internetsociety.org\/wp-content\/uploads\/2018\/12\/DNS-over-TLS.png",275,183,false],"large":["https:\/\/www.internetsociety.org\/wp-content\/uploads\/2018\/12\/DNS-over-TLS.png",275,183,false],"1536x1536":["https:\/\/www.internetsociety.org\/wp-content\/uploads\/2018\/12\/DNS-over-TLS.png",275,183,false],"2048x2048":["https:\/\/www.internetsociety.org\/wp-content\/uploads\/2018\/12\/DNS-over-TLS.png",275,183,false],"post-thumbnail":["https:\/\/www.internetsociety.org\/wp-content\/uploads\/2018\/12\/DNS-over-TLS-250x166.png",250,166,true],"square":["https:\/\/www.internetsociety.org\/wp-content\/uploads\/2018\/12\/DNS-over-TLS.png",275,183,false],"gform-image-choice-sm":["https:\/\/www.internetsociety.org\/wp-content\/uploads\/2018\/12\/DNS-over-TLS.png",275,183,false],"gform-image-choice-md":["https:\/\/www.internetsociety.org\/wp-content\/uploads\/2018\/12\/DNS-over-TLS.png",275,183,false],"gform-image-choice-lg":["https:\/\/www.internetsociety.org\/wp-content\/uploads\/2018\/12\/DNS-over-TLS.png",275,183,false]},"uagb_author_info":{"display_name":"Kevin Meynell","author_link":"https:\/\/www.internetsociety.org\/es\/author\/meynell2\/"},"uagb_comment_info":0,"uagb_excerpt":"Mientras est\u00e1bamos elaborando contenidos acerca de la privacidad de DNS recientemente, supimos que las nuevas distribuciones de Linux incorporan el protocolo de encriptaci\u00f3n DNS over TLS. Por lo tanto, decidimos probar Ubuntu 18.10 en un port\u00e1til. Las versiones m\u00e1s recientes de Ubuntu emplean un servicio especial para la resoluci\u00f3n de nombres llamado \u00absystem-solve.service(8)\u00bb. El archivo&hellip;","authors":[{"term_id":4605,"user_id":1411,"is_guest":0,"slug":"meynell2","display_name":"Kevin Meynell","avatar_url":{"url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","url2x":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g2x"},"0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""},{"term_id":4622,"user_id":1399,"is_guest":0,"slug":"gont","display_name":"Fernando Gont","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/3a46e5fdc55a29d8bd6266aba558fe240b12b22896c88bd19b49c4c5effc04ef?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.internetsociety.org\/es\/wp-json\/wp\/v2\/posts\/93512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.internetsociety.org\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.internetsociety.org\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.internetsociety.org\/es\/wp-json\/wp\/v2\/users\/1411"}],"replies":[{"embeddable":true,"href":"https:\/\/www.internetsociety.org\/es\/wp-json\/wp\/v2\/comments?post=93512"}],"version-history":[{"count":0,"href":"https:\/\/www.internetsociety.org\/es\/wp-json\/wp\/v2\/posts\/93512\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.internetsociety.org\/es\/wp-json\/wp\/v2\/media\/92425"}],"wp:attachment":[{"href":"https:\/\/www.internetsociety.org\/es\/wp-json\/wp\/v2\/media?parent=93512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.internetsociety.org\/es\/wp-json\/wp\/v2\/categories?post=93512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.internetsociety.org\/es\/wp-json\/wp\/v2\/tags?post=93512"},{"taxonomy":"region_news_regions","embeddable":true,"href":"https:\/\/www.internetsociety.org\/es\/wp-json\/wp\/v2\/region_news_regions?post=93512"},{"taxonomy":"content_category","embeddable":true,"href":"https:\/\/www.internetsociety.org\/es\/wp-json\/wp\/v2\/content_category?post=93512"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.internetsociety.org\/es\/wp-json\/wp\/v2\/ppma_author?post=93512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}