Você deverá ter duas placas de rede instaladas no computador, que será o servidor
DHCP.
Todo servidor deve ser configurado para iniciar automaticamente em caso de queda de energia. A configuração deve ser feita acessando-se o Setup do CMOS (o popular BIOS) da placa-mãe.
Geralmente, essa configuração está na aba "Power" ou "Energy" ou "Advanced" ou similar. A opção a ser configurada, geralmente, aparece como "Restore on AC Power Loss" ou similar.
Esta opção deve ser colocada como "Power on". Isto fará com que a máquina seja reiniciada automaticamente. Com essa opção ligada (Power on), a placa-mãe detectará o retorno da energia e ligará a máquina automaticamente colocando o servidor em funcionamento.
1. Instalar o pacote DHCP como root:
# aptitude safe-upgrade
# apt-get update
# aptitude install isc-dhcp-server
Aguarde terminar a instalação. Deverá dar falha: "failed", em vermelho - Isso é normal, uma vez que ainda não configuramos o DHCP.
Antes do próximo passo, você já deverá ter sua subnet (subrede) planejada com seus endereços IPs. O IP da placa de rede que irá servir o DHCP será também, automaticamente, o IP do gateway/compartilhamento da nossa configuração (no caso, a
eth0).
Tecnicamente falando, quando fazemos o compartilhamento, não estamos transformando o
GNU/Linux em um roteador, somente estamos compartilhando os dados de entrada de uma interface de rede com a(s) outra(s).
2. Configure os endereços IPs das placas de rede:
# vim /etc/network/interfaces
Não mexa nas linhas iniciais do arquivo. As configurações abaixo das linhas iniciais devem ficar como está abaixo.
* Lembrando que a placa de rede Onboard nem sempre é a
eth0 e a Offboard nem sempre é a
eth1.
O arquivo abaixo é somente o exemplo da nossa configuração:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The looback network interface
auto lo
iface lo inet loopback
# Primeira interface de rede - offboard
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.2.1
netmask 255.255.255.0
broadcast 192.168.2.255
# Segunda interface de rede - onboard
auto eth1
allow-hotplug eth1
iface eth1 inet dhcp
Salve e saia do arquivo.
Os números de IPs devem estar de acordo com o arquivo
/etc/dhcp/dhcpd.conf, que você mesmo irá configurar mais adiante.
A placa de rede que recebe a Internet é a eth1. Deixei ela com IP dinâmico. Caso queira fixar o IP da placa que recebe a Internet, no caso a eth1, ela deverá ter como gateway, o IP do roteador ADSL ou do roteador da rede.
* Lembrando que, no arquivo
/etc/network/interfaces, você deve acrescentar todas as placas de rede que estiverem instaladas na máquina: eth0, eth1, eth2 e assim por diante.
3. Verifique também o arquivo
/etc/resolv.conf, que deverá estar com um ou dois DNSs adicionados.
Exemplo:
# vim /etc/resolv.conf
Dentro do arquivo deverá ter:
domain xxxxxxxxxxxx
search xxxxxxxxxxxxx
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx
Onde:
- Em "domain" e "search", os xxx são nomes de domínio (se houver);
- Em "nameserver", os xxx são números de IPs de DNS.
Caso não tenha nada no arquivo, acrescente o IP do Gateway (roteador) ou do DNS da rede (se houver). Este arquivo se renova a cada reinicialização da máquina. Se não tiver esse arquivot você deve ciá-lo:
# vim /etc/resolv.conf
E acrescentar, pelo menos, um "nameserver". Na próxima reinicialização ele virá correto.
4. Para configurar o serviço DHCP, devemos alterar somente dois arquivos:
- /etc/default/isc-dhcp-server
- /etc/dhcp/dhcpd.conf
Entre no arquivo com o seu editor de texto favorito, o
Nano, o
Pico, o
Vim, etc. Usarei o Vim como exemplo:
# vim /etc/default/isc-dhcp-server
Na linha onde diz:
INTERFACES=""
Coloque entre as aspas a interface de rede que irá responder pelo DHCP. Exemplo:
INTERFACES="eth0"
Salve e saia do arquivo.
5. Abra o arquivo
/etc/dhcp/dhcp.conf:
# vim /etc/dhcp/dhcpd.conf
Comente as duas linhas que iniciam com "option domain" colocando um "#" na frente.
Procure a linha onde tem escrito:
# authoritative;
E se já não estiver sem, tire o "#" da frente.
Após, procure a linha onde diz:
# This is a very basic subnet declaration
Dê um ENTER colocando uma linha em branco e acrescente (antes leia abaixo a definição das linhas do arquivo):
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.5 192.168.2.125;
option routers 192.168.2.1;
option broadcast-address 192.168.2.255;
option domain-name-servers 192.168.2.2, xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx, 192.168.2.1;
}
deny unknown-clients;
ignore unknown-clients;
group servidores {
use-host-decl-names true;
host dhcp {
hardware ethernet xx:xx:xx:xx:xx:xx;
fixed-address 192.168.2.1;
}
host dns {
hardware ethernet xx:xx:xx:xx:xx:xx;
fixed-address 192.168.2.2;
}
}
group clientes {
use-host-decl-names true;
host maquina01 {
hardware ethernet xx:xx:xx:xx:xx:xx;
fixed-address 192.168.2.5;
}
}
Acrescente tantos quantos hosts forem necessários para você.
Na primeira linha definimos:
- A nossa subrede: 192.168.2.0
- E a máscara dessa subrede: 255.255.255.0
Escolhemos isso dentro das 3 faixas de IPs reservadas para redes internas privadas de acordo com a RFC 1918:
10.0.0.0-10.255.255.255
172.16.0.0-172.31.255.255
192.168.0.0-192.168.255.255
Definição:
- Na linha "range", definimos a nossa faixa e a quantidade de IPs que queremos que o DHCP distribua (depende do número de computadores que temos na rede). Esta linha deve ser comentada, caso as opções "deny unknown" e "ignore" estejam descomentadas, senão o DHCP continuará distribuindo IPs fora do cadastro dos grupos "servidores" e "clientes".
- Na linha "option routers", definimos o IP do roteador que, no nosso caso, deve ser o mesmo da placa de rede que responde pelo DHCP, no caso, a eth0.
- Na linha "option broadcast-address", definimos o broadcast da rede.
- Na linha "option domain-name-servers", definimos, por primeiro, o DNS interno da rede (se houver) seguido de DNSs públicos e abertos (os xxx são endereços de IP de DNS públicos e abertos) e terminando sempre com o IP do gateway/roteador para redundância. Caso não tenha DNS interno na sua rede, retire o IP, no caso, 192.168.2.2 e o "host dns" não precisa ter.
- As linhas "deny unknown-clients" e "ignore unknown-clients", fazem com que o DHCP distribua IPs somente para as máquinas que estiverem com o MAC cadastrado nos grupos acima. Ao acrescentar os IPs com os MACs na tabela ARP através do arquivo /etc/ethers (abaixo) você deve comentar essas linhas colocando um "#" na frente delas.
* Importante: Se você deixar as linhas "deny ..." e "ignore ..." descomentadas, as máquinas clientes que estiverem com IP automático e não estiverem cadastradas, NÃO obterão IP e, logicamente, só navegarão se o IP for fixado manualmente na própria máquina.
No grupo "servidores" estamos fixando os IPs dos servidores através do MAC da placa de rede.
Para ver o MAC da placa de rede, execute
ifconfig e veja o HW da placa de rede que responde pelo servidor e coloque ali em cima. Caso não haja DNS interno na rede, o "host dns" deve ser omitido.
No grupo "clientes", definimos os IPs dos clientes através do MAC da placa de rede de cada máquina.
A opção GROUP serve para separar a configuração por grupos dentro da mesma rede/subrede. Por exemplo, você quer que um determinado grupo composto por algumas máquinas tenha uma configuração distinta de outro grupo ou do resto da rede e quer que usem, por exemplo, um outro gateway (option routers), ou qualquer outra configuração permitida a somente uma máquina pelo dhcpd.conf, você pode especificar isso através do "group" sem aplicar para toda a rede.
Salve e saia do arquivo.