環境
- さくら のVPS
- DragonFly v5.0.2-RELEASE
準備
さくら VPS のコントロールパネルで IPv6 アドレスとゲートウェイを確認する。 自分の場合は特に申請してなくてもついていたのでデフォルトで付いている様子。(契約タイミングやデータセンターによるかもしれない) -この IPv6 アドレスは サフィックスに IPv4 アドレスが付いているパターンのものらしい [1]. - 追記)と思ったけど よーく見るとコンパネの記載にあるのは ドットではなくコロンのため、単純に同じ数字を用いた ipv6 アドレスという可能性のほうが高そう。
設定
vtnet0 インタフェースを用いる場合
/etc/rc.conf
# IPv6 ipv6_enable="YES" ipv6_network_interfaces="vtnet0" # あってもなくてもいい ipv6_defaultrouter="fe80::1%vtnet0" ipv6_ifconfig_vtnet0="inet6 (コントロールパネルに表示されるIPv6アドレス) prefixlen 64"
他の設定については /etc/defaults/rc.conf を確認。
簡単に各項目を説明。
key | default | description |
---|---|---|
ipv6_enable | NO | ipv6 を使う場合に YES ( FreeBSD 9 以降?では 使うべきではないらしい が DragonflyBSD では関係ない様子) |
ipv6_network_interfaces | auto | auto の場合は ifconfig -l の結果が入る。自分の場合は 別の設定名で インタフェースが必要なのでそれを使うという意図で明示している。 |
ipv6_defaultrouter | NO | コンパネで確認する ゲートウェイを入れる。 そのままだとなぜか通じないのでインタフェース名を入れると動く。( netstat -f inet6 -rn などを見ると %lo などがついている場合があったので) |
ipv6_ifconfig_vtnet0 | - | ifconfig で設定する内容 ipv6_ifconfig プレフィックス の設定はipv6_network_interfaces の値に入っている場合に使われる様子 |
設定後は ssh で繋いでる場合は 下記の様にするとおそらく良い [2]。 ipv6 設定を反映するためには /etc/rc.d/network_ipv6 を使ったほうが良さそうな気がしてとりあえず入れているがきちんと検証してない。
$ sudo /etc/rc.d/netif restart && sudo /etc/rc.d/routing restart && sudo /etc/rc.d/network_ipv6 restart
つながっているかどうかは 外から ping6 を実行するなどして確認 [3]。
発生した問題
ping6 や ssh で ipv6 アドレスを直接指定して動かした場合に動作せず、サーバ側のコンソールで下記のようなエラーが出る現象があった。
nd6_storelladdr: sdl_alen == 0 nd6_storelladdr: sdl_alen == 0 nd6_storelladdr: sdl_alen == 0
このエラーが出ている部分はこのあたり。 impossible と書いてあるけど…
/usr/src/sys/netinet6/nd6.c
2091 if (sdl->sdl_alen == 0) { 2092 /* this should be impossible, but we bark here for debugging */ 2093 kprintf("nd6_storelladdr: sdl_alen == 0\n"); 2094 m_freem(m); 2095 return (0); 2096 }
自分の場合の原因は、ipv6 アドレスの設定部分だった様子。 記事によっては ifconfig_vtnet0_ipv6 のような ifconfig プレフィックスになっている場合があるが、 少なくとも自分の環境ではこれでは動作せず、上記のような謎エラーが表示される。
ipv6 を prefix とするような設定にするとたぶん大丈夫。 このあたりは /etc/network.subr 内 network6_interface_setup 関数で呼ばれている様子なので詳しい挙動を見たい場合はこのあたりを参考に。
参考文献
- [1] IPv4アドレスを含むIPv6アドレス表記:Geekなぺーじ
- [2] FreeBSD: How To Start / Stop / Restart Network and Routing Services - nixCraft
- [3] Network Troubleshooting Tools, IPv4 and IPv6
- IPv6アドレスの設定方法 – さくらのサポート情報
- さくらのVPS で IPv4 over IPv6ルータの構築
- https://www.freebsd.org/doc/handbook/network-ipv6.html
- https://www.dragonflybsd.org/~labthug/handbook/firewalls.html