スキップしてメイン コンテンツに移動

DNS64/NAT64してみた


NAT64を構成する

DS-Liteでデュアルスタック快適環境を実現したはいいのですが、両方管理するのがいい加減面倒になりました。
時代も時代ですのでいっちょDNS64/NAT64でIPv6オンリーをしてみたらどうかと思いやってみました。

ネットワーク構成

ネットワークは右図のようになっています。
家庭用レベルで見るとやたら複雑です。
しかしクライアントはIPv6だけでいけるからシンプルになってます。

IPv6側

IPv6側のアドレスはシンプルにルーターからRA+DHCPv6で配られます。自分の環境はひかり電話ルーターなのでDHCP-PDを使って再分配しています。
VyOSがDHCP-PDをサポートしてないのでここではSeilを使用しました。

IPv4側

ダミーのアドレス(64:ff9b::/96)をNAT64に流してプライベートなIPv4に変換します。
その後のIPv4パケットをDS-Liteのトンネリングしてインターネットへ。

NAT64

今回の目玉。Ubuntu 1604 + Joolでやってみました。
導入はこちらの方が非常に分かりやすく書かれていたのでほぼ悩むことなく導入できました。感謝です。
導入後、自動起動させるために以下の作業を追加で行っています。
  1. /etc/modulesに一行追加
    echo "jool" >> /etc/modules
  2. /etc/modprobe.d/にjool.confを追加
    echo "options jool pool6=64:ff9b::/96 pool4=(ローカルIPv4アドレス)" > /etc/modprobe.d/jool.conf

DNS64

最初はunboundで構築していたのですが、Google Public DNSがDNS64やってくれてるのでそっちを利用してみました。楽ちんです。

DNS64/NAT64によるIPv6オンリー環境は問題ない?

一般的なアプリは問題ないですね。問題が出たのはIPv4専用ソフトとP2Pでしょうか。仕組み上当然ですが。
特に難敵なのがSkype。IPv4専用でかつP2Pソフトという。
P2Pではノード情報をアドレスとして通信内に盛り込む関係上、ソフト側が対応してくれないとほぼ無理でしょうね。
SkypeはSkype for BusinessでIPv6対応してますが、これは単に両方のアドレスに対応しただけでDNS64/NAT64環境ではアウトだと思います。
後はJoolの変換コストをどこまで許容出来るかということですね。自分はそんなに気にならなかったのでしばらく運用してみるつもりです。
レスポンスが必要な場合はLANそのものはデュアルスタックにしておいて、必要な端末だけデュアルスタックで運用という逃げもありではないかと。

まとめ

実際の実装はHyper-V上で行ってるのでハード的に見たら普通のルーターと大差ないです。2~3年以内にこれがルーター一つで出来るものが出ないかなあ。マイナーすぎて売れないか。
SDNがメインになる時代とか来たらルーターは名ばかりの実際はVM実行マシンになるかもしれないですね。

コメント

このブログの人気の投稿

カスタムメイド3D2用プラグインを作りました

CM3D2用のプラグイン DeOutline / FaceToCam を制作 やっとCM3D2を遊べる感じになったので触ってみてます。
とあるところからHMDをお借りして感動していたところなのですが、現状でいくつか不満点が出たのでプラグインを作ってみました。
輪郭線除去プラグイン(VR対応) CM3D2.DeOutline.Plugin.dll 入れると輪郭線が消えます。それだけです。
CM3D2.OutlineSwitch.Plugin.dllの劣化版です。
違いは2点。
VR対応切り替えスイッチなしdownload いつでもこっち向いてプラグイン(VR対応) CM3D2.FaceToCamSwitcher.Plugin.dll キーを押すだけでメイドさんがいつでもこっちを向いてくれるプラグインです。
VRでは色々な視点で動かせるので必要なときこっち向いてくれるといいなあってことで作りました。
download
C#なので簡単にできていいですね。

VyOS 1.1.1とSoftEther VPN Serverで自宅VPN最速設定

VyOS 1.1.1とSoftEther VPN Serverで自宅VPN最速設定 あけましておめでとうございます。本年もよろしくお願いします。
のっけから濃い話題で2015を始めたいと思います。
個人用途でWindowsファイル共有(CIFS)をサクサク使いたい 以前VyOSでPPTPによるリモートアクセスVPNを構築したが、実際のところ操作が重く、もっさりで大変だった。
そこで他のプロトコルではどうかとアレコレ試してみたが却ってスループットは低下してしまった。堅牢性が上がっているので当然かもしれない。
しかし個人で考えれば、ハードなセキュリティよりもスループット、レスポンスに重点を置きたいと考えるのは当然だろう。
最終的に一番高速だったのはSoftEther VPN Serverだった。ただし、プロトコルはSoftEther、セッション数は32(最大)、UDP高速化機能という条件でのみ実現された。
今回はその方法を紹介したいと思う。
VPNのスループットを上げるには VPNのスループットを特殊なネットワーク、機器とかに頼らず速くしたい。SoftEtherのプロトコルはマルチコネクションで接続することが可能で、最大32コネクション接続が可能。
一般的な光回線では1コネクション当たりのスループットが良くて200Mbps程度だと思う。しかし、マルチとなると一気に帯域が太くなる。32コネクションを1つのVPNトンネルとして形成するので転送自体はかなり上がる。 VPNでWindowsファイル共有(CIFS)を快適に使うには 別の視点から見てみる。私のVPNでの使用主目的がファイル共有である。これがVPNととても相性が悪く、驚くほどの遅さになってしまうこともある。原因はSMBプロトコルにあって、過剰な通信を繰り返す事からそうなるようだ。(例えば、1つのExcelファイルを開くのに4000回通信を行っているらしい) WANを経由したら当然大きな遅延が発生する。帯域がどんなに太くても、Ackが返ってくるまではどうやっても待機にならざるを得ない。1つの通信を行う毎に遅延が大きく伸し掛かってくる。これがCIFSの速度が遅い理由だ。
この問題もSoftEtherで解決できる。UDP高速化機能を使用することで低遅延を実現できる。UDPでトンネリングを行うため、トンネル側の通信に3ハ…

プロバイダをオープンサーキットからIIJへ変更

プロバイダをオープンサーキットからIIJへ変更 VPN環境でIPv6の面白さを知ってしまったので、思い切ってプロバイダを変更してみた。 どうせならIPv4も快適にしたかったのでDS-LiteのあるIIJmioに加入することにした。 VyOSの設定などは別記事に。 速度比較 IIJのサービスにはインターネットへ接続する方法が3つ存在する。IPv4(PPPoE、DS-Lite)とIPv6(IPoE)となる。
今回は前プロバイダであるオープンサーキットとの比較を行うことで速度差がどれだけあるか調査してみた。
プロバイダ比較のため今回はIPv6の方は計測しない。 計測日は日曜日20:00前後。
計測方法 3種類の接続を行ったVyOS(VM)を用意し、接続した状態のままゲートウェイアドレスを変更した形で配置。 デフォルトゲートウェイを変更するだけでそれぞれの接続方式にアクセスする方法を採った。 オープンサーキット(PPPoE)radishで67Mbps/2Mbpsとなった。speedtestの方ではpingを計測し38ms。キャプチャミスにより下りが表示されていないが100Mbps前後だった。サーバー用途でガンガン帯域使っても怒られないプロバイダとしては十分いい数値だと思う。
IIJ(PPPoE)次にIIJ(PPPoE)。この時点で十分改善されている。オープンサーキットとは逆に上り帯域制限がかなりキツイ(15GB/日)のでこのくらい出てもらわないと困るのは確か。

IIJ(DS-Lite)最後にDS-Lite。ping値は変化ないが転送量が格段に増えた。ここまで差が出ると体感上でもハッキリ判るレベル。
その他詳細 DS-Liteは以下の制限が存在する。 ×専用機器が必要
×サーバーが立てられない
×オンラインゲームのポート開放が出来ない ただ、回避策がないわけでもない。
専用機器と言っても大したことをするわけでもないので、VyOSで簡単に実現できる。
サーバーやオンラインゲームに必要なポート開放はPPPoEとの併用でカバーできる。
しかしゲートウェイが2つ存在することになるのでどう運用するかという点でハードルが高くなる。
ちなみにNAT1段なのでSkpyeなどはポート開放しなくても動いた。(UDPホールパンチングは有効)
まとめ DS-Liteはやはり速かった。IPv6接…