Adicionando suporte ao Amazon Route 53 no serviço de DNS Dinâmico do pfSense



  • Olá pessoal,

    Eu tinha colocado este post na sessão de "DHCP e DNS" aqui do fórum, mas por sugestão do marcelloc estou replicando ele aqui :)

    Para resolver uma necessidade pessoal eu criei um pequeno patch que quando aplicado ao pfSense 2.0.1 possibilitará que você utilize o Amazon Route 53 como provedor de serviços de DNS Dinâmico no seu pfSense.

    Não sou programador e o meu código pode não estar muito elegante, mas na minha opinião ele faz bem o trabalho a que se propõe, estou compartilhando pois acredito que outras pessoas podem ter a mesma necessidade que eu tive.

    Como não encontrei nenhuma documentação sobre como criar um pacote "normal" para o pfSense, a instalação do patch é manual, tentei fazer com que o processo fosse o mais simples e menos intrusivo possível.

    O arquivo com o patch está disponível no url abaixo:

    http://cdn.ebrandi.eti.br/downloads/pfsense_route53update-1.0b.tar.gz
    MD5: a4fba73549505b021ec9cff340dad17a

    Para instalar basta fazer upload do mesmo para o seu servidor, descompactar e rodar o script install.sh. Não é necessário passar nenhum parâmetro na execução.

    O script irá executar alguns procedimentos simples, se algo der errado você irá encontrar um backup dos seus arquivos originais no diretório /root/backup_route53update

    No meu blog vocês irão encontrar uma descrição mais detalhada e imagens de exemplo de como ficarão as telas do serviço de "Dynamic DNS" depois da instalação do patch. O endereço do blog está abaixo.

    http://blog.ebrandi.eti.br/2012/03/adicionando-suporte-ao-amazon-route-53-no-servico-de-dns-dinamico-do-pfsense-2-0-1/

    []´s Edson Brandi



  • Edson,

    Bem vindo ao fórum!  :)

    Vou colocar seu patch na lista de tutoriais.

    Parabéns pelo procedimento que você postou no seu blog, esta bem detalhado.

    att,
    Marcello Coutinho



  • Valeu Marcello :)

    Se puder me indicar depois onde eu encontro a documentação sobre como criar um pacote "convencional" pro pfsense eu agradeceria muito, eu procurei e não tive muito sucesso, por isso que acabei gerando o arquivo de instalação desta forma.

    Apesar que não sei se é aceitável criar um pacote que "altere" um serviço já existente no core do pfSense, talvez o mais correto fosse o mantenedor do "Dynamic DNS" incorporar a funcionalidade na arvore do pfSense caso ele julgue que a funcionalidade é útil.

    Edson



  • Esta atualização precisa ser integrada no codigo do pfsense.

    Antes da versão 2.0 sair, alguém publicou um serviço a mais para o dyndns e a requisição ficou lá por meses sem aprovação.

    Existem pacotes que alteram arquivos do pfsense e na descrição o mantenedor diz que é um procedimento sem volta.

    Da uma olhada no repositório dos pacotes (https://github.com/bsdperimeter/pfsense-packages)

    Um pacote bem simples é o filer.
    Um que altera o pfsense é o widescreen

    O repositorio do pfsense é https://github.com/bsdperimeter/pfsense



  • @ebrandi:

    Olá pessoal,
    Eu tinha colocado este post na sessão de "DHCP e DNS" aqui do fórum, mas por sugestão do marcelloc estou replicando ele aqui :)

    Parabéns pela iniciativa Edson…

    Minha única sugestão adicional é que, na medida do possível, você faça uma chamada para o post original no blog da comunidade brasileira do pfSense: http://www.pfsense-br.org (basta se registrar e criar um novo post, no formato de chamada mesmo). Certamente seu artigo será encontrado ainda mais facilmente por quem precisa! ;)

    Abraços!
    Jack



  • Valeu Jack :)
    Já fiz o post la no blog.

    []´s Edson



  • @ebrandi:

    Já fiz o post la no blog.

    Show of ball Edson… ;)



  • O patch chamou a atenção do Jimp, parabéns Edson  :D

    http://forum.pfsense.org/index.php/topic,47711.msg251230.html#msg251230



  • Edson Brandi,

    Parabens..

    Agora funciona para quem tem load balance / FaiorOver..  o nossa amigo gustavo implementou um patch.. só eu testei e não funcionou..
    em dois links IP fixo e um ADSL e não funcionou..



  • @mantunespb:

    Edson Brandi,

    Parabens..

    Agora funciona para quem tem load balance / FaiorOver..  o nossa amigo gustavo implementou um patch.. só eu testei e não funcionou..
    em dois links IP fixo e um ADSL e não funcionou..

    O script sempre seta no DNS o IP que está ativo na interface que vc escolheu quando criou o registro, ou seja, se vc tem 2 links vc tem que ter 2 hostnames diferentes.

    Se você precisa de um registro no DNS que tenha a funcionalidade de migrar de interface, para viabilizar por exemplo que os usuários continuem acessando seu servidor de forma transparente quando vc estiver em uma situação de contingencia o script que eu disponibilizei não vai atender sua necessidade.

    Para viabilizar isso vc precisaria ter um registro do DNS que não esteja vinculado a uma interface do seu servidor, e que seja atualizado com base numa consulta a uma entidade externa a sua rede, como por exemplo http://checkip.dyndns.org

    Não é algo complicado de fazer usando o shell script que disponibilizei, basta fazer alguns ajustes simples nele.

    Se você abrir o script vc vai ver que ele tem logo no começo um:

    Input Data

    Domain=$1
    Hostname=$2
    NewTTL=$3
    ZoneID=$4
    AccesskeyID=$5
    SecretAPIKey=$6
    CurrentIP=$7
    link=$8

    Edite esse bloco de forma que fique:

    Input Data

    Domain=seu_dominio
    Hostname=hostname_desejado
    NewTTL=TTL_desejado
    ZoneID=Seu_zoneid_na_amazon
    AccesskeyID=Seu_access_key
    SecretAPIKey=Seu_secret_access_key
    CurrentIP=curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
    link=Nome_da_sua interface_principal # só é usado para criar o arquivo de log.

    Agora basta criar uma entrada no seu cron para rodar diretamente o route53update.sh por exemplo a cada 5 minutos.

    Se o IP retornado pelo checkip.dyndns.org for diferente do IP retornado pelo dig quando ele consulta o seu hostname.domain no servidor de DNS da Amazon, o script irá enviar uma requisição para a API do Route 53 atualizando o IP do hostname.

    Desta forma quando o seu link principal falhar e o pfSense chavear para o seu trafego para o link de backup, o IP retornado pelo checkip.dyndns.org vai mudar e o seu DNS vai ser alterado para refletir esse ajuste :) , ou seja, vc mantem o mesmo hostname independente da interface pela qual estiver trafegando no momento.

    Solução dirt and cheap, mas que funciona ;)

    Espero ter ajudado.

    []´s Edson



  • Amigos,

    Disponibilizei uma nova versão do patch para adicionar o suporte ao Route 53 no serviço de Dynamic DNS do pfSense.

    http://cdn.ebrandi.eti.br/downloads/pfsense_route53update-1.0e.tar.gz
    MD5: 23f10b020db4f87e5677b6bf41279419

    Esta nova versão não faz uso de softwares externos, e e realiza todas as etapas do processo de atualização do DNS usando apenas recursos internos do próprio PHP.

    Achei melhor fazer essa alteração para simplificar o processo, e para tornar mais fácil de incorporar a solução na arvore oficial do pfSense.

    Edson



  • ebrandi,

    Parabéns novamente pelo trabalho! ;)

    Realmente o patch (numa análise superficial) ficou realmente melhor (mais limpo)!!!

    Abraços!
    Jack



  • Obrigado Jack

    Acabei de criar um pull request, vamos ver se aceitam :)

    https://github.com/bsdperimeter/pfsense/pull/70

    Edson



  • Disponibilizei uma nova versão em:

    http://cdn.ebrandi.eti.br/downloads/pfsense_route53update-1.0f.tar.gz
    MD5: **78e4161e4c0e6dae7843e54b036b4a39 **

    Fiz um pequeno ajuste de forma que agora quando o usuário deleta um hostname deste serviço de DNS Dinamico no pfsense, o registro de DNS também é removido do Amazon Route 53, e também remove o arquivo que o sistema usa no /conf para fazer a comparação do IP atual com o registrado no DNS.

    Desta forma não fica nada para trás quando você deleta um registro no pfsense.

    Com este ajuste de hoje considero que por hora está encerrada a minha brincadeira com o PHP e não tenho previsão de liberar mais nenhuma versão do patch, afinal no estagio atual o sistema mais do que atende as minhas necessidades pessoais  ::)

    Ontem o ermal fez fez um comentário no meu pull request, e pelo teor não sei se vão aceitar a contribuição… de qualquer forma fica aqui intenção.

    Edson



  • @ebrandi:

    Ontem o ermal fez fez um comentário no meu pull request, e pelo teor não sei se vão aceitar a contribuição… de qualquer forma fica aqui intenção.

    Não te preocupe Edson…

    Você percorreu exatamente a estrada que norteia o modelo de desenvolvimento open-source. Você resolveu um problema específico seu, compartilhou a resolução com a comunidade e encaminhou um pull request para os mantenedores. Obviamente que nem todas as contribuições são aceitas de primeira (isso faz parte da peneira natural - onde sempre sé olhada a contribuição em si e sua aplicabilidade junto os objetivos macros da ferramenta), mas isso não desmerece sua contribuição… Muito pelo contrário! ;)

    Abraços!
    Jack



  • Faço as minhas palavras do JackL, se for esperar pelos mantenedores, hoje não teríamos o dansguardian, sarg..  etc. etc

    ebrandi,

    se uma dúvida.. vc gasta quanto para ter esse recurso no amazon.. o modelo deles de cobrança deles é por dominio e conexão.. ai..
    complica.. q pq você escolheu amazon e não por exemplo o dyndns.



  • Ola Freitas,

    Eu era cliente da dyndns e hoje uso amazon pelo fator custo.

    Para poder usar um dominio proprio com o dyndns você precisa assinar o serviço pago de DNS Standard deles, que custa US$ 29,95 por ano, e lhe da direito a 1 dominio com até 75 registros e 600.000 DNS queries por mês, se você precisar de outros dominios e quiser usar a mesma conta para administrá-los vc terá que contratar o plano DynECT Lite 10, que custa US$ 30,00 por mês e que suporta até 10 dominios, servindo no total as mesmas 600.000 queries.

    O modelo da Amazon é mais simples, e como vc paga pelo uso sai muito mais barato.

    Se formos comparar por exemplo com o Dynect Lite 10, o custo na amazon seria de US$ 5,50 por mês (US$ 0,50 por dominio hospedado + US$ 0,50 para 1.000.000 de queries).

    Para hospedar um unico dominio, o custo comparativo com a dyndns é de US$ 1,00 por mês para entregar quase o dobro de queries.

    Espero ter esclarecido sua duvida

    []s Edson



  • Bom, como sou brasileiro e os brasileiros são teimosos não desistem nunca ::) , eu refiz a implementação do suporte ao Route 53 no pfsense tentando seguir as orientações do jimp, ermal e cmb.

    Espero que desta vez esteja de acordo com o que eles acham que é o correto :p

    Não criei um patch desta vez, criei apenas o pull request https://github.com/bsdperimeter/pfsense/pull/71

    La no meu fork do projeto tem 2 branchs, uma com a implementação anterior (que na minha opinião ficou mais clean) e uma outra com a implementação usando a infraestrutura do serviço de dyndns.

    []'s Edson



  • @ebrandi:

    Bom, como sou brasileiro e os brasileiros são teimosos não desistem nunca ::) , eu refiz a implementação do suporte ao Route 53 no pfsense tentando seguir as orientações do jimp, ermal e cmb.

    Espero que desta vez esteja de acordo com o que eles acham que é o correto :p

    Não criei um patch desta vez, criei apenas o pull request https://github.com/bsdperimeter/pfsense/pull/71

    La no meu fork do projeto tem 2 branchs, uma com a implementação anterior (que na minha opinião ficou mais clean) e uma outra com a implementação usando a infraestrutura do serviço de dyndns.

    []'s Edson

    Yah! Manda bala, Edson.  ;D
    Mais um Brazuca fazendo diferença! Kudos!



  • Meu pull request foi aceito e a ultima versão do meu patch foi incorporada ontem ao código do projeto :)
    Agora fica bem mais fácil pra quem quer usar esse serviço.

    Edson



  • Excelente Edson! :)

    Você publicou na 2.0 ou na 2.1?



  • Foi aplicado no branch Master, que se não me engano será empacotada como a versão 2.1.

    Edson



  • @ebrandi:

    Foi aplicado no branch Master, que se não me engano será empacotada como a versão 2.1.

    Congratulations! ;)


Log in to reply