皮肉なことに、フレッツ光プレミアム、v6アプリ及びフレッツドットネットいずれかを契約していると、手元にIPv6がくるようになった。これは、地域IP網内ではルーティングされているため、NATという制約が受けない。そこで、これに注目し、Windows XPを用い、IPv6で通信する方法を紹介したい。
Windows XPでは、netstat -an としたところで、3389番ポート(リモートデスクトップ)はIPv4でしかlistenしていない。そこで、netsh コマンドにあるportproxy機能を用いてやることにし、IPv6でアクセスしてきたのを IPv4のlocalhost:3389 にproxyとして動作させ接続してやることにより行う。
netsh interface portproxy add v6tov4 listenport=3389 connectaddress=127.0.0.1 connectport=3389 listenaddress=* protocol=tcp
上記のコマンドでIPv6:3389に接続してきたら、127.0.0.1:3389へ接続してやる事が出来る。portproxy add 「v6ov4」「v6tov6」「v4tov6」 を使用するに当たり、「IPv6 Helper Service」のサービスが上がっている必要がある。
正常にポートプロキシのパラメータが入っているか確認するには、以下のコマンドを実行し、以下のような結果になっていれば良い。
netsh interface portproxy show all --- IPv6 をリッスンする: IPv4 に接続する: Address Port Address Port --------------- ---------- --------------- ---------- * 3389 127.0.0.1 3389
定義が不要になり消す場合は、
netsh interface portproxy reset 若しくは netsh interface portproxy del v6tov4 listenport=3389
としてやれば良い。resetは定義されているのを全て削除されるので要注意。
netsh について詳しい解説は、
Microsoft TechNet インターフェイス Portproxy の為のNetsh コマンドというのがあるのでそちらを参照していただきたい。
これで、ホスト側の準備が終わったので、IPアドレスを控えておこう。
WindowsXPに付属するmstsc.exe(ターミナルサービスクライアント)はIPv6に対応していないので、
- WindowsVista(リモートデスクトップ6.0)の環境から接続する
- WindowsVista(リモートデスクトップ6.0)から必要なファイルを用意する
- portproxyを使用して、逆にv4で繋ぐとv6でアクセスしに行く仕掛けを作る
となる。一番簡単なのは、WindowsVistaを用意する、だが、そう簡単にはいかないだろう。
そこで、再度portproxyを使用することにする。基本的なやり方はホスト側の準備と同じだ。
次のように実行するだけでよい。
netsh interface portproxy add v4tov6 listenport=13389 connectaddress=[ipv6address] connectport=3389 listenaddress=* protocol=tcp
[ipv6address]の部分は環境に応じて変更しよう。listenportは13389となっているのは、リモートデスクトップ機能が有効になっていると、既にポートが使用されているため、わざと違うポートに変更してある。
準備が整ったら、127.0.0.1:13389 と接続するだけで良い。
尚、リモートデスクトップ6.0からは、直接IPv6で接続できるので、リモートデスクトップ6.0(Vista等から)から調達し、接続してみたところ以下のようになった。