{"id":2210,"date":"2014-11-23T00:54:39","date_gmt":"2014-11-23T02:54:39","guid":{"rendered":"http:\/\/www.viazap.com.br\/?p=2210"},"modified":"2014-11-23T00:54:39","modified_gmt":"2014-11-23T02:54:39","slug":"dns-robusto-e-facil-com-powerdns-e-mysql","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=2210","title":{"rendered":"DNS Robusto e f\u00e1cil com PowerDNS e MySQL"},"content":{"rendered":"<p>O PowerDNS \u00e9 um dos muitos softwares de DNS, ele \u00e9 muito poderoso, pode fazer milhares de resolu\u00e7\u00f5es por segundo, e o que mais me chamou aten\u00e7\u00e3o, pode-se comunicar com v\u00e1rios backends, includindo MySQL, PostgreSQL, LDAP, Oracle e outros.<\/p>\n<p>Para se ter uma id\u00e9ia, existem grandes implementa\u00e7\u00f5es feitas com ele, incluindo register.com e tucows.com, e, segundo o site oficial, existem aproximadamente 4000 servidores em servi\u00e7os secund\u00e1rios ativos na internet, que servem aproximadamente 10 milh\u00f5es de zonas e um imenso n\u00faumero de dom\u00ednios. Testes no primeiro n\u00edvel do dom\u00ednios .EU demonstraram que o PowerDNs pode prover 50.000 resolu\u00e7\u00f5es por segundo num \u00fanico servidor, com um hardware simples. No GOOGLE encontrei relatos de testes feitos inclusive pelo registro.br para utiliza\u00e7\u00e3o do mesmo.<\/p>\n<p>A \u00fanica desvantagem evidente \u00e9 que o PowerDNS ainda n\u00e3o prev\u00ea uma implementa\u00e7\u00e3o completa do DNSSEC. (O que pra muitos \u00e9 irrelevante, visto que poucos s\u00e3o aqueles que implementaram DNSSEC em seus servidores)<!--more--><\/p>\n<p>Utilizar o PowerDNS inclusive como cache de DNS \u00e9 uma \u00f3tima pedida devido a sua excelente performance.<\/p>\n<p>J\u00e1 tenho usado o PowerDNS h\u00e1 pelo menos 2 anos como servidor secund\u00e1rio e a pouco menos de 1 ano como servidor prim\u00e1rio. Utilizo-o bastante tamb\u00e9m como caching de DNS, ele \u00e9 extremamente r\u00e1pido.<\/p>\n<p>Estarei descrevendo abaixo os passos para instala\u00e7\u00e3o do PowerDNS no Debian, mas com um pouco de conhecimento pode ser instalado em qualquer distribui\u00e7\u00e3o atrav\u00e9s do c\u00f3digo fonte.<\/p>\n<p>\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014<\/p>\n<p>1\u00ba Ambiente \u2013 Somente recurs\u00e3o de nomes (DNS cache, caching)<\/p>\n<p><em>#apt-get install pdns-recursor<\/em><\/p>\n<p>Edite o arquivo \/etc\/powerdns\/recursor.conf:<\/p>\n<p>Descomente a linha allow-from e insira os endere\u00e7os ou classes ips autorizadas a fazer a recurs\u00e3o de nomes.<\/p>\n<p><em>allow-from=127.0.0.0\/8, 10.0.0.0\/8, 192.168.0.0\/16, 172.16.0.0\/12, ::1\/128, fe80::\/10<br \/>\n<\/em><br \/>\nPara evitar que vejam a exibi\u00e7\u00e3o da vers\u00e3o do PowerDNS.<\/p>\n<p><em>version-string=DENIED<br \/>\n<\/em><br \/>\nEdite o arquivo \/etc\/resolv.conf e altere a linha nameserver para 127.0.0.1 (Isso far\u00e1 com que a pesquisa de DNS seja feita no servidor local)<\/p>\n<p>Pronto, voc\u00ea j\u00e1 est\u00e1 apto a fazer consultas de dns atrav\u00e9s do seu dns caching.<\/p>\n<p>\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014<\/p>\n<p>2\u00ba Ambiente \u2013 Servidor de nomes e recurs\u00e3o<\/p>\n<p>Considerando que o mysql j\u00e1 est\u00e1 instalado no servidor.<\/p>\n<p>Instale o PowerDNS com suporte a Mysql<\/p>\n<p><em>#apt-get install pdns-backend-mysql<br \/>\n<\/em><br \/>\nEntre no MySQL e execute os comandos abaixo para criar o usu\u00e1rio, senha, banco e setar as permiss\u00f5es pertinentes.<\/p>\n<p><em>#mysql<\/em><\/p>\n<blockquote><p>#\u2014\u2014- Recortar Aqui<br \/>\nCREATE USER \u2018pdns\u2019@ \u2018%\u2019 IDENTIFIED BY \u2018sua-senha\u2019;<br \/>\nGRANT USAGE ON * . * TO \u2018pdns\u2019@ \u2018%\u2019 IDENTIFIED BY \u2018sua-senha\u2019 WITH<br \/>\nMAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;<br \/>\nCREATE DATABASE `pdns` ;<br \/>\nGRANT ALL PRIVILEGES ON `pdns` . * TO \u2018pdns\u2019@ \u2018%\u2019;<br \/>\n#\u2014\u2014-<\/p><\/blockquote>\n<p>Agora vamos criar as tabelas conforme o modelo do PowerDNS.<\/p>\n<p><em>#mysql -u pdns -psua-senha -D pdns &lt; \/usr\/share\/doc\/pdns-backend-mysql\/mysql.sql <\/em><br \/>\nEnt\u00e3o vamos copiar o arquivo padr\u00e3o de configura\u00e7\u00f5es do backend para o diret\u00f3rio de configura\u00e7\u00e3o.<\/p>\n<p><em>#cp \/usr\/share\/doc\/pdns-backend-mysql\/examples\/pdns.local.gmysql \/etc\/powerdns\/pdns.d\/<br \/>\n<\/em><br \/>\nEdite o arquivo \/etc\/powerdns\/pdns.d\/pdns.local.gmysql<\/p>\n<p>Altere o arquivo conforme suas preferencias.<\/p>\n<blockquote><p>gmysql-host=localhost<br \/>\ngmysql-port=3306<br \/>\ngmysql-dbname=pdns<br \/>\ngmysql-user=pdns<br \/>\ngmysql-password=sua-senha<\/p><\/blockquote>\n<p>Como seu servidor de DNS tamb\u00e9m far\u00e1 a recurs\u00e3o de nomes, \u00e9 importante limitar a recursividade do seu servidor de nomes aos IP\u2019s de sua(s) rede(s), isso impede o conhecido OPEN DNS.<\/p>\n<p>Edite o arquivo \/etc\/powerdns\/pdns.conf.<\/p>\n<p>Descomente a linha allow-recursion e insira os endere\u00e7os dos quais os servidor de nomes vai servir.<\/p>\n<p><em>allow-recursion=127.0.0.0\/8, 10.0.0.0\/8, 192.168.0.0\/16, 172.16.0.0\/12, ::1\/128, fe80::\/10<br \/>\n<\/em><br \/>\nDescomente a linha launch e insira os backends a serem carregados<\/p>\n<p><em>launch=bind,gmysql<\/em><\/p>\n<p>Se voc\u00ea ir\u00e1 replicar as Zonas, precisa inserir os endere\u00e7os ips dos servidores dos quais ir\u00e1 fazer transfer\u00eancia de Zonas.<\/p>\n<p><em>allow-axfr-ips=200.200.200.200<\/em><br \/>\n<em>(onde 200.200.200.200 \u00e9 o endere\u00e7o ip do seu servidor de dns que ser\u00e1 replicado)<\/em><\/p>\n<p>Precisa tamb\u00e9m permitir as transfer\u00eancias de zonas.<\/p>\n<p><em>disable-axfr=no<\/em><\/p>\n<p>Altere a porta do recursor para uma porta diferente do servidor de nomes, para isso edite o arquivo \/etc\/powerdns\/recursor.conf<\/p>\n<p><em>local-port=2525<br \/>\n<\/em><br \/>\nAgora vamos inserir o recursor no servidor de nomes, para quem ele fa\u00e7a recurs\u00e3o caso n\u00e3o encontre no servidor de nomes local. Para isso edite o arquivo edite o arquivo \/etc\/powerdns\/pdns.conf.<\/p>\n<p><em>recursor=127.0.0.1:2525<br \/>\n<\/em><br \/>\n\u00c9 isso, seu servidor de nomes j\u00e1 est\u00e1 ativo e com suporte a recurs\u00e3o.<br \/>\nPara testar o servidor de nomes local, vamos inserir um registro de exemplo.<\/p>\n<p><em># mysql<\/em><\/p>\n<blockquote><p>#\u2014\u2014- Recortar Aqui<br \/>\ninsert into domains (name,type) values (\u2018teste.com.br\u2019,&#8217;NATIVE\u2019);<br \/>\ninsert into records (content,type,domain_id,name) values (\u2019127.0.0.1\u2032,\u2019A&#8217;,\u20191\u2032,\u2019www.teste.com.br\u2019)<br \/>\n#\u2014\u2014-<\/p><\/blockquote>\n<p>Teste o a resolu\u00e7\u00e3o de seu dom\u00ednio.<br \/>\nLembre-se que para fazer o teste, vc deve ter o endere\u00e7o local de seu servidor no arquivo \/etc\/resolv.conf<\/p>\n<p>Aproveite! =)<\/p>\n<p>\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014<\/p>\n<p>3\u00ba Ambiente \u2013 Servidor de nomes e sem recurs\u00e3o<\/p>\n<p>Repita o procedimento do ambiente 2, apenas n\u00e3o instalando o Recursor.<\/p>\n<p>\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014<\/p>\n<p>Abaixo tr\u00eas interfaces gr\u00e1ficas para gerenciamento do PowerDNS<\/p>\n<p>PowerAdmin \u2013 <a href=\"http:\/\/www.poweradmin.org\/\">http:\/\/www.poweradmin.org\/<\/a> (O Mais completo)<br \/>\nproFTPd Administrator \u2013 proftpd-adm.sourceforge.net<br \/>\nZoneAdmin \u2013 <a href=\"http:\/\/open.megabit.net\/index.php?section=pro_home&amp;project=ZoneAdmin\">http:\/\/open.megabit.net\/index.php?section=pro_home&amp;project=ZoneAdmin<\/a><\/p>\n<p>Fonte: <a href=\"http:\/\/www.powerdns.com\/\">http:\/\/www.powerdns.com\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O PowerDNS \u00e9 um dos muitos softwares de DNS, ele \u00e9 muito poderoso, pode fazer milhares de resolu\u00e7\u00f5es por segundo, e o que mais me chamou aten\u00e7\u00e3o, pode-se comunicar com v\u00e1rios backends, includindo MySQL, PostgreSQL, LDAP, Oracle e outros. Para se ter uma id\u00e9ia, existem grandes implementa\u00e7\u00f5es feitas com ele, incluindo register.com e tucows.com, e, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[779,780,781,771,782,783,17,215,784,785,71,14,133,786,787,972,788,789,87,790],"class_list":["post-2210","post","type-post","status-publish","format-standard","hentry","category-viazap","tag-allow-transfer","tag-axfr","tag-backend","tag-bind","tag-cache","tag-caching","tag-debian","tag-dns","tag-dnssec","tag-gmysql","tag-ldap","tag-linux","tag-mysql","tag-nameserver","tag-oracle-2","tag-postgresql","tag-poweradmin","tag-powerdns","tag-proxy-2","tag-recursor"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2210"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2210\/revisions"}],"predecessor-version":[{"id":2211,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2210\/revisions\/2211"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2210"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}