私はFreenodeの#networkingと#freebsd IRCチャンネルでこの質問をしましたが、問題を解決するのは難しいようです。
Debian 9、Arch Linux、WindowsのLXCコンテナとKVMシステムをホストするProxmoxハイパーバイザーがあります。これらはすべてハイパーバイザーに接続され、IPv6スタックはISPが提供するパブリックIPアドレスと完全に機能し、VMに直接ルーティングされます。
私が持っている仮想マシンの1つはOPNsenseファイアウォールデバイス(FreeBSD 11.0-RELEASE-p8ベース)です。
ブリッジから直接アクセスできるシステム以外のIPv6システムをpingできない他のLXC / KVMとは対照的です。ハイパーバイザーのゲートウェイ(まだIPv6にあります)または他のリモートIPv6ホスト(google.comなど)に対してpingを試みると、次のエラーメッセージが表示されます。
[...]
ping6: sendmsg: No buffer space available
[...]
- 当初、問題はVirtIOドライバ(FreeBSDにバンドルされています)の問題によるものだと思いました。そのため、エミュレートされたIntel E1000ネットワークカードに切り替えましたが、問題は解決しません。 (もうVirtIOに戻ってきました)。
- netstat -mはバッファが空であると報告するため、問題が発生する場所でもありません。
- インターフェイスをオフにして再びオンまたは再起動しても問題は解決しません。。
- OPNsenseのオーバーライドを避けるために、新しいFreeBSDとOpenBSDのインストールでテストしましたが、問題は解決しません。
ブリッジまたはインフラストラクチャの外側のマシンでVMをpingすると、応答せずに接続はありません(つまり、2222でsshdを起動しましたが接続できません)。
FreeBSDホストの設定は次のとおりです。
ifconfig vtnet0 <ipv4>/32
route add <gw ipv4> -iface vtnet0
route add default <gw ipv4>
ifconfig vtnet0 inet6 <ipv6> prefixlen 64
route add -inet6 <gw ipv6> -iface vtnet0
route add -inet6 default <gw ipv6>
私のすべてのGWは私のIPサブネットの外にあります。
この行を適用すると、netstat -rnによって報告されたパスがわかります。間違ったことはない。
正確に言うと、pfファイアウォールを完全に無効にしました(pfctl -d)。別のレベルの障害が発生する前に完全に機能していることを確認したいと思います。 :)
Linuxがまったく文句を言わないBSD IPv6スタックにバグがありますか?私がこの状況にある唯一の人でもなく、GWがIP範囲外の唯一の人でもないと思うので、奇妙に聞こえます。
時間/助けてくれてありがとう。
挨拶。
答え1
OPNsenseをサポートする会社の人々といくつかの議論をした後、問題を解決することができました。
私のリモートゲートウェイは/ 56にあります。私のIPv6が/ 56でない場合でも、IPv6を/ 64の代わりに/ 56プレフィックスに設定すると問題は解決します。
これは、FreeBSD の IPv6 NDP 実装が直接ネイバーと見なされないゲートウェイ IPv6 アドレスを見つけることができないためです。