Назад | Перейти на главную страницу

IPv6 работает только после пинга в поле маршрутизации

Ситуация:

В нашей сети есть маршрутизатор только с ipv4, и каждый компьютер подключен к нему (Wi-Fi или кабель). К этому роутеру также подключен сервер с ipv4 и ipv6. Сервер был настроен с туннельными брокерами для туннелирования 6to4 и radvd. Клиенты в сети имеют правильный префикс и могут пинговать друг друга через ipv6. Но они не могут пинговать в Интернет, пока не пингуют первый сервер (тот, у которого есть туннель). Я где-то обнаружил, что это проблема с icmp, но не смог найти решения.

Проблема в том, что роутер только ipv4?

Пинг попробовать:

standa@standa-laptop:~$ ping6 ipv6.google.com
PING ipv6.google.com(2a00:1450:8007::69) 56 data bytes
^C
--- ipv6.google.com ping statistics ---
29 packets transmitted, 0 received, 100% packet loss, time 28223ms

standa@standa-laptop:~$ ping6 2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478
PING 2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478(2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478) 56 data bytes
64 bytes from 2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478: icmp_seq=1 ttl=64 time=3.55 ms
64 bytes from 2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478: icmp_seq=2 ttl=64 time=0.311 ms
64 bytes from 2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478: icmp_seq=3 ttl=64 time=0.269 ms
64 bytes from 2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478: icmp_seq=4 ttl=64 time=0.292 ms
^C
--- 2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.269/1.107/3.559/1.415 ms
standa@standa-laptop:~$ ping6 ipv6.google.com
PING ipv6.google.com(2a00:1450:8007::69) 56 data bytes
64 bytes from 2a00:1450:8007::69: icmp_seq=1 ttl=57 time=20.7 ms
64 bytes from 2a00:1450:8007::69: icmp_seq=2 ttl=57 time=20.2 ms
64 bytes from 2a00:1450:8007::69: icmp_seq=3 ttl=57 time=23.4 ms
^C
--- ipv6.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 20.267/21.479/23.413/1.392 ms

ОБНОВЛЕНИЕ: конфигурация Radvd

interface eth0 {
    AdvSendAdvert on;
    MinRtrAdvInterval 3; 
    MaxRtrAdvInterval 10;
    AdvLinkMTU   1280;
    prefix 2001:470:1f0a:1511:1::/64 {
    AdvOnLink on;
    AdvAutonomous on;
    AdvRouterAddr on;
    };
};

ОБНОВЛЕНИЕ 2: Без подключения

ip -6 neigh
fe80::21c:c0ff:fe2b:6478 dev wlan1 lladdr 00:1c:c0:2b:64:78 router REACHABLE

С подключением (после пинга)

fe80::21c:c0ff:fe2b:6478 dev wlan1 lladdr 00:1c:c0:2b:64:78 router STALE
2001:470:1f0a:1511::1 dev wlan1 lladdr 00:1c:c0:2b:64:78 router REACHABLE

При пинге происходит запрос соседа:

fe80::21c:c0ff:fe2b:6478 2001:470:1f0a:1511:21c:bfff:fe60:b389 ICMPv6 Neighbor solicitation
2001:470:1f0a:1511:21c:bfff:fe60:b389 fe80::21c:c0ff:fe2b:6478 ICMPv6 Neighbor advertisement

Назначаются ли префиксы клиентов вручную? Обычно они должны автоматически найти маршрутизатор через протокол обнаружения соседей (во время которого маршрутизатор рассылает рекламные объявления и автоматически назначает им префиксы), но похоже, что этот шаг может отсутствовать.

Кроме того, объявление маршрутизатора должно включать его адрес канального уровня в качестве опции в заголовке ICMP объявления маршрутизатора. Если это поле отсутствует, клиент не будет знать, как отправлять данные на маршрутизатор. Похоже, это могло быть так. Клиент не знает, как связаться с маршрутизатором, пока он не отправит сообщение Neighbor Discovery и не получит Neighbor Advertisement от маршрутизатора (с флагом маршрутизатора в наборе сообщений ICMP).

Чтобы включить адрес исходного ссылочного уровня в рекламу вашего маршрутизатора, добавьте следующее в свой radvd.conf

AdvSourceLLAddress on;

Я думаю, что ваш radvd.conf в порядке, хотя не помешало бы сравнить ip -6 addr; ip -6 route на клиенте до и после пинга. Включено ли какое-то отслеживание соединения на туннельном блоке или на маршрутизаторе? Достаточно ли ping6 из туннельного бокса? Брандмауэр с отслеживанием состояния может объяснить, почему пакеты возвращаются только после успешного пинга.

Убедитесь, что ваши клиенты используют IPv6-адрес сервера в качестве шлюза / маршрутизатора. Как указал Джефф, это может быть назначено автоматически (проверьте конфигурацию radvd) или вручную, в этом случае проверьте конфигурацию клиентов.