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.