DHCP com controle de IP e compartilhamento no Debian Squeeze

Veremos um roteiro sobre como instalar e configurar o serviço de DHCP com cadastro de IPs pelo endereço MAC e controle de IPs pela tabela ARP.

[ Hits: 35.712 ]

Por: Buckminster em 19/02/2013


Introdução



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.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Habilitando o compartilhamento
   3. Controle de IPs pela tabela ARP
Outros artigos deste autor

IPv6, DNSv6 e DHCPv6

Manual traduzido do Squid

Compilação do Squid 3 no Debian Wheezy

Como um monte de letras de um código fonte transforma-se em voltagens?

Problema no GRUB no Debian Squeeze 6.0.7 [Resolvido]

Leitura recomendada

Docker - Containers em Linux (parte 2)

Problemas encontrados na adoção do IPv6

Testando velocidade entre equipamentos Ubiquiti

Instalando o oVirt 4.3 Single Host

SNMPv3 no Debian/Ubuntu - Configurando para consultas externas

  
Comentários
[1] Comentário enviado por dalveson em 19/02/2013 - 16:40h

legal o artigo, mais me tira uma duvida:

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.

isso funciona em desktop? pois aqui tenho servidores dell que ligam-se automaticamente quando a energia é restabelecida, porem tenho um servidor linux debian que roda num desktop ae ele eu tenho que ligar manualmente.

[2] Comentário enviado por nandinholuis em 20/02/2013 - 21:16h

Gostei muito do seu artigo, parabéns.
Tenho uma dúvida a respeito da seguinte situação:
_________________________________________________________________________
tenho 2 pcs dentro da minha rede com os respectivos ips e mac-address:

pc-financeiro1 -> 192.168.1.111 00:00:00:00:00:01
pc-estagiario1 -> 192.168.1.201 00:00:00:00:00:02

O pc-estagiario1 roda um sniffer e descobre o ip e o mac-address do pc-financeiro, e acaba colocando em seu pc, ficando assim;
pc-estagiario1 -> 192.168.1.111 00:00:00:00:00:01

Ou seja se acusar que o ip esta duplicado na rede, o estagiario espera o pc-financeiro1 desligar o pc, e tem todos os compartilhamentos de pastas, internet, e privilegio do pc-financeiro1?


[3] Comentário enviado por Buckminster em 21/02/2013 - 03:27h

Você deverá ter duas placas de rede instaladas no computador, que será o servidor DHCP.
---Sim. Todo servidor deve ter, no mínimo, duas placas de rede. Uma placa de rede é para receber a internet e a outra, após o compartilhamento, é a placa que sairá para a sua rede interna. Leia todo o artigo.

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.
---Em cada placa-mãe pode mudar o local de configuração, depende da marca e do modelo.
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.
---Para acessar o "Bios" fique apertando a tecla "del", tipo chinelada de louco, durante a inicialização; geralmente é a "del", veja no manual da sua placa-mãe.

isso funciona em desktop? pois aqui tenho servidores dell que ligam-se automaticamente quando a energia é restabelecida, porem tenho um servidor linux debian que roda num desktop ae ele eu tenho que ligar manualmente.
---Geralmente os servidores Dell já vem configurados para reiniciar automaticamente. No seu servidor Debian (que não é desktop uma vez que você o configurou como servidor) você deve acessar o "Bios" da placa-mãe e configurar manualmente.

[4] Comentário enviado por Buckminster em 21/02/2013 - 08:17h

tenho 2 pcs dentro da minha rede com os respectivos ips e mac-address:

pc-financeiro1 -> 192.168.1.111 00:00:00:00:00:01
pc-estagiario1 -> 192.168.1.201 00:00:00:00:00:02

O pc-estagiario1 roda um sniffer e descobre o ip e o mac-address do pc-financeiro, e acaba colocando em seu pc, ficando assim;
pc-estagiario1 -> 192.168.1.111 00:00:00:00:00:01

Ou seja se acusar que o ip esta duplicado na rede, o estagiario espera o pc-financeiro1 desligar o pc, e tem todos os compartilhamentos de pastas, internet, e privilegio do pc-financeiro1?

Obrigado.
O que você quer é evitar o acesso pela clonagem de MAC.
Se a rede for wireless coloque criptografia WPA2-AES com uma boa chave de segurança
(quanto maior melhor e com caracteres especiais).
Se a rede for cabeada, é um pouco mais difícil evitar acesso pela clonagem de MAC de
dentro da própria rede. Mas no teu caso é só identificar o PC que está com o MAC
clonado e punir quem está fazendo isso.
Uma solução para minimizar esse problema é colocar o acesso por MAC+IP+login e senha,
ou seja, controle por autenticação de acesso à internet.
Quanto ao compartilhamento de pastas e privilégios, o pc-estagiário só conseguirá ter
se estiver capturando senhas na rede. A clonagem de MAC, pura e simples, neste caso,
só permite acesso à internet.
O único controle eficiente em segurança de redes é o monitoramento constante do
tráfego da rede visando identificar e bloquear ataques internos e externos.
Uma boa solução para diversos controles e bloqueios é Iptables+Squid. Para detecção de
ataques pesquise por IDS e para prevenção pesquise por IPS.

[5] Comentário enviado por rangelhf em 22/02/2013 - 13:06h

Muito bem explicado!!

[6] Comentário enviado por SK5_RJ em 23/05/2013 - 10:26h

Muito obrigado pela contribuiçao Buckminster , Parabens!!!

[7] Comentário enviado por Buckminster em 16/12/2013 - 13:14h

rangelhf

e

Malheiros_XSB

Obrigado.

[8] Comentário enviado por arasouza em 11/02/2014 - 15:07h

Cara parabéns pelo comentário, se possível gostaria de uma ajuda, pois fiz apenas a associação do ip ao mac, porém não funciona, vale salientar q tenho outro servidor e nesse deu certo, nesse caso que não está funcionando é um Debian de 64 bits, faço a associação 10.10.20.9 ao mac: ff:ff:ff:ff:ff:ff, porém se atribuir este mesmo ip a outro pc com outro mac ele navega normalmente.. a unica que bloqueou foi o seguinte: 10.10.20.9 00:00:00:00:00:00, porém aqui não associo a ningue´m.. o q faço???

[9] Comentário enviado por Buckminster em 24/05/2014 - 13:31h


[8] Comentário enviado por arasouza em 11/02/2014 - 15:07h:

Cara parabéns pelo comentário, se possível gostaria de uma ajuda, pois fiz apenas a associação do ip ao mac, porém não funciona, vale salientar q tenho outro servidor e nesse deu certo, nesse caso que não está funcionando é um Debian de 64 bits, faço a associação 10.10.20.9 ao mac: ff:ff:ff:ff:ff:ff, porém se atribuir este mesmo ip a outro pc com outro mac ele navega normalmente.. a unica que bloqueou foi o seguinte: 10.10.20.9 00:00:00:00:00:00, porém aqui não associo a ningue´m.. o q faço???


Acrescente dentro do escopo a linha

deny unknown-clients;

[10] Comentário enviado por stremenx em 10/03/2016 - 14:08h

No caso estou no debian 8 bastaria criar o arquivo no /etc/ethers, pois vim seria visualizar algo que deu errado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts