segunda-feira, 9 de fevereiro de 2009

Frase do dia

"Fly like a butterfly and sting like a bee!" - Muhammad Ali

quinta-feira, 5 de fevereiro de 2009

Ruindows - Migrando DNS

Bom antes de tudo, eu não gosto de windows. Não porque ele é pago, mas sim porque ele é ruim. (let the flamewar begins!). Opiniões a parte, não sou contra pagar por um software, mas não gosto de softwares onde você não tem liberdade. Opinião dita, vamos ao que interessa.

No ambiente em que trabalho tenho servidores DNS Windows 2003 e Linux, com um pouco mais de 1.000 zonas e replicação para tudo que é lado. Graças a virtualização, fizemos algumas mudanças em nosso ambiente, que incluia adicionar um novo servidor Windows de DNS (eca!). Quem já usou servidor DNS em Windows sabe como é que é criar zonas de DNS.
Então imagine o cenário (um pouco resumido e desconsiderando algumas replicações):
  1. Servidor A (windows) DNS é o master e irá virar slave
  2. Servidor B (windows) é slave
  3. Servidor C (windows) é o novo servidor e será o master
  4. Servidor D,E,F (Linux) continuarão como slave.
Em linux o trabalho é fácil, um comando de sed e todas as zonas apontarão para o novo servidor master. DNS reload e um abraço, vou pra casa dormir.
Em windows, você vai ter que criar zona por zona do servidor C, dizer para quem ele pode replicar, depois ir em cada zona do B, alterar o servidor master e, por fim, ir em cada zona do A, dizer que é slave e apontar para o master. Fazendo uma conta simples seriam quase 5.000 edições de zonas de DNS, isso porque eu não considerei exportação e importação dos dados das zonas.

Motivação: apesar de não gostar de windows, os sys admins windows são meus amigos e eu gostaria de ajudá-los a ir para casa dormir e econimizar trabalhos braçais e repetitivos, que sempre sai algo errado.

Um pouco (mentira, foi muito) de google e eis a solução:
Existe um script chamado DNSDUMP (após o download renomeie a extensão para cmd) feito pelo Dean Wells. O script é bem simples e o objetivo é você exportar todas as suas zonas de DNS para uma pasta no servidor, isso foi feito no servidor A.

Feito isso, copiamos essa pasta para o servidor C, rodamos o dnsdump para ele importar as zonas e um bom tempo já foi economizado.

Precisaríamos só fazer as configurações na mão mas, novamente, fiquei com pena dos meus amigos e vamos lá.
Você precisa instalar o "Windows Support Tools", vem no CD do windows.
Nele vem um arquivo chamado dnscmd.exe, ele vai fazer você chegar em casa mais cedo.
O help dele é muito simples e vou colocar alguns exemplos de comandos.

Fazer uma zona primária virar secundário e definir o ip do master:
dnscmd /ZoneResetType dominio.com.br /secondary xxx.xxx.xxx.xxx

Fazer uma zona secundário virar primária:
dnscmd /ZoneResetType dominio.com.br /primary

Definir quais servidores podem receber transferência de zona:
dnscmd /ZoneResetSecondaries dominio.com.br /SecureList xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy

Eu não sei fazer script em windows, então para ele varrer todos os domínios eu fiz um shell em linux que gerou o .bat com os comandos.
Só funciona em windows 2000 e 2003 e pode ser usado para migrar de um para o outro.

Boa sorte e se possível tenha todos os servidores em Linux :)
My 2 cents ;)