O principal problema foi que o ipv6 não foi iniciado apesar da interface estar ativa.
Ao navegar, houve uma sugestão para iniciar o módulo ipv6 durante a inicialização, editando o /etc/modules
.
Outra solução é supostamente habilitar o inactive-mode
na configuração do dibbler /etc/dibbler/client.conf
Eu queria fazer isso apenas no script do upstart, então aqui está o arquivo .conf
que testei e parece estar funcionando:
# dibbler-client
#
# The dibbler dhcpv6 client
description "dibbler-client"
start on (started network-interface
or started network-manager
or started networking)
stop on runlevel [!2345]
pre-start script
test -x /usr/sbin/dibbler-client || { stop; exit 0; }
test -c /dev/null || { stop; exit 0; }
TIMEOUT=50 #5 second timeout - eatch iteration sleeps for 1/10th of a second
LOG_FILE=/tmp/dibbler_upstart.log
until [ $TIMEOUT -eq 0 ]; do
if ip addr show dev eth0 | grep -e 'inet6.*link.$'; then
echo "Detected inet6 link-local, exiting" >> $LOG_FILE
ip addr show dev eth0 >> $LOG_FILE
exit 0;
fi
TIMEOUT=$((TIMEOUT-1))
sleep .1
done
echo "Timeout waiting for IP address" >> $LOG_FILE
exit 1;
end script
exec /usr/sbin/dibbler-client start 2>&1 > /dev/null
Se alguém souber como detectar o status do ipv6 com eventos que seriam uma solução mais limpa.