Ваша вторая ссылка на ошибку сервера описывает то, что требуется. Префикс маршрутизации для вас, локальный маршрут на этом хосте и разрешение нелокального IP-адреса в сокете, также известном как IP_FREEBIND. EADDRNOTAVAIL означает, что третий шаг не завершен.
Убедитесь, что ваш маршрутизируемый префикс и локальный маршрут работают, пропинговав IP-адрес из другой сети IPv6.
В Linux разрешите привязку к другим IP-адресам, создав /etc/sysctl.d/freebind.conf
содержащий
net.ipv4.ip_nonlocal_bind = 1
net.ipv6.ip_nonlocal_bind = 1
Приложения должны привязываться к желаемому IP-адресу. В противном случае, если он не указан, при обычном выборе исходного адреса будет выбран некоторый локальный IP-адрес, назначенный интерфейсу.Также возможно установить параметр IP_FREEBIND на уровне сокета.
Обратите внимание, что даже без этого трюка с маршрутизируемым префиксом хосту может быть назначено большое количество IP-адресов. Возможно, несколько тысяч, прежде чем обнаружение соседей станет проблемой.
Подсети IPv6 должны иметь размер /64. Стандартизация идентификатора интерфейса нижней половины, агрегация верхней половины для маршрутизации. В качестве маршрутизатора этот хост может по-прежнему маршрутизироваться через /48, но ему нужен только /64 на петлевом маршруте к самому себе.
Количество IP-адресов не имеет значения, так как 2^64 уже фактически неограничены по размеру. Совершенно нормально использовать только один или два / 64 из / 48, оставив место в плане адресов для других вещей.