Estudo de caso - DHCP em duas redes

Publicado por Cristian Ferraz Fernandes em 26/09/2011

[ Hits: 14.266 ]

 


Estudo de caso - DHCP em duas redes



Segunda vez que eu enfrentei esse tipo de situação, antes foi no meu antigo emprego onde eu trabalhava com inúmeras subredes e acabei optando na época por amarrar os IPs via MAC.

Hoje estou com um quadro assim, temos na empresa duas redes, a rede da unidade1 é a rede 10.1.1.0 e temos a rede 192.168.1.0, que é a da unidade2 da empresa. Contratamos o serviço RAV da Copel para fazer a interligação das unidade e centralizar todo o acesso e gerenciamento na unidade1.

Tenho na eth1 a rede 10.1.1.0 e na eth2 a rede 192.168.1.0 ambas com máscara padrão da classe C.

Abaixo a configuração para o estudo de caso, arquivos de configuração testados e funcionando 100%.

O SO do servidor é um Debian 6.

Primeiro vamos configurar os IPs nas interfaces de rede, no estudo de caso temos o seguinte cenário:
  • eth0 = internet
  • eth1 = rede interna matriz (10.1.1.0/24)
  • eth2 = rede interna filial (192.168.1.0/24)

Configurando as interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
     address 172.16.1.254
     network 172.16.1.0
     netmask 255.255.255.0
     broadcast 172.16.1.255
     gateway 172.16.1.1

auto eth1
iface eth1 inet static
     address 10.1.1.1
     network 10.1.1.0
     netmask 255.255.255.0
     broadcast 10.1.1.255
     gateway 172.16.1.254

auto eth2
iface eth2 inet static
     address 192.168.1.1
     network 192.168.1.0
     netmask 255.255.255.0
     broadcast 192.168.1.255
     gateway 172.16.2.254

Depois de configurado vamos reiniciar o serviço de networking para as modificações tomarem efeito:

# /etc/init.d/networking restart

Agora vamos configurar o nosso dhcpd.conf:

INTERFACES="eth1";
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 10.1.1.0 netmask 255.255.255.0 {
   range 10.1.1.50 10.1.1.98;
   option routers 10.1.1.1;
   option domain-name-servers 10.1.1.1,200.221.11.100;
   option broadcast-address 10.1.1.255;
}

INTERFACES="eth2";
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.50 192.168.1.100;
   option routers 192.168.1.1;
   option domain-name-servers 192.168.1.1, 200.221.11.100;
   option broadcast-address 192.168.1.255;
}

        #####################
        # hosts com ip fixo #
        #####################
        #
        host ti01 {
          hardware ethernet f0:4d:a2:df:81:c5;
          fixed-address 10.1.1.50;
        }
        #
        host ti02 {
          hardware ethernet 00:1f:e2:6f:21:b7;
          fixed-address 10.1.1.51;
        }

Depois de configurado o dhcp para as duas redes, agora temos que "avisar" que ele vai escutar requisições em ambas as interfaces, eth1 e eth2.

# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/isc-dhcp-server by the maintainer scripts

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".

INTERFACES="eth1 eth2"

Agora vamos reiniciar o serviço para que as alterações tomem efeito:

# /etc/init.d/isc-dhcp-server restart

Se tudo ocorreu conforme o esperado, agora temos um servidor DHCP que irá distribuir IPs da rede 10.1.1.0 para os equipamentos plugados através da eth1 e IPs da rede 192.168.1.0 para os equipamentos plugados através da eth2.

Vale uma dica sempre monitorar o arquivo de log do sistema, ele ajuda e muito para correção de erros.

# tail -f /var/log/syslog
Sep 23 20:34:43 proxylon dhcpd: Dynamic and static leases present for 10.1.1.51.
Sep 23 20:34:43 proxylon dhcpd: Remove host declaration ti02 or remove 10.1.1.51
Sep 23 20:34:43 proxylon dhcpd: from the dynamic address pool for 10.1.1.0/24
Sep 23 20:34:43 proxylon dhcpd: DHCPREQUEST for 10.1.1.51 from 00:1f:e2:6f:21:b7 via eth1
Sep 23 20:34:43 proxylon dhcpd: DHCPACK on 10.1.1.51 to 00:1f:e2:6f:21:b7 via eth1
Sep 23 20:35:30 proxylon dhcpd: DHCPREQUEST for 10.1.1.73 from 00:1f:c6:cc:76:a3 (Samuel-PC) via eth1
Sep 23 20:35:30 proxylon dhcpd: DHCPACK on 10.1.1.73 to 00:1f:c6:cc:76:a3 (Samuel-PC) via eth1
Sep 23 20:35:51 proxylon dhcpd: DHCPREQUEST for 10.1.1.79 from 00:22:15:c1:52:60 (producao02) via eth1
Sep 23 20:35:51 proxylon dhcpd: DHCPACK on 10.1.1.79 to 00:22:15:c1:52:60 (producao02) via eth1


Foram feitos inúmeros testes simulando estações em ambas as redes, realmente quando você troca uma estação de uma rede para outra, ele já faz a comunicação e recebe o IP correto.

Eu já tive problema em fazer essa configuração, estava tentando via shared-network, funcionava mas sempre ocorria de máquinas receberem endereços da outra rede. Essa foi a solução definitiva que está funcionando 100%.

Agora uma dica para vocês quiserem saber quantas estações receberam IP na eth1:

# arp -a -i eth1
? (10.1.1.230) em 00:17:4f:02:a6:c0 [ether] em eth1
? (10.1.1.51) em 00:1f:e2:6f:21:b7 [ether] em eth1
? (10.1.1.231) em e0:cb:4e:ce:e6:fd [ether] em eth1
? (10.1.1.79) em 00:22:15:c1:52:60 [ether] em eth1
? (10.1.1.89) em 90:e6:ba:e1:c0:56 [ether] em eth1
? (10.1.1.57) em 00:0e:08:2b:68:ce [ether] em eth1
? (10.1.1.73) em 00:1f:c6:cc:76:a3 [ether] em eth1
? (10.1.1.100) em a4:ba:db:07:15:2b [ether] em eth1
? (10.1.1.55) em 00:26:5e:fd:d3:8e [ether] em eth1


Agora para não precisar contar linha por linha pra saber a quantidade:

# arp -a -i eth1 | wc -l
9 Bom pessoal, acho que é isso!

Qualquer dúvida, sugestão ou reclamação será bem vinda.

Abraço.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Superando a falta do supermount em sistemas Debian

MailScanner - Permitir arquivos .exe (ou outra extensão) a partir de um email específico

Enxergando seu wallpaper no UNR (Ubuntu Netbook Remix)

Melhorando o Xterm no Slackware

Configurando mouse serial no Linux

  

Comentários
[1] Comentário enviado por removido em 26/09/2011 - 02:26h

Que legal cara !
Muito bom mesmo, valeu por compartilhar a solução.


Abraço

[2] Comentário enviado por cristianff em 26/09/2011 - 09:04h

Obrigado Thalysson S, a intenção é essa mesmo, compartilhar!

[3] Comentário enviado por removido em 26/09/2011 - 09:12h

Blza cara.

[4] Comentário enviado por c4rl em 28/09/2011 - 14:37h

Muito útil essa dica.

[5] Comentário enviado por lucascatani em 28/05/2012 - 23:00h

Cristian, essa linha:
Sep 23 20:34:43 proxylon dhcpd: Remove host declaration ti02 or remove 10.1.1.51

Isso está dando para no meu servidor, e quando acontece isso cai a internet e o samba.

Alguma dica?

[6] Comentário enviado por rodpas em 04/10/2016 - 11:12h

Bom dia Cristian, blz

Cara estou com uma situação parecida aqui, porem estou com uma duvida onde entro com a linha: INTERFACES="eth1 eth2"?
__________________________________________________________________
# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/isc-dhcp-server by the maintainer scripts

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth1 eth2"
___________________________________________________________________

E vi que no exemplo voce adicionou somente na rede:

#####################
# hosts com ip fixo #
#####################
#
host ti01 {
hardware ethernet f0:4d:a2:df:81:c5;
fixed-address 10.1.1.50;
}
#
host ti02 {
hardware ethernet 00:1f:e2:6f:21:b7;
fixed-address 10.1.1.51;
}


Como ficaria os macs adicionados na outra rede...so mudaria o IP na sequencia dentro do arquivo mesmo dhcpd.conf?

exemplo

host ti03 {
hardware ethernet 00:1f:e2:6f:21:b7;
fixed-address xxx.xxx.xxx.xxx;
}

Abraço!

Obrigado!

[7] Comentário enviado por cristianff em 09/10/2016 - 21:19h

rodpas, só seguir a lógica para ambas as redes para fixar os ips.
No meu exemplo eu só coloquei ips fixos na eth2, mas serve para eth1 também ou qualquer outra rede que você queira separar.
Basta fazer conforme o exemplo.

Rapaz, fiz esse scritp em 2011, desde então estou longe do mundo da T.I.
Foi legal rever o tópico!
Grande abraço.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts