OpenBSD6.4をインストールしたVPSでIPv6を使う際の注意

TL;DR

OpenBSD 6.4をインストールしたVPSでIPv6のデフォルトゲートウェイに接続できない時は、 SIIを無効にすること。例えば、さくらインターネットの場合、hostname.vio0は以下のようになる。

inet  203.0.113.23 255.255.254.0
inet6 autoconf -autoconfprivacy -soii
inet6 alias 2001:db8:102:3013:203:0:113:23 64
up
!route -nq add -inet6 default fe80::1%vio0

OpenBSDをインストールしたさくらVPSのインスタンスでIPv6の デフォルトゲートウェイと通信できなくてハマった。 なんとか解決できたのでメモ。

さくらVPSは、グローバルIPv6のIPを一つくれる。 そのゲートウェイはfe80::1である。

OpenBSD 6.3あたりから、Semantically Opaque Interface Identifiers (SOIIs) がデフォルトで有効になっている。 SOIIとはSLAACアドレス(自動で設定されるリンクローカルアドレス)のインターフェース識別子(IID)にMACアドレスを使わずに、 プレフィックスも使ってIIDを生成することで、リングローカルアドレスを生成するというもの(RFC7217)。

以前は、MACアドレスだけからリンクローカルアドレスを生成していた(Modified EUI-64)ため、プレフィックスが変化しても リンクローカルアドレスから容易にMACアドレスが特定でき、プライバシーやセキュリティの問題があった。 OpenBSDはそれをいやがって、SOIIをデフォルトで有効にしたのだろう。

一方、さくらのゲートウェイは、IIDをMACアドレスから生成する昔ながらのModified EUI-64を前提にフィルタリングしている と思われる。そのため、SOIIで生成されたアドレスはフィルターされIPv6でインターネットに接続できなかったのだろう。

SIIを無効にするには、上記の例のように、ifconfigのオプションに、-soiiをつける。詳細は、ifconfigのmanページを参照のこと。