Próba włączenia protokołu IPv6 powoduje błąd „Brak trasy do hosta”

8

Konfiguruję sieć z dwoma stosami na serwerze KVM przy użyciu statycznych adresów IPv4 i IPv6 dostarczonych przez mojego dostawcę.

Podaję wszystkie adresy, serwery nazw i bramy zgodnie z wymaganiami podczas instalacji Ubuntu. Następnie sprawdziłem /etc/network/interfacesplik i zauważyłem, że sekcja IPv6 była nieobecna ( ifconfigwykonanie potwierdziło to), więc dodałem odpowiednie linie. To jest ostateczny plik:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 151.236.18.86
        netmask 255.255.255.0
        network 151.236.18.0
        broadcast 151.236.18.255
        gateway 151.236.18.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 91.227.204.227 91.227.205.227
        dns-search mydomainname.com
iface eth0 inet6 static
        pre-up modprobe ipv6
        address 2001:b60:1000:151:236:18:86:0
        netmask 112
        gateway 2001:b60:1000::1
        dns-nameservers 2001:4860:4860::8888 2001:4860:4860::8844
        dns-search mydomainname.com

Następnie zrestartowałem sieć za pośrednictwem sudo /etc/init.d/networking stop && sudo /etc/init.d/networking restarti zauważyłem, że podczas pracy protokołu IPv4 wychodząca łączność IPv6 nie była dostępna (nie sprawdzałem jeszcze połączeń przychodzących).

ifconfigi ip -6 addrpokaż, że adres IPv6 jest rozpoznany:

eth0      Link encap:Ethernet  HWaddr 52:54:00:b1:27:87  
          inet addr:151.236.18.86  Bcast:151.236.18.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:feb1:2787/64 Scope:Link
          inet6 addr: 2001:b60:1000:151:236:18:86:0/112 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:16409 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1178 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1126656 (1.1 MB)  TX bytes:763658 (763.6 KB)

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 2001:b60:1000:151:236:18:86:0/112 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:feb1:2787/64 scope link 
       valid_lft forever preferred_lft forever

Przeciwnie, nie istnieje domyślna trasa dla stosu IPv6:

$ ip -6 route
2001:b60:1000:151:236:18:86:0/112 dev eth0  proto kernel  metric 256 
fe80::/64 dev eth0  proto kernel  metric 256 

Próba dodania brakującej trasy prowadzi do błędu „Brak trasy do hosta”:

$ sudo ip -6 route add default via 2001:b60:1000::1
RTNETLINK answers: No route to host

Co może być nie tak i jak mogę naprawić konfigurację sieci, aby umożliwić działanie stosu IPv6?

Alessandro Menti
źródło

Odpowiedzi:

6

Wewnątrz maszyny wirtualnej uruchom następujące polecenie:

ping6 ff02::2%eth0

Jest ff02::2to adres multiemisji IPv6 „wszystkie routery”. Router internetowy odpowie na polecenie ping za pomocą własnego adresu. Na przykład:

64 bytes from fe80::56e6:fcff:fef4:66f1: icmp_seq=1 ttl=64 time=0.347 ms

Następnie możesz dodać to jako gatewayadres.

iface eth0 inet6 static
        .....
        gateway fe80::56e6:fcff:fef4:66f1
        .....
Michael Hampton
źródło
Zrobiłem to, odpowiedziały trzy routery (nikt nie pasował do adresu bramy podanego przez mojego dostawcę); Wybrałem ten o najniższym opóźnieniu i zmieniłem konfigurację sieci. Teraz rozpoznawanie nazw działa, ale nie działa łączność IPv6 (wydałem ping6 -c 3 ipv6.google.com, DNS znalazł adres, ale nastąpiła 100% utrata pakietu). Jakieś pomysły?
Alessandro Menti,
Odpowiedziały trzy różne routery? Twój dostawca ma jeszcze dziwniejszą konfigurację, niż się spodziewaliśmy. W tym momencie mogę tylko zasugerować, abyś wypróbował każdy z nich i sprawdził, czy któryś z nich działa. Jeśli żaden z nich nie działa, musisz skontaktować się z dostawcą, aby poprosić go o naprawienie uszkodzonej sieci. :)
Michael Hampton
3

Maska sieci powinna mieć 64. W przypadku IPv6 każda sieć LAN ma zwykle wartość / 64. Wydaje mi się, że twój dostawca pozwala ci na użycie / 112 z tego / 64, ale powinieneś skonfigurować / 64 na interfejsie.

Sander Steffann
źródło
Skonfigurowałem ponownie stos IPv6, aby używać netblocka / 64, niestety problem utrzymuje się z tymi samymi objawami.
Alessandro Menti
Przepraszam, teraz widzę, że twój host jest w 2001: b60: 1000: 151 :: / 64, a twoja brama w 2001: b60: 1000: 0 :: / 64. CDLAN musiało wam błędną informację, czy ich sieć IPv6 jest pomieszane i / lub odbiegające od standardowej praktyki ...
Sander Steffann
1
To dziwne odchylenie jest niestety zbyt powszechne wśród dostawców VPS.
Michael Hampton
1

Okazało się, że długość maski sieci podana mi przez dostawcę była niepoprawna: właściwa była 48. Zmiana załatwiła sprawę.

Alessandro Menti
źródło