Hlavní navigace

Pozor na tentative IPv6

23. 12. 2011

Sdílet

Na blogu Spoofedpacket vyšel zajímavý zápisek o problémů s použitím IPv6 adresy těsně po jejím přiřazení k síťové kartě. Problém způsobuje detekce duplicitních adres (DAD), která je v IPv6 povinná. Během této detekce je IPv6 adresa označena příznakem tentative a aplikace ji dosud nemohou používat. To způsobuje problémy především ve spouštěcích skriptech, kdy se těsně po nastavení adresy spouští služby.

Autor blogu doporučuje nejjednodušší řešení – vložit do bootovací sekvence příkaz sleep. O něco sofistikovanější řešení je vestavěné ve spouštěcích skriptech distribuce Gentoo:

_iproute2_ipv6_tentative()
{
        # Only check tentative when we have a carrier.
        LC_ALL=C ip link show dev "${IFACE}" | grep -q "NO-CARRIER" && return 1
        LC_ALL=C ip addr show dev "${IFACE}" | \
                grep -q "^[[:space:]]*inet6 .* tentative"
}

iproute2_post_start()
{
        local n=5
…
        if _iproute2_ipv6_tentative; then
                ebegin "Waiting for IPv6 addresses"
                while [ $n -ge 0 ]; do
                        _iproute2_ipv6_tentative || break
                        sleep 1
                        n=$(($n - 1))
                done
                [ $n -ge 0 ]
                eend $?
        fi

        return 0
}

Tato zprávička byla zaslána čtenářem serveru Root.cz pomocí formuláře Přidat zprávičku. Děkujeme!

Našli jste v článku chybu?
  • Aktualita je stará, nové názory již nelze přidávat.
  • 23. 12. 2011 12:32

    pjoter (neregistrovaný)

    Loni se snazili bootovaci proces zrychlovat a ted se zacina trend otacet? Mam poruchu osobnosti, kdyz mi prijde reseni "sleep 1" jako megaprasarna? Kde ten svet speje...

  • 23. 12. 2011 15:32

    Sten (neregistrovaný)

    sleep 1 u paralelního bootu většinou nevadí, protože třeba Xka na síť nepotřebují čekat.

  • 26. 3. 2012 10:33

    Stan (neregistrovaný)

    Ano, řešení "sleep" je prasárna kterou bych se osobně styděl veřejně doporučit. Ptáte se kde? Já odpovídám: Tady! Nebo myslíte, že někde jinde?

Byl pro vás článek přínosný?

Autor zprávičky