Попытка включить IPv6 приводит к ошибке «Нет маршрута к хосту»

8

Я настраиваю сеть с двумя стеками на сервере KVM, используя статические адреса IPv4 и IPv6, предоставленные моим провайдером.

Я вводю все адреса, серверы имен и шлюзы, как требуется при установке Ubuntu. После этого я проверил /etc/network/interfacesфайл и заметил, что раздел IPv6 отсутствует ( ifconfigвыполнение подтвердило это), поэтому я добавил соответствующие строки. Это окончательный файл:

# 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

Затем я возобновил работу через сеть sudo /etc/init.d/networking stop && sudo /etc/init.d/networking restartи заметил, что во время работы IPv4 исходящее подключение IPv6 было недоступно (я еще не проверял входящее подключение).

ifconfigи ip -6 addrпоказать, что IPv6-адрес распознан:

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

Напротив, для стека 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 

Попытка добавить отсутствующий маршрут приводит к ошибке «Нет маршрута к хосту»:

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

Что может быть не так, и как я могу исправить конфигурацию сети, чтобы я мог заставить работать стек IPv6?

Алессандро Менти
источник

Ответы:

6

Внутри вашей виртуальной машины запустите следующее:

ping6 ff02::2%eth0

Это ff02::2адрес многоадресной рассылки IPv6 «все маршрутизаторы». Маршрутизатор на линии связи ответит на эхо-запрос своим собственным адресом. Например:

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

Затем вы можете добавить это в качестве gatewayадреса.

iface eth0 inet6 static
        .....
        gateway fe80::56e6:fcff:fef4:66f1
        .....
Майкл Хэмптон
источник
Я сделал это, три маршрутизатора ответили (никто не соответствовал адресу шлюза, который мне дал мой провайдер); Я выбрал тот, у которого самая низкая задержка, и изменил конфигурацию сети. Теперь разрешение имен работает, а подключение к IPv6 - нет (я выдал ping6 -c 3 ipv6.google.com, DNS нашел адрес, но потеря пакета составила 100%). Любые идеи?
Алессандро Менти
Три разных роутера ответили? У вашего провайдера еще более странные настройки, чем мы предполагали. На данный момент я могу только предложить вам попробовать каждый из них, и посмотреть, работает ли один из них. Если ни один из них не работает, вам нужно будет связаться с провайдером, чтобы попросить его исправить неисправную сеть. :)
Майкл Хэмптон
3

Ваша маска сети должна быть 64. В IPv6 каждая ЛВС обычно имеет значение / 64. Я полагаю, ваш провайдер позволяет вам использовать / 112 из этого / 64, но вы должны настроить / 64 на интерфейсе.

Сандер Штеффанн
источник
Я перенастроил стек IPv6 для использования сетевого блока / 64, но, к сожалению, проблема сохраняется с теми же симптомами.
Алессандро Менти
Извините, теперь я вижу, что ваш хост находится в 2001 году: b60: 1000: 151 :: / 64, а ваш шлюз в 2001 году: b60: 1000: 0 :: / 64. CDLAN, должно быть, дал вам неверную информацию, или их сеть IPv6 испорчена и / или отклоняется от стандартной практики ...
Сандер Штеффанн
1
Это странное отклонение, к сожалению, слишком распространено среди провайдеров VPS.
Майкл Хэмптон
1

Оказалось, что длина маски сети, предоставленная мне провайдером, была неправильной: правильная была 48. Изменение этого сделало свое дело.

Алессандро Менти
источник