O Debian Wheezy IPv6 não está configurado com o gancho post-up ifup

3

Recentemente, configuramos um servidor no Debian Wheezy Beta 3 (x86_64) que possui uma conexão IPv6 nativa.

Nós configuramos a interface eth0 para obter a configuração do IPv6 através de alguns comandos de hook de post-up em /etc/network/interfaces . O resultado é que, após a inicialização do sistema, há apenas IPv4 e um endereço IPv6 local de link configurado automaticamente na interface, como se o comando nunca tivesse sido executado.

Quando colocamos os comandos após a chamada para ifup -a dentro do script /etc/init.d/networking init, tudo funciona como esperado e temos uma interface totalmente configurada após a inicialização.

Esta é uma maneira bastante feia de configurar a interface. O que estamos fazendo de errado com os ganchos de post-up do ifup? Ou isso é um bug?

Atualização: Um fato adicional é que estou usando um servidor Dropbear SSH para permitir que eu desbloqueie meu sistema de arquivos raiz criptografado LUKS. O kernel do Linux é, portanto, dado um endereço IP através do bootloader GRUB. Isso pode significar que a configuração do IPv6 não foi feita porque o eth0 já está ativo. Em seguida, tentei colocar uma linha ifdown eth0 before ifup -a no script /etc/init.d/networking. Não mudou nada. Aqui está um exemplo de como foi:

ifdown eth0
if ifup -a $exclusions $verbose && ifup_hotplug $exclusions $verbose

Atualização: Eu configurei um pequeno script como gancho de post-up que configura a interface e grava a saída em um arquivo de log. O resultado foi que o arquivo de log nunca foi escrito, o que significa que o gancho de post-up não foi chamado.

A seção de /etc/network/interfaces se parece com isso (os endereços IP foram alterados):

allow-hotplug eth0
iface eth0 inet static
        address 1.2.3.1
        netmask 255.255.255.192
        network 1.2.3.0
        broadcast 1.2.3.63
        gateway 1.2.3.62
        dns-nameservers 8.8.8.8
        dns-search mydomain.tld
        post-up ip -6 addr add 2001:db8:100:3022::2 dev eth0
        post-up ip -6 route add fe80::1 dev eth0
        post-up ip -6 route add default via fe80::1 dev eth0

Eu também tentei desta forma alternativa:

auto eth0
iface eth0 inet static
        address 1.2.3.1
        netmask 255.255.255.192
        network 1.2.3.0
        broadcast 1.2.3.63
        gateway 1.2.3.62
        dns-nameservers 8.8.8.8
        dns-search mydomain.tld

iface eth0 inet6 static
        address 2001:db8:100:3022::2
        netmask 64
        gateway fe80::1

O que adicionamos a /etc/init.d/networking :

…
case "$1" in
start)
        process_options
        check_ifstate

        if [ "$CONFIGURE_INTERFACES" = no ]
        then
            log_action_msg "Not configuring network interfaces, see /etc/default/networking"
            exit 0
        fi
        set -f
        exclusions=$(process_exclusions)
        log_action_begin_msg "Configuring network interfaces"
        if ifup -a $exclusions $verbose && ifup_hotplug $exclusions $verbose
        then
            # Our additions
            ip -6 addr add 2001:db8:100:3022::2 dev eth0
            ip -6 route add fe80::1 dev eth0
            ip -6 route add default via fe80::1 dev eth0

            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;
…

Atualização : A saída de ip -6 address show eth0 após a inicialização é:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fe80::abcd:abcd:abcd:abc/64 scope link 
       valid_lft forever preferred_lft forever
    
por aef 03.11.2012 / 13:19

2 respostas

2

Eu tive o mesmo problema que a configuração do IPv6 falharia quando eu passaria o parâmetro ip para o kernel. O problema é que os scripts de rede tentam adicionar um endereço IP à interface eth0 que já está lá. Obviamente, isso falhará e, assim, a configuração adicional será interrompida.

A solução mais fácil foi simplesmente remover a parte IPv4 de /etc/network/interfaces , pois ela já está configurada através do parâmetro ip :

auto eth0
iface eth0 inet6 static
        address 2001:db8:100:3022::2
        netmask 64
        gateway fe80::1
    
por 14.04.2013 / 16:15
1

no debian wheezy eu tive que fazer algo bobo para fazê-lo funcionar .. desculpe sobre a formatação, eu realmente não entendo o layout deste site e é tarde.

      auto lo
      iface lo inet loopback
      allow-hotplug eth0
      auto eth0 eth0:0 eth0:1 eth0:2
      iface eth0 inet static
      address 66.xxx.xxx.101
      netmask 255.255.255.0
      gateway 66.xxx.xxx.1

      iface eth0:0 inet static
      address 173.xxx.xxx.6
      netmask 255.255.255.0

      iface eth0:1 inet static
      address 192.xxx.xxx.180
      netmask 255.255.xxx.0

      iface eth0 inet6 static
      address fe80::xxxx:xxxx:xxxx:f48e
      netmask 64
      gateway fe80::1

      iface eth0:0 inet6 static
      address 2600:xxx::f03c:xxx:xxx:f48e
      netmask 64

      iface eth0:1 inet6 static
      address 2600:xxx:xxx:007a::1
      netmask 64

      iface eth0:2 inet6 static
      address 2600:xxx:xxx:007a::2
      netmask 64

isso resultou no seguinte:

      eth0      Link encap:Ethernet  HWaddr bogus:mac
      inet addr:66.xxx.xxx.101  Bcast:66.xxx.xxx.255  Mask:255.255.255.0
      inet6 addr: 2600:xxx::f03c:xxx:xxx:f48e/64 Scope:Global
      inet6 addr: fe80::f03c:91ff:feae:f48e/64 Scope:Link
      inet6 addr: 2600:xxx:xxx:7a::2/64 Scope:Global
      inet6 addr: 2600:xxx:xxx:7a::1/64 Scope:Global
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:37908 errors:0 dropped:0 overruns:0 frame:0
      TX packets:30834 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:3201392 (3.0 MiB)  TX bytes:3735827 (3.5 MiB)

      eth0:0    Link encap:Ethernet  HWaddr bogus:mac
      inet addr:173.xxx.xxx.6  Bcast:173.xxx.xxx.255  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

      eth0:1    Link encap:Ethernet  HWaddr bogus:mac
      inet addr:192.xxx.xxx.180  Bcast:192.xxx.xxx.255  Mask:255.255.xxx.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

iproute2 deve suportar a declaração de todos estes (ipv4 pelo menos) sob eth0 ao invés de eth0: 0 ... etc mas isso não funcionou .. e mesmo que eu tenha declarado eth0: 0 etc para ipv6, todos mostraram sob a eth0, considerando que eles definitivamente não funcionaram quando declarados como eth0 especificamente.

    
por 17.02.2014 / 09:12