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):
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.
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
Aconselho efectuarem uma cópia deste ficheiro, poderá dar jeito caso façam asneira e queiram voltar atrás.
Vamos então editar o ficheiro de configuração:
ddns-update-style none;
authoritative;
log-facility local7;
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.
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.
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.
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
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
# 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
# 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
# aqui poderiam colocar
# por exemplo o 8.8.8.8 e 8.8.4.4
# que são os servidores DNS da google
# 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;
# 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
# 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
# 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
# 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 é
# 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
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.