Servidor DHCP, Instalar e Configurar

Dando continuidade ao tutorial anterior, vamos agora ver como configurar o Raspberry com o serviço de DHCP.

De forma a contextualizar o tutorial, vamos em primeiro ver alguns aspectos teóricos do protocolo DHCP.

Este protocolo permite uma configuração automática de IP's nos mais diversos equipamentos de rede. Pode  e deve ser usado ao nível particular ou empresarial. A sua utilidade vai crescendo à medida que a rede cresce, pois cada vez mais os mais comuns equipamentos estão ligados à rede.

Todos nós utilizamos o protocolo DHCP no nosso dia a dia sem nos apercebemos disso. Por exemplo, sempre que nos ligamos a uma rede wireless é nos atribuído um endereço IP automaticamente, quem o faz é o serviço DHCP. Portanto a sua utilização é transparente para os utilizadores.

O servidor DHCP irá responder a pedidos de configuração vindos da rede.
Ele reponde a esse pedidos com (entre outros):
  • IP atribuído
  • Máscara de rede
  • Gateway predefinido (ip do router)
  • Servidores DNS Primário e Secundário
A esta informação dá-se o nome de Lease que é obtida a partir do servidor DHCP.
Para realizar esta atribuição o servidor utiliza uma Pool de endereços IP disponíveis para este efeito.
Os IP's atribuídos a partir da Pool são dinâmicos, isto significa que um mesmo computador poderá receber IP's diferentes em dias diferentes, daí o termo dinâmico.
Mas é possível configurar o servidor DHCP para atribuir sempre o mesmo IP a um determinado equipamento de rede (neste caso o conceito de Lease não se aplica).

O que é uma Lease ? Não é nada mais do que uma reserva. E porquê uma reserva ? Para garantir que um determinado IP não é atribuído simultaneamente a vários equipamentos de rede. Portanto a reserva é feita por um determinado período de tempo, podendo ser consecutivamente renovada de forma automática e  transparente para o utilizador. 

Quando um equipamento se desliga da rede a Lease continua atribuída até o período de validade terminar, libertando desta forma o IP para outro equipamento (note-se que o serviço de DHCP não tem mecanismo de verificação de actividade por parte dos clientes, logo não "adivinha" quando um cliente se desliga).

Como se processa o mecanismo de atribuição de IP's ?
Existem 4 fases :
  • - Cliente DHCP envia para a rede (em modo broadcast) uma mensagem do tipo DHCP Discover. Esta mensagem é enviada para o porto de destino 67 com ip de destino 255.255.255.255 (broadcast). Como o cliente ainda não tem ip definido, o IP de origem vai preenchido com 0.0.0.0  e o pedido é recebido por um ou mais servidores DHCP da rede.

  • - O ou os servidores DHCP respondem com uma mensagem do tipo DHCP Offer enviada para o porto 68 do cliente. Esta mensagem contém (entre outras informações) o endereço IP oferecido (daí o termo Offer), a máscara de rede, o endereço IP do servidor. O servidor DHCP após o envio desta mensagem faz uma reserva da Lease oferecida. Esta reserva dura até que o cliente aceite, rejeite ou  exista uma falta de resposta ao DHCP Offer.

  • - O cliente após receber o DHCP Offer vindo do servidor ou servidores, escolhe um e responde com uma mensagem do tipo DHCP Request. Esta resposta também é enviada em modo broadcast e contém o IP atribuído ao cliente e o IP do servidor DHCP escolhido, como é enviada em modo Broadcast os restantes servidores DHCP também a recebem, podendo então libertar a reserva provisória.

  • - O servidor DHCP escolhido pelo cliente responde com uma mensagem do tipo DHCP Acknowledge (informando que tomou conhecimento), o cliente pode então começar a usar a configuração IP atribuída pelo servidor.    

Não é muito usual existir mais do que um servidor DHCP numa rede, mas tecnicamente é possível, porquê ? Para garantir redundância neste serviço.

A Lease é atribuída por determinado tempo, cabendo ao cliente efectuar uma renovação da mesma, sendo que normalmente esta é feita a meio do período do tempo. O processo de renovação da Lease dá origem aos quatro passos explicados anteriormente.

Agora que os aspectos teóricos mais relevante estão explicados, vamos então dar início ao processo de instalação e configuração do servidor DHCP no Raspberry.

Em primeiro devemos executar um

apt-get update

e de seguida um

apt-get install isc-dhcp-server

Em linux todos os serviços tem um daemon neste caso com o nome de dhcpd

O serviço é configurado no ficheiro de configuração dhcpd.conf
Vamos então editar o mesmo usando o pico, nano ou vi para os mais aventureiros.

Aconselho efectuarem uma cópia deste ficheiro, poderá dar jeito caso façam asneira e queiram voltar atrás.

cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak

Vamos então editar o ficheiro de configuração:

pico /etc/dhcp/dhcpd.conf

# Para que o servidor DHCP informe o servidor DNS de uma 
# nova máquina (Lease) na rede. 
# Desta forma o servidor DNS 
# adiciona uma nova entrada ao domínio com o 
# nome da maquina que recebeu a Lease. 
# Fica a none pois não queremos para já este
# tipo de configuração 

ddns-update-style none;

# O domínio onde os clientes DHCP vão funcionar
# Os dois servidores DNS da minha rede, 
# aqui poderiam colocar
# por exemplo o 8.8.8.8 e 8.8.4.4 
# que são os servidores DNS da google

option domain-name "gondor.pt";
option domain-name-servers 192.168.100.253, 192.168.100.246;

# Os temporizadores utilizados 
# por defeito pelo serviço DHCP

default-lease-time 600;
max-lease-time 7200;

# Para tornar este servidor DHCP como
# o "principal" da rede, caso existam mais

authoritative;

# Configuração de destino dos logs

log-facility local7;


# A declaração da sub-rede, neste caso 
# vamos definir uma pool de endereços
# dinâmicos entre o ip 192.168.100.50

# e o ip 192.168.100.70  



subnet 192.168.100.0 netmask 255.255.255.0 {
  range 192.168.100.50 192.168.100.70;
  # o IP do router
  option routers 192.168.100.254;
  # Embora optional, o ip de broadcast
  option broadcast-address 192.168.100.255;
}

# Nesta secção podemos configurar IP reservados
# para determinados equipamentos, fica
# o exemplo para a minha impressora receber 
# sempre o mesmo IP, pode ser aplicado
# a qualquer equipamento desde que se saiba
# previamente qual o MAC Address, que é 
# necessário para fazer o mapeamento MAP -> IP

host brother-7055W {
  hardware ethernet 00:80:92:XX:XX:XX;
  fixed-address 192.168.100.10;
}



Depois de gravar o ficheiro, e antes de reiniciar o serviço de DHCP para que assuma as configurações do ficheiro dhcpd.conf, devemos ir ao router e retirar a configuração de DHCP para que este não responda a pedidos DHCP.

Acedendo ao router MEO devem ir a Início > Rede doméstica > Interfaces > LocalNetwork
mudar para configuração e aí retirar o visto no servidor DHCPv4 aplicar e esperar que o router reinicie.

Agora estamos em condições de reiniciar o serviço de DHCP no Raspberry usando o comando

service isc-dhcp-server restart

Ou caso seja o primeiro start

service isc-dhcp-server start

Para verificar o correcto funcionamento do serviço, poderão executar o comando netstat  e ver que  o Raspberry tem um serviço à escuta no porto UDP 67 

netstat -an  | grep 67


Podem também verificar se o daemon está a correr, verificando o processo em memória


ps aux | grep dhcpd

Podem ainda "deitar um olho" ao syslog e ver se o raspberry está a receber e responder a pedidos DHCP
usando o comando 

tail -f /var/log/syslog

A análise deste log é imperativa para verem o servidor a trocar mensagens com os clientes, desta forma poderão entender melhor o funcionamento das quatro fases do protocolo DHCP

Podem ainda analisar o ficheiro onde o servidor guarda a informação sobre as Leases atribuídas

usando o comando

cat /var/lib/dhcp/dhcpd.leases

De notar que este tutorial foi realizado num Raspberry com SO Raspbian mas pode ser aplicado em outras distribuições de Linux.

Reconfigurar o endereçamento IP em nossa casa

Este tutorial serve de rampa de lançamento para futuros tutoriais onde irei ensinar a configurar um servidor DHCP  e uma VPN usando OpenVPN no Raspberry.

Antes de passar ao tutorial propriamente dito, existem alguns pressupostos a ter em conta. 
A minha LAN em casa tem o endereço de rede 192.168.100.0/24

Esta rede, tendo 24 bits de tamanho, tem as seguintes características:

  • Endereço de rede - 192.168.100.0
  • Primeiro IP utilizável - 192.168.100.1
  • Último IP utilizável - 192.168.100.254
  • Endereço de Broadcast - 192.168.100.255
  • Máscara de rede em dot notation - 255.255.255.0

Porquê usar a rede 192.168.100.0/24 e não a rede 192.168.1.0/24 fornecida pelo router da MEO por DHCP ? 

Porque eu utilizo uma VPN layer 3 para me ligar à rede de casa, sabendo que  a maioria das redes privadas (digo a maioria e não todas) utilizam por defeito a rede 192.168.1.0/24, e, como quero rotear tráfego pela VPN entre a rede remota (local onde estou com o portátil ou Android), seria impossível faze-lo de uma rede de origem com o mesmo endereçamento IP da rede de destino.

Daí ter escolhido colocar no terceiro octeto o endereço 100 em vez do 1 (vulgarmente usado)

Se no futuro quiserem configurar uma VPN Layer 3 para casa, torna-se essencial mudar o endereçamento da vossa LAN e é para isso que serve este tutorial.

Vou explicar como o fazer para clientes MEO, mas com outros operadores será igualmente fácil guiando-se por este exemplo.

Em primeiro vamos aceder ao router via HTTP, no meu caso indo a http://192.168.100.254, (para quem não modificou as config's por defeito do router, deverá aceder a http://192.168.1.254)

Não sabes qual é o ip do router?  Como fazer para identifica-lo ?

Como sou old school  gosto de ir pela linha de comando usando o CMD, aí devem executar o comando IPCONFIG

Procurem o adaptador ethernet Ligação de área local (a placa de rede cableada) ou Placa de rede local em fios Ligação de rede sem fios  (placa de rede wireless) e conforme estejam a usar uma ou outra, procurem a linha Gateway predefinido aí está o IP do vosso router.

Para quem não gosta de fundos pretos com linhas brancas, sempre pode ir às propriedades da placa de rede no centro de rede e partilha, na ligação de rede pretendida, tem lá o separador Detalhes que dá exactamente a mesma informação.

Agora que o IP do router está identificado, vamos aceder via HTTP.

Usem o user sumeo com password bfd,10ng para aceder às configurações. O modelo do meu router é um Thomson TG784n, um router que enerva pela sua lentidão na navegação pelos menus.

Por incrível que pareça, aconselho a usar o Internet Explorer, a navegação pelos menus de configuração torna-se mais rápida com este candidato a browser. Costumo dizer que é bom para fazer download do Chrome ou Firefox.

Após login feito, acedam à opção Rede Doméstica -> Interfaces do lado esquerdo clicar em LocalNetwork e finalmente em configurar na parte superior direita da página




Reparem na secção Endereços IP

Verifiquem que no meu caso existem 3 endereços IP do tipo estático, pois bem o 10.0.0.138/24 e o 192.168.1.254/24 estão configurados por defeito no router.

O que eu fiz foi acrescentar um terceiro IP ao router (no meu caso) o 192.168.100.254/24 desta forma o router passa a funcionar em três domínios de broadcast em simultâneo.

Para acrescentar este terceiro IP preencham as duas caixas na secção adicionar. Na primeira coloquem o IP  e na segunda a máscara de rede em dot notation 192.168.100.254 e 255.255.255.0 respectivamente.

Não apaguem os dois primeiros IP's , dá asneira :-)

De forma a testarem a configuração, podem por exemplo configurar um IP estático da rede 100 no vosso portátil, por exemplo o 192.168.100.1 com máscara 255.255.255.0 gateway 192.168.100.254 e DNS primário 192.168.100.254



Neste momento o PC ou Portátil está configurado com o IP estático 192.168.100.1 já na nova rede.
Podem lançar um ping a 192.168.100.254 e ver se responde ou ir directamente pelo browser a http://192.168.100.254

Se conseguirem, significa que até este ponto está tudo OK.

O que falta fazer ? Mudar as configurações de DHCP do router, para ele deixar de atribuir IP's na rede 192.168.1.0/24 e passar a atribuir IP's na rede 192.168.100.0/24

No router MEO após login feito, acedam à opção Rede Doméstica -> Interfaces do lado esquerdo clicar em LocalNetwork e finalmente em configurar na parte superior direita da página




Escolham um endereço IP de início e final. O router vai atribuir IP's automaticamente usando esta pool.

A máscara de rede 255.255.255.0 o gateway é o próprio router 192.168.100.254 e DNS primário podem colocar também o próprio router ou configurem um servidor para esse efeito.

Caso tenham equipamentos na rede configurados com IP estático na rede antiga, convém não esquecer mudar essas configurações para o novo endereçamento.

Para testar a configuração de DHCP voltem a colocar o endereçamento IP a placa de rede do PC ou portátil de forma a ser obtido dinamicamente, indo novamente aos detalhes da placa de rede, facilmente verificamos se foi recebido um ip dinámico na rede 100 tendo sido atribuído pelo router. O ip do servidor DHCP deverá ser o do router.

Num próximo tutorial vou ensinar a configurar o serviço de DHCP no Raspberry de forma a libertar o router desta tarefa, pois tem poucas opções de configuração.

Servidor DNS Secundário

Vamos então instalar o nosso servidor secundário de DNS, caso o primário falhe, ele assume as querys DNS de domínios para as quais somos SOA.

De notar que no servidor secundário, não se configuram alterações nas zonas (domínios), sempre que houver uma alteração a uma zona, deve ser feita no servidor primário. O secundário de forma automática faz a transferência dessa zona já com as alterações.
Essa transferência é feita usando o protocolo de transporte TCP com o Porto 53.

Quando um cliente faz uma query DNS a um servidor DNS seja primário ou secundário, o protocolo de transporte é o UDP ao porto de destino 53

Vejam uma captura feita com wireshark a uma query DNS ao A Record de  www.google.com feita pelo portátil ao meu DNS primário (Gandalf)
O Porto de destino do pacote é ao porto UDP 53


e resposta do Gandalf com origem UDP na porta 53


Um servidor DNS secundário utiliza o Porto TCP 53 para receber as transferências de zonas iniciadas pelo DNS primário, por isso é que um servidor DNS fica à escuta de pedidos ao porto 53 tanto em UDP como em TCP. usa UDP para responder a querys e TCP para realizar transferências de zonas.


(leiam as wikis TCP e UDP para entender o modo de funcionamento dos dois protocolos de transporte)

Podemos dar então início ao processo de instalação do servidor secundário DNS:

O primeiro passo passa pelo: apt-get update para actualizar o repositório de software no raspberry
Depois a instalação do bind9 e dnsutils :
 apt-get install bind9 dnsutils 

Após a instalação deverão ver algo semelhante com isto



O utilizador bind é criado e o serviço e invocado por este mesmo utilizador.

Façam um ps -aux | grep bind e verifiquem quem é o user que invovou o serviço bind9

Recapitulando, o ns.gondor.pt com ip 192.168.100.253 é o servidor primário
e o ns2.gondor.pt com ip 192.168.100.246 será o servidor secundário para a zona se repararem no tutorial de configuração do servidor primário, eu já tenho lá uma entrada (no ficheiro da zona gondor.pt) para a maquina ns2


vamos então configurar o ficheiro named.conf.local para que este servidor seja DNS secundário do domínio gondor.pt reparem que o type (tipo da zona) está configurado como slave (informa que este servidor é secundário para a zona), mas também é necessário informar qual é o ip do servidor master do domínio


Existem duas formas do servidor secundário ser notificado de uma alteração numa das zonas para a qual é secundário.

  • através de um temporizador temporal em que o secundário vai ao primário verificar alterações
  • ou configurando o primário para notificar o secundário sempre que há uma alteração numa zona
Eu prefiro o segundo método.
Para o configurar, temos duas formas acrescentamos a linha notify yes;
  • ou na configuração de cada zona,  
  • ou configuramos por defeito para todas as zonas editando o ficheiro /etc/bind/named.conf.options 
O Servidor primário necessita saber o IP do servidor secundário a notifivcar em caso de alteração de uma zona. Esta configuração também pode ser feita por defeito no ficheiro /etc/bind/named.conf.options acrescentando :

also-notify { 192.168.100.246; };
com o ip do saruman o meu servidor secundário

Ou colocando a informação em cada zona (imaginem que tem vários servidores secundários, desta forma podem especificar por zona qual deles querem notificar para cada zona específica)

então vamos ao servidor primário acrescentar (no meu caso ao gandalf) as alterações às duas zonas criadas no tutorial anterior, a zona gondor.pr e a zona com a resolução inversa no ficheiro /etc/bind/named.conf.local




A próxima configuração serve para garantir que o servidor secundário aceite as notificações recebidas do primário.

editando o ficheiros /etc/bind/named.conf.local acerca das zonas para as quais será secundário, bem como o ip do servidor primário dessas mesmas zonas:


Reparem no DNS secundário, que o ficheiro após a transferência da zona, ficará guardado num directório diferente do que está no servidor primário. Isto tem a ver com questões de permissões de escrita, do user bind, é recomendável que as zonas transferidas sejam escritas na pasta /var/cache/bind
Há quem recomende que no servidor primário se use esta mesma pasta para gravar os ficheiros com as definições de cada zona.



Depois de tudo configurado, basta testar, a melhor forma é ir ao DNS primário e incrementar o número de série de uma das zonas, reiniciar o serviço bind e verificar no secundário se foi notificado e se a transferência foi bem sucedida. 

A verificação poder ser feita por exemplo verificando os log's no DNS secundário:



Outra forma de verificação é com o comando dig lançar uma query tanto ao DNS primário como secundário e  verificar se os números de série da zona coincidem  usando o comando:
  • dig @192.168.100.246 -t SOA gondor.pt  (para questionar o dns secundário)
  • dig @192.168.100.253 -t SOA gondor.pt  (para questionar o dns primário)
Aqui vai o output de ambos os comandos:



Ainda podem no secundário verificar o conteúdo da pasta /var/cache/bind e verão que tem uma cópia dos ficheiros das zonas transferidas.

Instalação de Raspbian no Raspberry PI

Ora bem, para dar continuidade aos tutoriais, decidi colocar um segundo Rpi na minha rede, de forma a poder criar tutoriais sobre serviços secundários, caso os serviços primários falhem.

Ao projectar uma rede, temos que pensar sempre no pior cenário. Uma rede deve ser redundante, essa redundância pode ter vários aspectos, por exemplo, redundância de serviços, redundância de links de dados  entre Switchs e Routers ou entre Routers, redundância de fontes de alimentação nos servidores, redundância de quadros eléctricos que alimentam as fontes de alimentação, redundância de acesso à Internet, etc etc.
É verdade que os tipos (da massa €€€) dos departamentos financeiros das empresas, não gostam muito de ouvir falar nisto, pois os custos de implementação da rede, aumentam e de que maneira. Mas vejamos, por exemplo uma fabrica que deixe de produzir durante uma manhã, por causa de uma avaria num servidor ou um simples switch, quanto dinheiro pode perder a empresa nessas poucas horas em que a produção para ? Claro é uma questão de fazer contas e tentar convencer os tipos da "massa" das vantagens de uma topologia de rede bem desenhada. 
Sobre este assunto muito haveria para falar e o objectivo deste posto não é esse. 

Vamos então dar inicio ao processo de preparação do novo Rpi

Vamos necessitar claro está de um Rpi, um transformador e um cartão SD.
Relativamente ao SD comprei um Sandisk classe 10 com 16G, ficam mais rápidas a escrita e leitura de dados 


Onde comprar o restante material, não querendo fazer publicidade a ninguém em particular, já comprei 6 Rpi's para mim e colegas e sempre foi na Inmotion e sempre correu tudo bem, dois dias depois o material está em casa, podem encontrar mais barato, mas eu prefiro pagar mais, comprar numa loja Portuguesa e tem um bom atendimento.
Fica por 60€ com Iva. O Rpi, estando ligado 24h por dia consome, mas o consumo é mínimo, comparado com um PC com uma fonte de 350w ou 400w, que vai ter um consumo que varia com a quantidade que componentes ligados na motherboard, pelo que tenho lido na web o consumo do Rpi ligado à rede, anda na ordem dos 1,88W uma diferença abismal comparando com o consumo de um PC "normal".


fazer download da ultima versão do Raspian, indo ao site oficial, escolher a versão Raspbian Debian Wheezy em  http://www.raspberrypi.org/downloads/




Após o download, convém verificar de o SHA-1 do ficheiro, de forma a garantir que o download correu bem e o ficheiro não está corrompido.
Tenho usado a seguinte ferramenta para fazer este tipo de verificações:

Reparem que o SHA-1 bate certo com o que está no site o que garante que o download correu bem.


Agora vamos copiar a imagem para o cartão de memória.
Para tal uso a ferramenta http://sourceforge.net/projects/win32diskimager/ que permite gravar uma imagem para o cartão, a ferramenta permite também fazer uma imagem do conteúdo do cartão SD para o PC (muito útil para backups depois do Raspian estar completamente instalado e com os serviços funcionais)

Depois de instalado o Win32DiskImager deve ser executado com privilégios de administrador escolhemos a imagem do raspian, a drive onde está o SD e a opção write


Caso queiramos realizar um backup do SD, então escolhemos a drive do SD, escolhemos a pasta de destino, o nome da imagem de backup e a opção read.

Próximo passo é ligar o equipamento, tem duas hipóteses, 
  • ou ligam um teclado usb e um monitor ao Rpi para fazer as configs iniciais, 
  • ou fazem como eu fiz, no Gandalf (servidor DHCP da minha rede) fiz o seguinte comando
    • sudo tail -f /var/log/syslog para ver qual o ip atribuído ao Rpi acabo de ligar à rede

O IP oferecido pelo Gandalf foi o 192.168.100.246

A partir daqui é aceder ao novo Rpi via putty com protocolo SSH
Login: pi
Password: raspberry


Um cartão SD tem um tempo de vida limitado ao numero de escritas/leituras efectuadas no mesmo, por isso um dos procedimentos que faço para aumentar a longevidade do SD é desabilitar o swap no cartão.
Mas o que é o Swap ? é uma forma de usar parte do SD como memória volátil, para aumentar o tamanho da memória RAM, é verdade que o Rpi só tem 512Mg de RAM, mas para o serviço que vai ter, chega e sobra !
Para tal :


De seguida um rebootzinho não lhe faz mal nenhum ... :-)


Como podem reparar o login tem um notice a avisar que o Rpi não está totalmente configurado
vamos executar comando sudo raspi-config

se repararem no output do comando df -kh verão que a temos uma partição montada em / que tem apenas 3Gb de tamalho, ora o cartão é de 16Gb


com o raspi-config vamos redimensionar a partição deforma a usar todo o espaço disponível no SD


é necessário um reboot após o expand
vejam a diferença

De seguida vamos aplicar a opção 7 (Overclock) pois não queremos preguiçosos cá em casa a trabalhar a 700Mhz
tenho lido em alguns forums que até aos 950 Mhz os Rpi têm-se demonstrado estáveis. Não vou abusar e escolher a opção Medium, 900Mhz, a garantia do fabricante não se perde ao fazer overclock.
Depois do reboot podemos fazer o comando vcgencmd get_config arm_freq para verificar se ficou aplicada a opção escolhida.

e por ultimo vamos às opção 4 defenir as opções regionais para o nosso Rpi escolham pt_PT.UTF-8 UTF-8  na opção de Locale, as restantes opções são intuitivas.

Relativamente ao hostname escolhido, será saruman para mudar o hostname do Rpi basta seguir este tutorial

E finalmente o que falta fazer ? eu costumo dizer aos meus alunos que um servidor não deve receber IP por DHCP pois se o serviço DHCP falha, o servidor fica inacessível, um servidor deve ter um IP fixo configurado.

o IP  192.168.100.246 era deste Rpi quando estava com XBMC, vou reaproveitar este IP, mas retirar a sua entrada fixa no serviço DHCP do Gandalf.

como reconfigurar o endereço IP para estático ?
editando o ficheiro /etc/network/interfaces

Antes:


Depois:


Finalmente editar o ficheiro /etc/resolv.conf para usar como DNS primário o Gandalf


Vamos fazer um ultimo reboot para ver se tudo corre como planeado.

Voltar a fazer putty e mudar a password do user pi para uma que não a por defeito.

E penso que está tudo ... se tiverem dúvidas, vão perguntando !







Chromecast ou XBMC no Raspberry ?


Há duas semanas chegou cá a casa o famoso Chromecast da Google. 

Tendo em conta o uso que eu dava ao XBMC, penso que para a utilização que lhe dava, o Chromecast supera o XBMC, volto a repetir, para a utilização que lhe dava !

O XBMC no raspberry na minha opinião é um pouco lento, pelo menos a versão anterior (não me dei ao trabalho de fazer upgrade para a mais recente).

No XBMC instalei o famoso add-on da minha casa digital que traz montes de fontes de streaming.
A qualidade de alguns dos streams disponíveis deixa muito a desejar, e as paragens eram constantes (imaginam do que estou a falar ...)  e posso garantir que a culpa não é da minha net, pois tenho fibra a 100Mb, e garanto que o download bate quase sempre entre os 90/97 Mbps, neste aspecto tenho que dar a mão à palmatória, o serviço Fibra da MEO é excelente.



Neste teste de velocidade tinha vários equipamentos a aceder à net, e não apenas o meu portátil e mesmo assim foi aos 88 Mbps.




Pois bem, o XBMC foi de vela, vou aproveitar o segundo Raspberry para instalar Raspbian e usar para instalar/configurar/testar mais tutoriais de serviços de rede.

O Chromecast surprendeu-me pela positiva, é muito fácil de instalar, e muito cómodo de usar. um gaijo está sentadinho no sofá com o Nexus 4 na mão a transmitir youtube, fotos do Google+, Redbull TV, Plex na TV.

A tal aplicação para android que começa por "W" e acaba em "A" ? pois também faz cast para o Chomecast o que poderá ser interessante para quem não se importa de cometer ilegalidades (não é o meu caso) Filmes ? só no Cinena, fica barato, imaginem uma família de 3 pessoas, pipocas e bebidas dá uma média de 25€ é barato não é ... :-P

A partir do PC é possível adicionar a extensão Google Cast ao browser Chrome e transmitir video para o Chromecast, inclusivamente filmes que estejam no PC com a extensão "Videostream for Google Chromecast" (existem outras que não testei).

O mais interessante é que o streaming passa direto pelo Chromecast, apenas definimos o que queremos ver, podendo continuar a usar o smartphone ou tablet para fazer outras coisas ...

"Cada cabeça sua sentença" a minha está dada :-)

A Google vende o equipamento para Portugal pela Play Store, o preço são 38€ com os portes. Enviam a partir de Dublin, demorou 10 dias a chegar.


Servidor DNS Primário

Antes de mais, para que serve o DNS (Domain Name Server). Sem este serviço a Internet simplesmente não funcionaria. O DNS permite disponibilizar nomes e endereços de maquinas e serviços de rede.
Muito resumidamente o DNS traduz um nome num IP e o Reverse DNS faz o contrario, verifica se aquele IP está realmente associado a determinado nome ( técnica muito usada para os servidores de mail MTA se protegerem contra spam)

Qualquer ativo de rede deve ser configurado como um cliente de servidor DNS, por exemplo a google disponibiliza este serviço com o seu DNS primário em 8.8.8.8 e secundário em 8.8.4.4

Convém saber que o DNS funciona de modo hierárquico distribuído. Ao ser distribuído, além de garantir uma forte redundância, permite que a delegação de gestão de domínios seja feita por entidades responsáveis por cada domínio. Como o serviço é distribuído, a informação de cada domínio fica disponível globalmente na Internet.

O topo da pirâmide é constituído por 13 servidores denominados de Root Servers que estão no topo, se quiserem ler um pouco mais sobre isto consultem a wiki

Abaixo dos ROOT Servers estão os TLD (Top Level Domains) por exemplo .com, .gov, .pt, .fr , etc


Neste tutorial vou exemplicar como instalar e configurar um servidor DNS. Neste exemplo vou configurar apenas um domínio (Zona), mas um servidor DNS pode alojar vários domínios.

Cá em casa a rede tem muitas máquinas, cada uma terá o seu nome resolvido em IP recorrendo ao serviço de DNS.

O domínio escolhido é gondor.pt, por exemplo o meu portatil terá o nome sauron.gondor.pt associado ao ip 192.168.100.1

Antes de instalar qualquer aplicação, devemos fazer o update à source list de pacotes passiveis de serem instalados via apt-get

 apt-get update

De seguida podemos instalar os pacotes bind9 e dnsutils (para obter a ferramenta dig)

apt-get  install bind9 dnsutils

Em primeiro devemos criar a zona gondor.pt 

pico /etc/bind/named.conf.local



Repare que a configuração tem duas zonas, gondor.pt e as definições de reverse DNS, 

DNS reverso (ou resolução inversa) é um mecanismo que permite verificar se um computador que diz ser um servidor específico, é ou não quem diz ser, isto é, permite verificar se alguém se uma maquina se está a fazer passar por outra. Quando mails de spam, vírus e afins são enviados na internet, eles não tendem a usar seus nomes reais e e-mails. Para reduzir a quantidade de spam, muitos servidores de correio usam o DNS reverso para confirmar que o servidor (MTA) que está a entregar o email é o genuíno.

De seguida vamos configurar a opção de forwaders, para que serve ? visto que agora temos o nosso próprio servidor de DNS em casa, ele só serve para ser SOA do domínio gondor.pt (que não funciona na internet), ora e os restantes domínios ? neste caso quando receber uma query de DNS à qual o nosso servidor DNS não sabe responder, vai questionar o servidor DNS configurado no forwarders (o endereço ip 8.8.8.8 é da google)

pico /etc/bind/named.conf.options



Vamos então dar inicio à configuração da zona gondor.pt

Por opção prefiro criar uma pasta zones dentro de /etc/bind

sudo mkdir /etc/bind/zones

Preparação do ficheiro de configuração da zona gondor.pt

sudo  pico /etc/bind/zones/gondor.pt.db



Alguns aspectos a ter em consideração na preparação deste ficheiro:

  • o serial, no meu caso gosto de usar ano-mês-dia-versãododia, usando esta técnica, garantimos que sempre que o ficheiro for alterado, irá ficar com um numero superior, isto é importante para a propagação da zona, o numero de série serve para os que os servidores secundários da zona, saibam que houve uma alteração na zona (num proximo post irei explicar como configurar um servidor DNS secundário)
  • Resource records
    • SOA - Start of Autority - Identificação de cabeçalhos de zona
    • NS - Name Server - Definição de servidores DNS (master ou slave)
    • PTR - Pointer to name - Associação de um endereço a um nome (mapeamento inverso)
    • MX - Mail Exchanger - Definição de servidores de correio electrónico
    • A - Address - Associação de um nome a um endereço IPv4
    • AAAA - IPv6 address - Associação de um nome a um endereço IPv6
    • CNAME - Canonical Name - Definição de nomes alternativos para servidores
    • TXT - Text information - Definição de informação textual sobre o domínio
    • HINFO - Host Information - Definição de informação sobre um servidor
Após editar a zona, podemos fazer o seguinte comando para verificar a sintaxe do ficheiro antes de reiniciar o serviço propriamente dito:



Agora vamos focar-nos na resolução inversa do domínio gondor.pt criando o ficheiro rev.100.168.192.in-addr.arpa

atenção que a minha LAN é 192.168.100.0/24 devem mudar o terceiro octeto para ficar de acordo com a vossa rede.
por exemplo, se a rede onde o servidor DNS está inserido tivesse o endereço de rede 192.168.1.0/24, então o nome do ficheiro seria  rev.1.168.192.in-addr.arpa

De notar que como estamos num ambiente laboratorial, o todo o endereçamento usado é privado, o que não faz sentido num servidor que hospeda configurações de domínios na Internet.

Abaixo fica o exemplo do ficheiro da resolução inversa do meu domínio:



Vamos então iniciar o serviço:


Ao mesmo tempo em outra janela do putty podemos analisar os logs do arranque do serviço :


Podemos ver que tanto a zona gondor.pt como a zona de resolução inversa da lan 192.168.100 "carregaram" sem erros

De seguida vamos alterar o ficheiro /etc/resolv.conf para passar a usar o nosso servidor DNS para resolução de nomes em ip's


Falta fazermos alguns testes para verificar o correcto funcionamento da resolução de nomes

Exemplo a ns.gondor.pt


Por exemplo, verificar o MX record para o domínio


Verificar se o nosso servidor DNS tem o forwarders bem configurado, neste caso fazendo o dig a www.google.com que é um domínio que não está configurado no nosso servidor


Outra forma de teste recorrendo ao comando host


Como testar se a resolução inversa está bem configurada ?
usando a opção -x ao ip ex: dig -x 192.168.100.252 como podem ver a resposta PTR aponta o IP para o nome nazgul.gondor.pt




Penso que não me esqueci de nada ... num próximo post irei ensinar a configurar o servidor secundário de DNS para o caso de o primário falhar.