+ Responder ao Tópico



  1. #1

    Padrão Estudo de caso - DHCP em duas redes cont...

    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.


    Código :
    # tail -f /var/log/syslog
    log do dhcpd
    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".


    Código :
    # cat /var/lib/dhcp/dhcpd.leases
    Visualização da tabela de 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 é?
    Código :
    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. #2

    Padrão Re: Estudo de caso - DHCP em duas redes cont...

    Citação Postado originalmente por cristianff Ver Post
    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?
    Boa tarde.

    A solução do seu problema é o uso de shared-network. Funciona redondinho, conforme exemplo que transcrevo abaixo.

    Uma prefeitura, com 4 prédios, 45 setores, 218 estações (dhcp client). O servidor é FreeBSD 7.2, rodando isc-dhcp-server-42, entre outros serviços (openospf, varnish, nginx, tornado etc).

    Cada setor tem sua rede /24. A numeração funciona da seguinte forma:

    Octetos A.B.C.D, sendo A sempre "10", que é da rede de estações, "B" o número do prédio, "C" o número do setor, dentro do prédio "B", e "C" o número do host, dentro do setor, que está dentro do prédio.

    Resumindo, o endereço IP de cada estação fica "10.PREDIO.SETOR.ESTACAO".

    A rede é totalmente, como se diz coloquialmente aqui no Under-Linux, "roteada", sem uso bridge, por razão óbvia. Eu só tenho um servidor DHCP na rede inteira (na verdade são dois, em cluster, mas não vem ao caso aqui), que recebe relay de requisição DHCP dos roteadores de cada prédio.

    Mas como meu servidor DHCP consegue entregar um endereço IP não associado (non-binding) a sua interface? Com o uso de shared-network.

    Envio abaixo um exemplo estrutural do meu dhcpd.conf.

    Código :
    default-lease-time              .... ;
    min-lease-time                  .... ;
    max-lease-time                  .... ;
    ddns-updates                    .... ;
    ddns-update-style               .... ;
    log-facility                    .... ;
     
    shared-network pmnetwork {
     
        #dead
        subnet 192.168.10.0    netmask 255.255.255.0 { range 192.168.10.200   192.168.10.249  .......... }
        #snipped...
     
        #noc
        subnet 192.168.100.0   netmask 255.255.255.0 { range 192.168.100.200  192.168.100.249   .......... }
        subnet 192.168.101.0   netmask 255.255.255.0 { range 192.168.101.200  192.168.101.249   .......... }
        subnet 192.168.102.0   netmask 255.255.255.0 { range 192.168.102.200  192.168.102.249   .......... }
        #snipped...
     
        #build A
        subnet 10.10.11.0      netmask 255.255.255.0 { range 10.10.11.200     10.10.11.249   .......... }
        subnet 10.10.12.0      netmask 255.255.255.0 { range 10.10.12.200     10.10.12.249   .......... }
        subnet 10.10.13.0      netmask 255.255.255.0 { range 10.10.13.200     10.10.13.249   .......... }
        subnet 10.10.14.0      netmask 255.255.255.0 { range 10.10.14.200     10.10.14.249   .......... }
        #snipped...
     
        #build B
        subnet 10.11.11.0      netmask 255.255.255.0 { range 10.11.11.200     10.11.11.249   .......... }
        subnet 10.11.12.0      netmask 255.255.255.0 { range 10.11.12.200     10.11.12.249   .......... }
        subnet 10.11.13.0      netmask 255.255.255.0 { range 10.11.13.200     10.11.13.249   .......... }
        subnet 10.11.14.0      netmask 255.255.255.0 { range 10.11.14.200     10.11.14.249   .......... }
        #snipped...
     
        #build C
        subnet 10.13.11.0      netmask 255.255.255.0 { range 10.13.11.200     10.13.11.249   .......... }
        subnet 10.13.12.0      netmask 255.255.255.0 { range 10.13.12.200     10.13.12.249   .......... }
        #snipped
     
        #build D
        subnet 10.14.11.0      netmask 255.255.255.0 { range 10.14.11.200     10.14.11.249   .......... }
        subnet 10.14.12.0      netmask 255.255.255.0 { range 10.14.12.200     10.14.12.249   .......... }
        #snipped...
    }
     
    #RESERVED
     
     
    host estacao-exemplo-0001 { hardware ethernet  00:xx:xx:xx:xx:31  ;  fixed-address  10.10.11.67  ;    .......... }
    host estacao-exemplo-0002 { hardware ethernet  00:xx:xx:xx:xx:32  ;  fixed-address  10.10.12.25  ;    .......... }
    host estacao-exemplo-0003 { hardware ethernet  00:xx:xx:xx:xx:33  ;  fixed-address  10.10.13.54  ;    .......... } 
    host estacao-exemplo-0004 { hardware ethernet  00:xx:xx:xx:xx:34  ;  fixed-address  10.10.14.89  ;    .......... } 
    host estacao-exemplo-0005 { hardware ethernet  00:xx:xx:xx:xx:35  ;  fixed-address  10.11.13.51  ;    .......... } 
    host estacao-exemplo-0006 { hardware ethernet  00:xx:xx:xx:xx:36  ;  fixed-address  10.13.12.92  ;    .......... } 
    host estacao-exemplo-0007 { hardware ethernet  00:xx:xx:xx:xx:37  ;  fixed-address  10.14.11.31  ;    .......... }
    Veja que subnet estão contidos nos escopos de shared-network

    Tem maluco que delira e levanta múltiplas instâncias do dhcpd, uma para cada interface, com um dhcpd.conf para instância. Não precisa nada disso

    Espero ter ajudado.

    Saudações,

    Trober
    -
    -
    -
    -
    -

  3. #3

    Padrão Re: Estudo de caso - DHCP em duas redes cont...

    Eu entendi a sua lógica, era mais ou menos assim que eu fazia no meu antigo emprego, que era um setor público e utilizávamos praticamente a mesma lógica. Agora aqui o caso é muito mais simples, com apenas duas redes conforme eu expliquei no primeiro post.

    Eu já estou usando shared-network conforme eu arquivo de configuração abaixo:
    Código :
    ddns-update-style       none;
    default-lease-time      21600;
    max-lease-time          21600;
    authoritative;
     
     
    shared-network SG {
     
     
            ## SG Londrina eth1
            subnet 10.1.1.0 netmask 255.255.255.0 {
                    range                          10.1.1.50 10.1.1.98;
                    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;
            }
     
     
            ## SG Sabaudia eth2
            subnet 192.168.1.0 netmask 255.255.255.0 {
                    range                           192.168.1.2 192.168.1.100;
                    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;
            }
    }

    Eu estava monitorando o log aqui e vi que quando eu inicio o serviço ele me mostra essa mensagem:
    Código :
     proxylon dhcpd: Multiple interfaces match the same shared network: eth2 eth1

    Tenho minhas interfaces eth1 e eth2 configuradas normalmente:
    Código :
    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.1.254

    Acabei de fazer um teste aqui, na minha rede eth1 que é a rede 10.1.1.0 tem um access-point que distribui ip para alguns notebooks que temos dos funcionários e eventualmente algum fornecedor que nos visita. Fiz um teste com o meu notebook acessando a rede sem fio que faz que está na eth1 e ele pegou o ip da rede 192.168.1.0 conforme log.
    Código :
    Sep 23 14:13:01 proxylon dhcpd: DHCPREQUEST for 192.168.1.9 from 00:21:00:02:23:58 (Dede-PC) via eth1
    Sep 23 14:13:01 proxylon dhcpd: DHCPACK on 192.168.1.9 to 00:21:00:02:23:58 (Dede-PC) via eth1
    Sep 23 14:13:04 proxylon dhcpd: DHCPINFORM from 192.168.1.9 via eth1
    Sep 23 14:13:04 proxylon dhcpd: DHCPACK to 192.168.1.9 (00:21:00:02:23:58) via eth1
    Sep 23 14:13:07 proxylon dhcpd: DHCPINFORM from 192.168.1.9 via eth1
    Sep 23 14:13:07 proxylon dhcpd: DHCPACK to 192.168.1.9 (00:21:00:02:23:58) via eth1
    ... neste caso como o notebook está ligado a rede 10.1.1.0 pela interface eth1 ele teria que ter recebido um ip 10.1.1.xxx e não um ip 192.168.1.xxx.


    Quando eu inicio o serviço, a única mensagem que ele me mostra fora do padrão é:
    Código :
     proxylon dhcpd: Multiple interfaces match the same shared network: eth2 eth1

    Creio que aqui está o detalhe.

    Comparando o seu arquivo de configuração com o meu, está praticamente com a mesma lógica, também estou usando shared-network com as declarações padrão.

    Seria esse então o problema aqui da minha configuração?

  4. #4
    Avatar de luandotto
    Ingresso
    Jul 2011
    Localização
    Brumado- Bahia
    Posts
    133
    Posts de Blog
    7

    Padrão Re: Estudo de caso - DHCP em duas redes cont...

    Boa tarde,

    Atualize seu DHCPD.CONF para.

    Código :
    Atualize para:
     INTERFACES="eth1"; #interface da intranet
     ddns-update-style none;
     default-lease-time 600;
     max-lease-time 7200;
     authoritative;
     subnet 10.0.1.0 netmask 255.255.255.0 {
       range 10.0.1.2 10.0.1.100;
       option routers 192.10.0.1.1;
       option domain-name-servers 200.195.192.133; #Atualize para seus DNS
       option broadcast-address 10.0.1.1;
     }
     
     host ramon{
     hardware ethernet 00:08:54:14:dc:17;
     fixed-address 10.0.1.19;
     }
     
     host pc-2 {
       hardware ethernet 00:00:86:3B:AD:96;
       fixed-address 10.0.1.20;
     
     
     
     INTERFACES="eth2"; #interface da intranet
     ddns-update-style none;
     default-lease-time 600;
     max-lease-time 7200;
     authoritative;
     subnet 192.168.0.0 netmask 255.255.255.0 {
       range 192.168.0.2 192.168.0.50;
       option routers 192.168.0.1;
       option domain-name-servers 200.195.192.133; #Atualize para seus DNS
       option broadcast-address 192.168.0.255;
     }
     
     host ramon{
     hardware ethernet 00:08:54:14:dc:17;
     fixed-address 192.168.0.19;
     }
     
     host pc-2 {
       hardware ethernet 00:00:86:3B:AD:96;
       fixed-address 192.168.0.20;
    }

    Isso ja deve resolver...
    Não esquece de postar o resultado e classificar o post... pode ser util a outros usuarios.

  5. #5
    Avatar de luandotto
    Ingresso
    Jul 2011
    Localização
    Brumado- Bahia
    Posts
    133
    Posts de Blog
    7

    Padrão Re: Estudo de caso - DHCP em duas redes cont...

    Citação Postado originalmente por luandotto Ver Post
    Boa tarde,

    Atualize seu DHCPD.CONF para.

    Código :
    Atualize para:
     INTERFACES="eth1"; #interface da intranet
     ddns-update-style none;
     default-lease-time 600;
     max-lease-time 7200;
     authoritative;
     subnet 10.0.1.0 netmask 255.255.255.0 {
       range 10.0.1.2 10.0.1.100;
       option routers 192.10.0.1.1;
       option domain-name-servers 200.195.192.133; #Atualize para seus DNS
       option broadcast-address 10.0.1.1;
     }
     
     host ramon{
     hardware ethernet 00:08:54:14:dc:17;
     fixed-address 10.0.1.19;
     }
     
     host pc-2 {
       hardware ethernet 00:00:86:3B:AD:96;
       fixed-address 10.0.1.20;
     
     
     
     INTERFACES="eth2"; #interface da intranet
     ddns-update-style none;
     default-lease-time 600;
     max-lease-time 7200;
     authoritative;
     subnet 192.168.0.0 netmask 255.255.255.0 {
       range 192.168.0.2 192.168.0.50;
       option routers 192.168.0.1;
       option domain-name-servers 200.195.192.133; #Atualize para seus DNS
       option broadcast-address 192.168.0.255;
     }
     
     host ramon{
     hardware ethernet 00:08:54:14:dc:17;
     fixed-address 192.168.0.19;
     }
     
     host pc-2 {
       hardware ethernet 00:00:86:3B:AD:96;
       fixed-address 192.168.0.20;
    }

    Isso ja deve resolver...
    Não esquece de postar o resultado e classificar o post... pode ser util a outros usuarios.
    Apague todo o arquivo e deixe apenas a regra citada acima.

  6. #6

    Padrão Re: Estudo de caso - DHCP em duas redes cont...

    Luan, eu implementei aqui o arquivo no padrão que você passou, claro que adequando a minha rede e deu tudo certo. Agora as a interface eth1 só distribui ips da rede 10.1.1.0 e a eth2 só ips da rede 192.168.1.0.

    Aparentemente tudo ok agora.

    Muito obrigado pela ajuda!

    Só fiquei em dúvida porque não funcionou com shared-network.

    Muito obrigado.

  7. #7
    Avatar de luandotto
    Ingresso
    Jul 2011
    Localização
    Brumado- Bahia
    Posts
    133
    Posts de Blog
    7

    Padrão Re: Estudo de caso - DHCP em duas redes cont...

    No sharednetwork nao funcionou pq vc nao declarou quais eras as variaves de cada placa de rede (eth0 e eth1) como fiz no dhcpd.cond

    INTERFACES="eth2";

    De qualquer forma eu sempre uso o dhcpd mesmo mais simples e sempre funciona...
    Qualquer coisa estamos por aqui.

    vlw

  8. #8

    Padrão Re: Estudo de caso - DHCP em duas redes cont...

    assim sendo, se no modelo que eu estava usando, se eu apenas inserisse a informação dentro do shared-netword como:

    interfaces="eth1" funcionaria.

    O interessante que o trober usa sem identificar as interfaces e pra ele funciona.

    Mas é isso aí.