Public IPv6s fail on KVM bridge with "No buffer space available"

Я уже задавал этот вопрос на IRC-каналах #networking и #freebsd IRC каналах на Freenode, но никто не смог ответить на мой вопрос и перенаправил меня сюда, так как, похоже, этот вопрос сложно решить.

У меня есть гипервизор Proxmox, на котором размещены LXC контейнеры и KVM. машины из Debian 9, Arch Linux и Windows. Все они мостом к гипервизору и стек IPv6 работает безупречно с публичными IP-адресами, предоставленными моим провайдером и направленными непосредственно на виртуальные машины.

Одна из моих ВМ представляет собой устройство брандмауэра OPNsense (основанное на FreeBSD 11.0-RELEASE-p8).

В отличие от других LXC/KVM, последняя не может пинговать никакие IPv6 машины за пределами тех, которые доступны непосредственно с моста. Как только я пытаюсь пинговать либо шлюз моего гипервизора (все еще в IPv6), либо любой другой дальний IPv6 хосты (например, google.com), я получаю следующее сообщение об ошибке:

[...]
ping6: sendmsg: No buffer space available
[...]

Пинг ВМ либо с моста, либо с машины, полностью вне инфраструктуры, не отвечает и не подключается (т.е. я запустил запустил sshd на 2222, но не смог подключиться).

Хост FreeBSD настроен следующим образом:

ifconfig vtnet0 /32
route add  -iface vtnet0
route add default 

ifconfig vtnet0 inet6  prefixlen 64
route add -inet6  -iface vtnet0
route add -inet6 default 

Обратите внимание, что все мои GW находятся вне моих IP-подсетей.

После применения этих строк маршруты, о которых сообщает netstat -rn, являются разумными для меня. Все в порядке.

Я точно знаю, что брандмауэр pf полностью отключен (pfctl -d). Я хочу убедиться, что он работает безупречно, прежде чем включать еще один уровень отказов. :)

Есть ли ошибка где-то в BSD IPv6 стеке, поскольку Linux не жалуется вообще? Это звучит странно, поскольку я думаю, что я не единственный в этой ситуации и не только у меня GW вне их IP диапазона.

Заранее спасибо за ваше время / помощь.

С уважением.

Спросил также в списке рассылки freebsd-net

0
17.05.2017, 00:44
1 ответ

После некоторых обсуждений с ребятами из компании, стоящей за OPNsense, я удалось решить мою проблему.

Мой дальний шлюз находился в /56. Даже если мой IPv6 не является /56, установка моего IPv6 с префиксом /56 вместо /64 исправила мою проблему.

Это связано с тем, что реализация IPv6 NDP во FreeBSD не может найти IPv6-адрес шлюза, который не считается прямым соседом.

-> Ссылка на тему в списке рассылки FreeBSD.

0
28.01.2020, 04:45

Теги

Похожие вопросы