Existe alguma maneira de forçar minha caixa do Linux a inicializar sempre com um endereço IP auto-atribuído?

7

Esta é talvez uma solicitação incomum: Estou tentando obter uma caixa Debian Linux para sempre dar a si mesma um endereço IP auto-atribuído (ou seja, 169.254.x.y) na inicialização. Em particular, eu quero fazer isso mesmo quando há um servidor DHCP presente na rede . Ou seja, não deve solicitar um endereço IP do servidor DHCP.

Pelo que vejo no texto "man interfaces", há uma opção para "manual" e uma opção para "dhcp". A atribuição manual não funcionará, pois preciso de várias caixas para trabalhar na mesma rede sem precisar de nenhuma configuração manual ... e "dhcp" faz o que eu quero, mas apenas se não houver um servidor DHCP na rede local. (Um requisito é que a funcionalidade dessas caixas não seja afetada pela presença ou ausência de um servidor DHCP).

Existe algum truque que eu possa usar para obter esse comportamento?

EDIT: Por "sem configuração manual", quero dizer que eu deveria ser capaz de levar esta caixa (sem cabeça) para qualquer LAN em qualquer lugar, conecte o cabo Ethernet e faça o que ele quiser. Eu não deveria ter que ssh para a caixa e editar arquivos para fazê-lo funcionar cada vez que é movido para uma LAN diferente.

    
por Jeremy Friesner 11.11.2010 / 02:30

5 respostas

8

Se você instalar o pacote avahi-autoipd e executá-lo com a opção --force-bind em um script personalizado init ou if-up.d, você sempre obterá um endereço de link local.

Você pode usar iface eth0 inet manual em seu arquivo interfaces (5), embora você precise editar /etc/network/if-up.d/avahi-autoipd para adicionar manual às linhas de método.

Há mais informações sobre avahi-autoipd no wiki do Avahi.

Pessoalmente, gostaria de editar /etc/network/if-up.d/avahi-autoipd para algo como:

--- avahi-autoipd       2010-08-04 04:26:49.000000000 +0800
+++ avahi-autoipd.1     2010-11-11 09:57:54.000000000 +0800
@@ -13,10 +13,13 @@
 esac

 case "$METHOD" in
-       static|dhcp|NetworkManager) ;;
+       static|dhcp|NetworkManager|linklocal) ;;
        *) exit 0
 esac

+if [ "$METHOD" == "linklocal" ]; then
+       /usr/sbin/avahi-autoipd --force-bind --daemonize --wait $IFACE 2> /dev/null
+fi

 if [ -x /bin/ip ]; then
        # route already present?

Você pode listar as interfaces como iface eth0 inet linklocal . As edições a serem feitas no script if-down.d são deixadas como um exercício para o leitor.

    
por 11.11.2010 / 02:48
4

Você pode ter perdido isso em man interfaces :

The ipv4ll Method
   This method uses avahi-autoipd to configure an interface with an IPv4 Link-Layer address
   (169.254.0.0/16  family). This method is also known as "APIPA" or "IPAC", and often col‐
   loquially referred to as "Zeroconf address".

   Options

          (No options)

Então, você teria uma seção interfaces como tal:

auto eth0
iface eth0 inet ipv4ll

Instale avahi-autoipd , e isso deve ser feito.

    
por 11.11.2010 / 07:05
2

Acho que o que você está procurando é zeroconf .

    
por 11.11.2010 / 02:54
0

Ninguém mencionou ainda, então vou apenas salientar que, se você tiver o controle de como a máquina inicializa, você pode editar a entrada padrão no menu.lst do GRUB (ou seja lá o que for chamado essa semana) para adicionar um " nodhcp "cheatcode para os argumentos dados ao kernel na inicialização. Isso deve, pelo menos, impedir que a máquina envie uma solicitação inicial de IP, embora por quanto tempo eu não possa dizer, já que só precisei disso ao testar CDs ao vivo (são todos IPs RFC1918 estáticos na minha LAN).

    
por 11.11.2010 / 04:51
0

Postagem para o benefício de outras pessoas Pesquisando por isso:

Se você estiver usando o NetworkManager, a partir de julho de 2008 inclui suporte para avahi-autoipd. Basta definir BOOTPROTO = autoip no arquivo / etc / sysconfig / network-scripts / ifcfg- * da interface. O NetworkManager irá ignorar a configuração DHCP da interface e irá diretamente para o endereçamento IPv4LL local via autoipd.

    
por 22.08.2014 / 17:57