gildot

Topo
Sobre
FAQ
Tópicos
Autores
Preferências
Artigos
Sondagens
Propor artigo


8/3
gildicas
9/30
jobs
10/9
perguntas
10/25
press

 
Sistema automático de escolha de IP sem DHCP
Contribuído por Xmal em 07-05-01 16:21
do departamento you-are-here-or-there?
consultorio Eraser escreve "Aqui vai um desafio para os geeks de redes. A ideia é o seguinte: uma máquina ter um ip diferente (ja conhecido) conforme está ligada a rede A ou a rede B. A ideia seria não utilizar DHCP pois pelo menos uma das redes não tem servidor de DHCP. Alguma ideia de como a máquina pode ao arrancar detectar a rede em que está ligada e automaticamente escolher o ip respectivo?

Espero que isto dê que pensar aos entusiastas. :) Aguardo as vossas respostas. JP
(PS: obviamente a máquina é um Linux :) ) "

Linux=Hype? | Seminário de Comunicações e Plataformas Móveis  >

 

gildot Login
Login:

Password:

Referências
  • Linux
  • Mais acerca consultorio
  • Também por Xmal
  • Esta discussão foi arquivada. Não se pode acrescentar nenhum comentário.
    solucao (Pontos:2, Esclarecedor)
    por Strange em 07-05-01 17:22 GMT (#1)
    (Utilizador Info) http://strange.nsk.yi.org/

    Se não tiver que ser de forma automática, então uma script pequena:

    #! /bin/sh
    ifdown eth0
    cp -f /etc/sysconfig/network-scripts/ifcfg-{$1,eth0}
    ifup eth0

    Caso contrário, tcpdump para ver os ips usados, e a partir daí configurar a rede automaticamente.

    Se tivesse tempo, faria o script e colocava-o aqui...

    PS: isto não seria mais apropriado na mailing list de linux do PLUG ou do GIL? (Para quando o renascimento do GIL? Alguns afortunados estiveram até há pouco tempo imortalizados no Gildot por terem sido os últimos a enviarem mensagens para a mailing list. :))

    hugs
    Strange

    Re:solucao (Pontos:2, Interessante)
    por mlopes em 07-05-01 17:37 GMT (#2)
    (Utilizador Info)
    Existe uma secção de perguntas, o pessoal é que como é sempre o mesmo (acho eu) o utiliza pouco, mas penso que estas contribuições só vêm ajudar a tornar o gildot + interessante, ao contrário de algumas discussões e por vezes aparecem por ai.
    ping is your friend... (Pontos:1, Informativo)
    por [WaR] em 07-05-01 18:02 GMT (#3)
    (Utilizador Info) http://www.GenHex.org/
    ping

    por exemplo, se estiveres numa classe C 192.168.254.0/24, fazes:
    ping 192.168.254.255

    Há sempre umas quantas máquinas dispostas a responder a estes echo requests. Se receberes uma resposta (que não seja a tua máquina ;)) é pq estás nessa rede. Senão estás na outra.

    Acho q 3 linhas de perl chegam e sobram para isso.

    -- [WaR]
    ACKnowledge my SYNs
    Re:ping is your friend... (Pontos:0, Esclarecedor)
    por Anonimo Cobarde em 07-05-01 18:25 GMT (#5)
    Duh!
    Por acaso não te ocorreu que para fazer ping é preciso já estar ligado?
    Quite lame...

    Re:ping is your friend... (Pontos:1)
    por [WaR] em 07-05-01 18:31 GMT (#6)
    (Utilizador Info) http://www.GenHex.org/
    e... ?
    Que eu saiba basta o cabo de rede estar ligado.

    Get a brain.

    -- [WaR]
    ACKnowledge my SYNs

    Re:ping is your friend... (Pontos:2, Esclarecedor)
    por Strange em 07-05-01 18:34 GMT (#7)
    (Utilizador Info) http://strange.nsk.yi.org/

    Por acaso nao, tb tem q ter um ip.. (Se nao, para onde e' enviada a resposta?)

    Depois, tb tens o problema de que as maquinas windows nao respondem a broadcasts (claro q tinham q ser diferentes...).

    hugs
    Strange

    Re:ping is your friend... (Pontos:1, Informativo)
    por [WaR] em 07-05-01 18:41 GMT (#8)
    (Utilizador Info) http://www.GenHex.org/
    > Por acaso nao, tb tem q ter um ip.. (Se nao, para onde e' enviada a resposta?)

    Tens duas hipóteses.
    Tendo em conta o que foi pedido, ele já sabe qual é o ip, por isso pode configurar o interface dessa forma.

    Se não o quiser fazer, pode sempre usar a libnet+lipcap e criar os pacotes, e le-los da rede. Sem ip.

    > Depois, tb tens o problema de que as maquinas windows nao respondem a broadcasts

    Nunca disse que esta forma era 100% fiável :)

    -- [WaR]
    ACKnowledge my SYNs
    Re:ping is your friend... (Pontos:1)
    por Eraser em 07-05-01 19:04 GMT (#9)
    (Utilizador Info)
    Não há problema por causa do ping. :)

    1) Não me custa nada configurar a máquina com um ip inicial por omissão.
    2) Existem máquinas Unix em ambas as redes por isso obteria resposta ao broadcast.

    Esta solução deve funcionar. No entanto, gostaria de ver se alguém consegue arranjar uma solução mais directa. :)

    Va la, força nesses conhecimentos de rede. Eu sei que voces conseguem fazer melhor. ;)

    JP

    Re:ping is your friend... (Pontos:1)
    por [WaR] em 07-05-01 19:57 GMT (#12)
    (Utilizador Info) http://www.GenHex.org/
    Outra ideia :]

    Pinga o default gateway. Desde que ele responda a pings, é mais fiável.

    Para perl tens o módulo Net:icmp que bule muito bem.

    -- [WaR]
    ACKnowledge my SYNs
    Re:ping is your friend... (Pontos:2, Esclarecedor)
    por joaobranco em 07-05-01 20:12 GMT (#13)
    (Utilizador Info)
    Na linha do ping (ICMP) podes enviar pacotes de ARP request para uma máquina que sabes que esteja na rede (possivelmente o default router da mesma). Se tiveres a lista dos endereços ethernet dos default routers, facilmente descobres qual a rede em que estás... A vantagem disto é que não tens de ter o IP stack todo (nomeadamente, não precisas de ter endereço IP atribuido antes de enviar um ARP request).

    JB

    JB

    Re:ping is your friend... (Pontos:1)
    por MacLeod em 07-05-01 20:55 GMT (#15)
    (Utilizador Info)
    Exactamente... isso é o que faz o Divine, um programa para este género de coisas, desenhado para portáteis. (ver o meu comentário sobre o divine mais abaixo)
    IP Aliasing (Pontos:2, Informativo)
    por eddie em 07-05-01 18:13 GMT (#4)
    (Utilizador Info)
    Podes sempre dar uso ao maravilhoso ip aliasing para resolver essa situacao.

    Re:IP Aliasing (Pontos:0)
    por Anonimo Cobarde em 08-05-01 0:49 GMT (#17)
    Hmmm... "default gateway", cai do ceu?
    Re:IP Aliasing (Pontos:1)
    por Strange em 08-05-01 11:24 GMT (#19)
    (Utilizador Info) http://strange.nsk.yi.org/

    Isto lembra-me do routed e gated. Porque ainda se usam routes estaticos, quando se tem a tecnologia de routing dinamico??

    hugs
    Strange

    Re:IP Aliasing (Pontos:1)
    por NeVErMinD em 08-05-01 12:54 GMT (#21)
    (Utilizador Info)
    Nao se usa por motivos de segurança! "normalmente" o teu router tem um ip fixo, e os daemons routed e gated nunca foram muito seguros, lembras-te do rip.c? Claro que se a soluçao passar por correr routed e gated á que abdicar de certos principios, e ate agora parece-me que ip alias é a mais viavel resolucao ao "problema" proposto.
    RTFM (Pontos:3, Informativo)
    por mvalente em 07-05-01 19:21 GMT (#10)
    (Utilizador Info) http://www.ruido-visual.pt/
    Se te queres *mesmo* entreter podes sempre instalar uma das implementacoes de Mobile IP (cf. RFC2002 )

    Tem a vantagem de ficares com o problema resolvido de vez.

    Cumprimentos

    Mario Valente
    Pequena solução (Pontos:0, Informativo)
    por Anonimo Cobarde em 07-05-01 19:45 GMT (#11)
    Ter em ambas as redes uma máquina a escutar numa subnet interna, estilo 192.168.xxx.xxx.
    O PC ao ligar-se tem um eth alias (eth0:0 por explemplo ) configurado nessa rede, e em ambas
    as redes tens uma máquina com o mesmo ip, na qual tens um daemon a correr que te responde em que rede estás. A partir daí tomas a decisão consoante a rede em que estás.
    Uma solução mais prática que teórica, mas parecia que era isso que querias..
    Divine (Pontos:4, Informativo)
    por MacLeod em 07-05-01 20:51 GMT (#14)
    (Utilizador Info)
    Viva,

    Eu no portátil uso um programa chamado Divine que é bastante útil. Ele detecta a rede onde o PC está automaticamente (enviando ARP requests), e depois configura o IP, netmask, routes, o resolv.conf e permite correr scripts consoante a rede que encontra. Isto num portátil é especialmente útil, principalmente quando se está constantemente a mudar de rede. Embora o programa esteja desenhado para utilizar em sistemas pcmcia, acho que não há nenhum problema em utilizar numa maquina "normal" com placas PCI ou ISA.

    Re:Divine (Pontos:1)
    por b0fh em 07-05-01 23:12 GMT (#16)
    (Utilizador Info)
    Uso-o também já há alguns meses (quase dois anos) e adoro-o. O unico senão é que tive de editar a source para o poder correr setuid (apesar de na documentação o autor avisar para *nunca* fazermos isso lá em casa :) Antes do divine andava a tentar por os pcmcia schemes a funcionar, mas nunca consegui :)
    Re:Divine (Pontos:1)
    por Strange em 08-05-01 11:27 GMT (#20)
    (Utilizador Info) http://strange.nsk.yi.org/

    O unico senão é que tive de editar a source para o poder correr setuid.

    O autor avisa para não colocar c/ o bit suid activado porque não garante a segurança do programa. E também, não precisavas de pô-lo a correr suid. Tens ferramentas como sudo precisamente para os programas em que é necessário correm como root, mas apenas por determinados users.

    hugs
    Strange

    Re:Divine (Pontos:1)
    por Eraser em 08-05-01 13:59 GMT (#22)
    (Utilizador Info)
    "It is meant to be run from the PCMCIA network initialization scripts. DO NOT make divine setuid root. Divine contains tons of security holes like using system, it is meant as quick hack that will not hurt so much if it is run at boot time."

    Eu sei que tu sabias :) mas a verdade é que o texto acima mais do que dizer que não se deve fazer setuid ao divine, para mim dá a entender que não deves precisar de fazer isso. Provavelmente bastará chama-lo nas scripts de inicialização do PCMCIA Network.

    Isto é só uma opinião. Eu não tenho o programa instalado.

    JP :)

    Re:Divine (Pontos:1)
    por MacLeod em 08-05-01 23:16 GMT (#25)
    (Utilizador Info)
    Sim, supostamente devia-se corrê-lo num script do PCMCIA. Eu tive um pequeno problema com isso pq a minha placa era detectada apenas depois de ele correr os scripts, então optei por pôr o divine a correr no rc.local. E não precisei de nada de por o setuid root.
    O Linuxconf podia ajudar... (Pontos:1, Informativo)
    por Anonimo Cobarde em 08-05-01 2:10 GMT (#18)
    Cumprimentos

    Não é propriamente automático, mas penso que é importante notar, para aqueles que não o conhecem, que o Linuxconf pode ser usado para configurar esse tipo de parâmetros.

    Como podem ser definidas várias configurações diferentes, poderia ter uma configuração para cada rede, e seleccionar uma delas quando necessitasse, nomeadamente quando inicia o sistema, através de um menu.

    Do manual do Linuxconf:

    Do you have a notebook computer?

    Have you ever wished to have one set of configuration files: one for the office, one for the home and yet another one for a customer's site? Would you like to be able to switch at will between these configurations, even at boot time?

    Yet, you want to be able to share some aspects of the system configuration in all three locations.

    Well, if you answer yes to any of those question, then System profile versioning is for you.

    Cordialmente,
    Sérgio Araújo

    alternativas (Pontos:0, Informativo)
    por Anonimo Cobarde em 08-05-01 21:17 GMT (#23)
    penso que ja foi tudo dito...
    os pings,ARP requests,eth0:0 sao as melhores solucoes, seguidos do menu de escolha manual

    o que eu vou acrescentar e' um truque que me ensinaram para o windows (que nao interessa para o caso) que muitos ja' sabem, mas muitos podem nao saber...
    eu ainda nao o testei, logo nao tenho a certeza se funciona (principalmente que gateway final ele usa, agradecia comentarios)

    nos windows configurando o gateway com o proprio IP da maquina ela propria escolhe a rede que deve seguir, logo neste caso funcionaria nos dois...

    o proxy poderia ser configurado pelo WPAD

    err... (Pontos:1)
    por BlueNote em 08-05-01 22:03 GMT (#24)
    (Utilizador Info)
    ... para variar do dhcp que tal o bootp? (*grin*)

     

     

    [ Topo | Sugerir artigo | Artigos anteriores | Sondagens passadas | FAQ | Editores | Preferências | Contacto ]