Od jednego z czytelników dostałem wczoraj prośbę o pomoc – jego VPS (akurat w DigitalOcean, założony z mojego linka partnerskiego) zaczął się dziwnie zachowywać. Niby wszystko działa, ale np. operacja aktualizacji systemu trwa strasznie długo, tzn. system jakby „długo myślał” przed połączeniem z każdym adresem, który dodatkowo wygląda dość dziwnie.

Od razu skojarzyłem to z protokołem IPv6, który w końcu zapewne całkowicie wyeliminuje IPv4, ale na razie mniej doświadczonym potrafi sprawić więcej problemów, niż teoretycznie pożytku z niego, dlatego jako doraźne rozwiązanie zaproponowałem tymczasowe wyłączenie IPv6, co rozwiązało problem…

Wyłączamy IPv6 w systemie Debian

Przed IPv6 raczej nie ma ucieczki, i prędzej czy później każdy z Was będzie musiał go na swojej maszynie włączyć/skonfigurować (może kiedyś napiszę jakiś poradnik na ten temat), ale mimo upływu lat są sytuacje – jak opisana powyżej, że może zajść potrzeba wyłączenia wsparcia dla tego protokołu.

Najprościej jest usunąć (lub zakomentować) linijki odpowiedzialne za obsługę IPv6 dla danego interfejsu sieciowego:

sudo nano /etc/network/interfaces

I np. dla podstawowej karty sieciowej (eth0) prawdopodobnie znajdziemy tam zapis w stylu:

iface eth0 inet6 static
        address ABCD:ABCD:0000:1234:0000:0000:1234:1234
        netmask 64
        gateway ABCD:ABCD:0000:1234:0000:0000:0000:0001
        autoconf 0
        dns-nameservers 2001:4860:4860::8844 2001:4860:4860::8888 8.8.8.8

Wystarczy skasować te linijki, lub – tak lepiej, bo w przyszłości wystarczy tylko odkomentować – zakomentować je, dodając przed każdą z nich znak #:

#iface eth0 inet6 static
#        address ABCD:ABCD:0000:1234:0000:0000:1234:1234
#        netmask 64
#        gateway ABCD:ABCD:0000:1234:0000:0000:0000:0001
#        autoconf 0
#        dns-nameservers 2001:4860:4860::8844 2001:4860:4860::8888 8.8.8.8

Na koniec restart sieci:

sudo /etc/init.d/networking restart

Jeśli okazałoby się, że to za mało, i nadal jest jakiś problem, to możecie podejść do sprawy globalnie, i wyłączyć całkowicie obsługę IPv6 w systemie:

sudo nano /etc/sysctl.conf

I gdzieś na samym dole dodajemy:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1

Na koniec jeszcze „wczytujemy do systemu” zmiany:

sudo sysctl -p

Z tego co kojarzę to są jeszcze inne metody, ale ja osobiście jeśli już z jakichś przyczyn muszę wyłączyć na serwerze IPv6, to korzystam z metod opisanych powyżej…

(!) Zgłoś błąd na stronie