VirtualBoxの中のゲストOSがこんな感じでipv6で待ち受けている時
$ netstat -na
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::2000 :::* LISTEN
VirtualBoxのポートフォワーディング設定でこんな感じにしても、ウンともスンとも言ってくれませんでした。
かといって、Host IP/Guest IPにipv6は入れられない模様。
どうもVirtualBoxのGUIのポートフォワーディングだと、ipv6は通せない模様。
いろいろ調べるとコマンドラインで設定すればなんとかなりそうな感じも見つけたのだけど、いまいち設定法がピンとこなかったので断念。
ゲストOS内でipv4ソケットをipv6ソケットに転送するやり方を試してみました。
使ったのはsocat。
普通にapt-get等でも導入できるようだけど、手元の環境では諸事情あってソースからインストール。
インストールできたら、upstartの設定で
/etc/init/socat.conf
start on runlevel [2345]
stop on runlevel [!2345]
expect fork
respawn
exec socat TCP4-LISTEN:2001,fork TCP6:[::1]:2000 &
でもって
$ sudo initctl start socat
これでゲストOSの、ipv4の2001番への接続ががipv6の2000番に転送されるので、ホストOS側に戻って
こんな感じにしてやれば、ホストOSの2000番ポート叩けばゲストOSのipv6 2000番ポートに届きます。