Com o aumento de número de hosts nas redes, precisamos ter uma uma maneira mais simplificada e eficaz de realizar a atribuição dos endereços IP aos mesmos para que possam se comunicar. O DHCP (Dynamic Host Configuration Protocol) é um protocolo de rede de nível de aplicação que tem por objetivo fornecer automaticamente informações de endereçamento de rede, como endereço IP, máscara de sub-rede, gateway padrão, servidores de nome (DNS) e outras informações ao host que estiver sobre a autoridade do servidor executando a aplicação do DHCP.
Mão a Obra. Este tutorial foi desenvolvido com o objetivo de automatização do processo de instalação/configuração de um Servidor DHCP em uma rede local.
O primeiro passo é colocar um endereço IP na interface de rede do servidor, lembrando que este servidor será o Gateway da rede, portanto ele deve receber o primeiro ou o ultimo endereço IP válido desta rede, estando dentro de uma faixa reservada de IP. No caso usaremos o primeiro IP valido. execute o seguite comando:
root@dhcp:~# ifconfig eth0 192.168.0.1/24
Onde eth0 é a interface de rede do computador, 192.168.0.1 é o IP, e /24 é a mascara de sub-rede desta rede.
Após configurar a interface de rede crie um arquivo usando o seguinte comando:
root@dhcp:~# touch dhcp.sh
Edite o arquivo usando um editor de texto (por exemplo o nano), copie e cole o script a baixo e salve.
root@dhcp:~# nano dhcp.sh
#!/bin/bash
clear
echo "------------------------------
Servidor DHCP
1- Instalar DHCP
2- Configurar DHCP
-------------------------------"
read serv
if [ $serv -eq 1 ] ; then
clear
echo "----------------------------------------
Configurando Repositorio
1- repositorio interno do SENAI.
2- repositorio externo do SENAI.
----------------------------------------"
read rep
if [ $rep -eq 1 ] ; then
echo "#Repositorio Interno SENAI
#=========================
deb https://10.1.72.9:3142/apt-cacher/ftp.br.debian.org/debian/ squeeze main contrib non-free" > /etc/apt/sources.list
elif [ $rep -eq 2 ] ; then
echo "#Repositorio Externo SENAI
#=========================
deb ftp://ftp.br.debian.org/debian/ squeeze main contrib non-free" > /etc/apt/sources.list
else
echo "Voce digitou uma opcao invalida!"
exit
fi
apt-get update
apt-get install dhcp3-server
elif [ $serv -eq 2 ] ; then
clear
echo "#############################################################
Configurando servidor DHCP
obs: Configurar o IP do servidor antes de executar o script.
#############################################################"
echo ""
echo "Digite o ip da rede:" ; read rede
echo "Digite a mascara de sub-rede desta rede:" ; read mask
echo "Digite o IP de inicio de distribuicao:" ; read ipin
echo "Digite o ip de final da distribuicao:" ; read ipfi
echo "Digite o nome do servidor de dominio:" ; read dominio
echo "Digite o tempo maximo que o host pode ficar com o ip:" ; read maxip
echo "
ddns-update-style none;
option domain-name "\"$dominio"\";
#option domain-name-servers ns1.example.org, ns2.example.org;
authoritative;
#tempo de duração maxima de IP
default-lease-time 600;
max-lease-time $maxip;
subnet $rede netmask $mask {
}
subnet $rede netmask $mask {
range $ipin $ipfi;
#gateway
# option routers IP DO GATEWAY
#option routers $gateway
}
# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.
#subnet 10.254.239.32 netmask 255.255.255.224 {
# range dynamic-bootp 10.254.239.40 10.254.239.60;
# option broadcast-address 10.254.239.31;
# option routers rtr-239-32-1.example.org;
#}
# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
# range 10.5.5.26 10.5.5.30;
# option domain-name-servers ns1.internal.example.org;
# option domain-name "internal.example.org";
# option routers 10.5.5.1;
# option broadcast-address 10.5.5.31;
# default-lease-time 600;
# max-lease-time 7200;
#}
# Hosts which require special configuration options can be listed in
# host statements. If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.
#host passacaglia {
# hardware ethernet 0:0:c0:5d:bd:95;
# filename "vmunix.passacaglia";
# server-name "toccata.fugue.com";
#}
# Fixed IP addresses can also be specified for hosts. These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP. Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
# hardware ethernet 08:00:07:26:c0:a5;
# fixed-address fantasia.fugue.com;
#}
# You can declare a class of clients and then do address allocation
# based on that. The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.
#class "foo" {
# match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
#}
#shared-network 224-29 {
# subnet 10.17.224.0 netmask 255.255.255.0 {
# option routers rtr-224.example.org;
# }
# subnet 10.0.29.0 netmask 255.255.255.0 {
# option routers rtr-29.example.org;
# }
# pool {
# allow members of "foo";
# range 10.17.224.10 10.17.224.250;
# }
# pool {
# deny members of "foo";
# range 10.0.29.10 10.0.29.230;
# }
#}
" > /etc/dhcp/dhcpd.conf
/etc/init.d/isc-dhcp-server restart
else
echo "Voce digitou um numero invalido. Execute este script novamente!"
fi
De permição de escrita usando o seguinte comando:
root@dhcp:~# chmod +x dhcp.sh
Execute o mesmo com o comando a baixo, e siga os passos para a configuração ou instalação.
root@dhcp:~# ./dhcp.sh
Desenvolvido por: Daniel Pedrotti.