Estudo de caso - DHCP em duas redes [RESOLVIDO]

1. Estudo de caso - DHCP em duas redes [RESOLVIDO]

Cristian Ferraz Fernandes
cristianff

(usa Debian)

Enviado em 23/09/2011 - 12:20h

Pessoal, bom dia.
Segunda vez que eu enfrente esse tipo de situação, antes foi no meu antigo emprego onde eu trabalhava com inúmeras subredes e eu
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 rede 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 eu estou enviando meus arquivos de configuração para vocês terem uma idéia de como está a configuração.

Arquivo de configuração do dhcp:

###############################
## VARIAVEIS DE CONFIGURACAO ##
###############################
ddns-update-style none;
option domain-name "xxx.com.br";
authoritative;

shared-network SG {

## Rede eth1
subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.50 10.1.1.98;
default-lease-time 21600;
max-lease-time 21600;
option subnet-mask 255.255.255.0;
option broadcast-address 10.1.1.255;
option routers 10.1.1.1;
option domain-name-servers 10.1.1.1,200.221.11.100;
authotative;
next-server 10.1.1.1;
}

## Rede eth2
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.2 192.168.1.100;
default-lease-time 21600;
max-lease-time 21600;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1,200.221.11.100;
authoritative;
next-server 192.168.1.1;
}
}


Configurando para escutar requisições em ambas as interfaces "eth1 eth2"

proxylon:~# cat /etc/default/isc-dhcp-server

# 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"


A dúvida que eu tenho e que até certo ponto chega ser um pequeno problema é o seguinte:

Como o arquivo de log abaixo mostra, eu espetei uma máquina para pegar ip via a eth2, foi feita a negociação, ele ofereceu o ip da
rede certa configurada pela eth2 que é um ip da rede 192.168.1.0, o ip para a estação (Gabriel-PC) foi o ip 192.168.1.13, até aí
tudo bem, esse é o comportamento esperado. Depois eu fui fazer outro teste, desconectei a estação que estava ligada via eth2 e a
conectei para pegar ip via eth1, o arquivo abaixo mostra que o ip foi oferecido pela eth1, mas ele em vez de oferecer um ip da rede
configurada para a interface eth1 que é a rede 10.1.1.0, ele ofereceu o ip da rede da interface eth2 e o ip foi o 192.168.1.13.

Então o que aconteceu é que ele pegou o ip que a eth2 anteriormente tinha oferecido.

O comportamento que eu esperava é que ele tivesse oferecido um ip da rede da interface eth1 10.1.1.0.

# tail -f /var/log/syslog 

log do dhcpd

Sep 23 11:02:57 proxylon dhcpd: DHCPREQUEST for 192.168.1.12 from 00:21:5a:f8:03:a3 (Dede-PC) via eth2
Sep 23 11:02:57 proxylon dhcpd: DHCPACK on 192.168.1.12 to 00:21:5a:f8:03:a3 (Dede-PC) via eth2
Sep 23 11:03:01 proxylon dhcpd: DHCPINFORM from 192.168.1.12 via eth2
Sep 23 11:03:01 proxylon dhcpd: DHCPACK to 192.168.1.12 (00:21:5a:f8:03:a3) via eth2
Sep 23 11:03:04 proxylon dhcpd: DHCPINFORM from 192.168.1.12 via eth2
Sep 23 11:03:04 proxylon dhcpd: DHCPACK to 192.168.1.12 (00:21:5a:f8:03:a3) via eth2
Sep 23 11:03:06 proxylon dhcpd: DHCPDISCOVER from 00:26:9e:03:70:73 via eth2
Sep 23 11:03:07 proxylon dhcpd: DHCPOFFER on 192.168.1.13 to 00:26:9e:03:70:73 (Gabriel-PC) via eth2
Sep 23 11:03:07 proxylon dhcpd: DHCPREQUEST for 192.168.1.13 (192.168.1.1) from 00:26:9e:03:70:73 (Gabriel-PC) via eth2
Sep 23 11:03:07 proxylon dhcpd: DHCPACK on 192.168.1.13 to 00:26:9e:03:70:73 (Gabriel-PC) via eth2
Sep 23 11:03:13 proxylon dhcpd: DHCPINFORM from 192.168.1.13 via eth2
Sep 23 11:03:13 proxylon dhcpd: DHCPACK to 192.168.1.13 (00:26:9e:03:70:73) via eth2
Sep 23 11:03:16 proxylon dhcpd: DHCPINFORM from 192.168.1.13 via eth2
Sep 23 11:03:16 proxylon dhcpd: DHCPACK to 192.168.1.13 (00:26:9e:03:70:73) via eth2
Sep 23 11:04:55 proxylon dhcpd: DHCPREQUEST for 192.168.1.13 from 00:26:9e:03:70:73 (Gabriel-PC) via eth1
Sep 23 11:04:55 proxylon dhcpd: DHCPACK on 192.168.1.13 to 00:26:9e:03:70:73 (Gabriel-PC) via eth1
Sep 23 11:05:02 proxylon dhcpd: DHCPINFORM from 192.168.1.13 via eth1
Sep 23 11:05:02 proxylon dhcpd: DHCPACK to 192.168.1.13 (00:26:9e:03:70:73) via eth1
Sep 23 11:05:05 proxylon dhcpd: DHCPINFORM from 192.168.1.13 via eth1
Sep 23 11:05:05 proxylon dhcpd: DHCPACK to 192.168.1.13 (00:26:9e:03:70:73) via eth1
Sep 23 11:07:04 proxylon dhcpd: DHCPREQUEST for 192.168.1.13 from 00:26:9e:03:70:73 (Gabriel-PC) via eth1
Sep 23 11:07:04 proxylon dhcpd: DHCPACK on 192.168.1.13 to 00:26:9e:03:70:73 (Gabriel-PC) via eth1
Sep 23 11:07:11 proxylon dhcpd: DHCPINFORM from 192.168.1.13 via eth1
Sep 23 11:07:11 proxylon dhcpd: DHCPACK to 192.168.1.13 (00:26:9e:03:70:73) via eth1
Sep 23 11:07:17 proxylon dhcpd: DHCPDISCOVER from 00:26:9e:03:70:73 (Gabriel-PC) via eth1
Sep 23 11:07:17 proxylon dhcpd: DHCPOFFER on 192.168.1.13 to 00:26:9e:03:70:73 (Gabriel-PC) via eth1


Pensando aqui eu pensei que como o dhcpd guarda uma tabela de leases, eu foi conferir e lá estava, como a primeira requisição foi pela eth2, ele ofereceu o ip da rede 192.168.1.0. A segunda requisição feita pela eth1, ele ofereceu pela eth1 o ip que ele tinha pego anteriormente, só que o ip da rede "errada".

# cat /var/lib/dhcp/dhcpd.leases 

Visualização da tabela de leases:

lease 192.168.1.12 {
starts 5 2011/09/23 14:02:57;
ends 5 2011/09/23 20:02:57;
cltt 5 2011/09/23 14:02:57;
binding state active;
next binding state free;
hardware ethernet 00:21:5a:f8:03:a3;
uid "{TEXTO}01{TEXTO}00!Z\370{TEXTO}03\243";
client-hostname "Dede-PC";
}
lease 192.168.1.13 {
starts 5 2011/09/23 14:04:55;
ends 5 2011/09/23 20:04:55;
cltt 5 2011/09/23 14:04:55;
binding state active;
next binding state free;
hardware ethernet 00:26:9e:03:70:73;
uid "{TEXTO}01{TEXTO}00&\236{TEXTO}03ps";
client-hostname "Gabriel-PC";
}
lease 192.168.1.13 {
starts 5 2011/09/23 14:07:04;
ends 5 2011/09/23 20:07:04;
cltt 5 2011/09/23 14:07:04;
binding state active;
next binding state free;
hardware ethernet 00:26:9e:03:70:73;
uid "{TEXTO}01{TEXTO}00&\236{TEXTO}03ps";
client-hostname "Gabriel-PC";
}



Estava estudando aqui esse caso e creio que essa questão é do lease-time não é?
default-lease-time              21600; 

Uma possível solução seria deixar um tempo mínimo de lease-time, assim quando ocorrer essa troca, ele faria uma nova negociação e
como o lease-time mínimo, ele ofereceria o ip da rede certa e não o ip da última negociação (estando essa ainda dentro o lease-time
definido).

Claro que são redes distintas e isso não seria um grande problema, mas as vezes uma máquina vem para a unidade1 e quando volta para unidade2 ele fica com o ip que da unidade1, como as unidades estão separadas por 50km e apenas na unidade1 existe uma equipe de TI, quando acontece esses casos é um empecilho.

Existiria uma outra solução para o caso, algo que obrigue o dhcp apenas a distribuir ips da faixa de ip que está configurada para a interface em questão?

Pessoal, é a segunda vez que me deparo com essa situação, não sei se algum amigo já passou por esse mesmo problema e conseguiu

resolver, eu analisando aqui acho que é não um problema mas uma característica do lease-time. Pode ser que exista um jeito de forçar a interface via dhcp oferecer ips apenas da rede nela cadastrada.

Gostaria muito da opinião de vocês.

Grande abraço


  


2. Re: Estudo de caso - DHCP em duas redes [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 23/09/2011 - 14:42h

Bom, uma maneira de você obrigar uma determinada máquina pegar o ip de uma determinada rede é amarrar o MAC address a um endereço IP.


3. Re: Estudo de caso - DHCP em duas redes [RESOLVIDO]

Cristian Ferraz Fernandes
cristianff

(usa Debian)

Enviado em 23/09/2011 - 14:53h

jptudobem escreveu:

Bom, uma maneira de você obrigar uma determinada máquina pegar o ip de uma determinada rede é amarrar o MAC address a um endereço IP.

Sim, mas mas mesmo assim esse detalhe continuaria acontecendo: A distribuição de endereços errados, mas é uma solução.


4. Re: Estudo de caso - DHCP em duas redes [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 23/09/2011 - 16:32h

Cristian, não sei se foi erro seu na hora da digitação do post, mas se no seu arquivo original estiver assim, o problema pode ser resolvido com a correta digitação no dhcpd.conf


Observe que na eth1 você colocou

authotative;

em vez de

authoritative;

O que força o dhcp a sempre fornecer ip's da outra rede que está com o nome correto. Se você reiniciar o serviço ele mostra o erro da linha. Veja se não é isso.


5. Re: Estudo de caso - DHCP em duas redes [RESOLVIDO]

Cristian Ferraz Fernandes
cristianff

(usa Debian)

Enviado em 23/09/2011 - 17:14h

n4t4n escreveu:

Cristian, não sei se foi erro seu na hora da digitação do post, mas se no seu arquivo original estiver assim, o problema pode ser resolvido com a correta digitação no dhcpd.conf


Observe que na eth1 você colocou

authotative;

em vez de

authoritative;

O que força o dhcp a sempre fornecer ip's da outra rede que está com o nome correto. Se você reiniciar o serviço ele mostra o erro da linha. Veja se não é isso.


Realmente, esse detalhe passou despercebido.
Eu corrigi mas mesmo assim o problema nesta maneira continua.

Eu consegui resolver o problema assim:


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;
}


desta maneira funciona perfeitamente.
Fica aqui a dica, usando shared-network deveria funcionar, mas não sei porque não funcionou.

Única mensagem que apresenta usando shared-network e corrigindo o authoritative é esse:
proxylon dhcpd: Multiple interfaces match the same shared network: eth2 eth1 


Pode ser esse um indício.

Mas valeu...


6. Re: Estudo de caso - DHCP em duas redes [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 23/09/2011 - 17:29h

cristianff escreveu:

Realmente, esse detalhe passou despercebido.
Eu corrigi mas mesmo assim o problema nesta maneira continua.

Eu consegui resolver o problema assim:


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;
}


desta maneira funciona perfeitamente.
Fica aqui a dica, usando shared-network deveria funcionar, mas não sei porque não funcionou.

Única mensagem que apresenta usando shared-network e corrigindo o authoritative é esse:
proxylon dhcpd: Multiple interfaces match the same shared network: eth2 eth1 


Pode ser esse um indício.

Mas valeu...


Valeu então...

Uma dica é deixar a dica na seção "Dicas" do site. rsrs


7. Re: Estudo de caso - DHCP em duas redes [RESOLVIDO]

Cristian Ferraz Fernandes
cristianff

(usa Debian)

Enviado em 23/09/2011 - 17:38h

n4t4n escreveu:

cristianff escreveu:

Realmente, esse detalhe passou despercebido.
Eu corrigi mas mesmo assim o problema nesta maneira continua.

Eu consegui resolver o problema assim:


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;
}


desta maneira funciona perfeitamente.
Fica aqui a dica, usando shared-network deveria funcionar, mas não sei porque não funcionou.

Única mensagem que apresenta usando shared-network e corrigindo o authoritative é esse:
proxylon dhcpd: Multiple interfaces match the same shared network: eth2 eth1 


Pode ser esse um indício.

Mas valeu...


Valeu então...

Uma dica é deixar a dica na seção "Dicas" do site. rsrs

Você poderia fazer isso ou só eu consigo?
Com certeza eu gostaria, pois vai ajudar muita gente.

Abraço



8. Re: Estudo de caso - DHCP em duas redes [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 23/09/2011 - 18:01h

Eu posso fazer, mas recomendo que você mesmo o faça, já que a dica é sua e seu eu copiar e postar é considerado plágio, a não ser que tenha a sua permissão e o referencie.

Se você quiser postar, estando logado no site, vá até o final da página onde você encontra

Contribuir com: [ Artigo | Conf | Dica | Evento | Oportunidade de trabalho |Pergunta | Script | Screenshot ]


e clique em Dica

Inicie a dica clicando em Iniciar Dica

Depois de fazer a dica ela fica no modo Em construção e você precisa enviá-la, para que seja feita a revisão e postagem pelos moderadores do site.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts