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: 39.698 ]

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

Instalando e Configurando o pgAgent no Linux (pgAdmin e PostgreSQL)

ClamAV, o kit de ferramentas antivírus

Como agendar um backup automático do PostgreSQL no Cron evitando o problema de senha

Permissões do Linux

Instalação do PostgreSQL com Apache 2, PHP 5, OpenSSL no Debian Wheezy 7.7 64 bits com systemd e chroot

Leitura recomendada

Problemas encontrados na adoção do IPv6

Zoneminder: Substituindo um Unifi NVR

Sincronizando Bases OpenLDAP e Active Directory

Como encontrar o NetID e o Broadcast de uma determinada rede

Configuração de serviço do Nagios para monitorar o APT do Ubuntu

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts