VirtualBoxのゲストOSがipv6で待ち受けてる時、ホスト側にポートフォワードする

More than 1 year has passed since last update.

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番ポートに届きます。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.