Obsługa IPv6 w systemach Linux
Sprawdzenie /proc/sys/net/ipv6/conf/*/disable_ipv6
Wstęp
Obsługa IPv6 w systemach Linux pojawiła się w kernelu 2.4 (rok 2001). Do wersji kernela 2.4.2 implementacja IPv6 była oznaczona jako eksperymentalna. Obecnie każda dystrybucja Linuxa posiada obsługę IPv6, która jest również domyślnie włączona.
Przed przystąpieniem do konfiguracji usług i aplikacji w środowisku IPv6, należy sprawdzić czy system operacyjny posiada włączoną obsługę IPv6. Bez tego jakakolwiek komunikacja za pomocą tego protokołu będzie niemożliwa. Można to zrobić na 3 sposoby.
Sprwadzenie poleceniem ping6
W linii polceń należy wpisać:
ping6 ::1
Gdy obsługa IPv6 jest włączona, polecenie ping zwróci odpowiedzi. W przeciwnym wypadku pojawi się komunikat:
connect: Network is unreachable
Sprawdzenie /proc/net/if_net6
W linii poleceń należy wpisać:
cat /proc/net/if_inet6
W rezultacie powinny pojawić się wszystkie interfejsy sieciowe oraz ich adresy IPv6. Jeśli plik jest pusty oznacza, że system nie ma włączonego wsparcia IPv6.
Sprawdzenie /proc/sys/net/ipv6/conf/*/disable_ipv6
W lokalizacji /proc/sys/net/ipv6/conf znajdują się konfiguracje IPv6 poszczególnych interfejsów sieciowych (np. lo, eth0, eth1). Poza interfejsami sieciowymi jest również zbiorcza konfiguracja dla wszystkich interfejsów sieciowych w katalogu "all". Natomiast w katalogu "default" znajduje się wyjściowa konfiguracja używana podczas tworzenia nowych intefejsów.
Aby sprawdzić czy wszystkie interfejsy posiadają włączoną obsługę IPv6, w linii poleceń należy wpisać:
cat /proc/sys/net/ipv6/conf/*/disable_ipv6
Jako rezultat powinny być zwrócone same zera (liczba wyników to liczba interfejsów sieciowych + 2). Gdy gdzieś pojawi się wartość 1 należy zlokalizować, w którym katalogu znajduje się plik disable_ipv6 z wartością 1. Można to zrobić w ten sposób:
for i in `ls /proc/sys/net/ipv6/conf`; do echo -en "$it"; cat /proc/sys/net/ipv6/conf/$i/disable_ipv6; done
Oto przykładowy wynik:
all 0
default 0
eth0 0
eth1 0
eth2 0
lo 1
Tam gdzie znaleziono wartość 1 należy przekazać wartość 0. Najlepiej tak:
echo 0 > /proc/sys/net/ipv6/conf/lo/disable_ipv6