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