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, na época eu criei um tópica aqui para expor minha dúvida:
https://under-linux.org/f175/servido...duvida-103214/
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:
Código :############################### ## 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"
Código :proxy:~# 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.
log do dhcpdCódigo :# tail -f /var/log/syslog
Código :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".
Visualização da tabela de leases:Código :# cat /var/lib/dhcp/dhcpd.leases
Código :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 "\001\000!Z\370\003\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 "\001\000&\236\003ps"; 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 "\001\000&\236\003ps"; client-hostname "Gabriel-PC"; }
Estava estudando aqui esse caso e creio que essa questão é do lease-time não é?
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).Código :default-lease-time 21600;
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