Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【NAT64】[Jool] Linuxだけで実装するNAT64(概要編)

More than 3 years have passed since last update.

1. はじめに

去る2016.08.20に開催されましたiOSDC(iOS Developers conference)にて、
このカンファレンスで使えるWi-Fiネットワークの構築にCONBUメンバーとして参画し、
ありがたくもNAT64の実装に携わってきました。
聞くところによりますと、iOSアプリの審査は2016/06以降「IPv6 Ready」でなければpassできないそうで、アプリレイヤの方々が否応なくIPv6を意識しなければならないというある種そこそこ酷な状況かと思います。

参考: Supporting IPv6-only Networks
参考: Supporting IPv6 DNS64/NAT64 Networks

そのような中、IPv6-only Networkってどう作ればええねん!
ネットワーク上での挙動の試験なんて環境がががが
などという方もいらっしゃると思い、実装例を投稿したいと思います。

いや、単に自分がやったから残しとこうというだけなんですけどね。

なお、iOSとIPv6とのトピックはiOSDC関連まとめの中では
結構なヒット作となっておられます、以下もご覧いただけるとより楽しめるかと思います。
# IPv6に関するプログラミングアンチパターンが面白いんじゃよ。

■IPv6 Readyって何?NAT64/DNS64徹底解説
■上記の発表資料はこちら

2. DNS64/NAT64の概要

IPv6-only Networkとか言ってるものの、Internetの大半のWebsiteはIPv4のみ対応というのが実のところです。
IPv4とv6は全く別のプロトコルですんで、お互いに疎通性を持ちませんから
IPv6のみの世界からIPv4の世界へ通信するには一工夫必要になります。

その手段のひとつがDNS64/NAT64というものです。

その実態を簡単に言うと、
DNS64で行き先のIPv4アドレスの頭に決まった値を入れてIPv6アドレスを生成し
NAT64で先ほど生成したIPv6アドレス行き通信をProxyしてIPv4通信として本来の行き先へ到達させる
というものになります。
図: 上述のApple developer siteより抜粋

本記事ではこのうちNAT64部分を実装してくれる、
Joolについて書きます。

3. Joolの概要

JoolはLinuxのkernel moduleの一つです。
使ってみたところ、結果的にkernelのリビルドは行わなくてよく、
まず気軽に安価に構築できるNAT64コンポーネントと言えましょう。

ちなみにMac OSX単体でもNAT64環境を作ることはできるようです(上述の記事下の方)。

JoolはクライアントのIPv6通信を受けつけて、
IPv4通信をクライアントの代わりにProxy的に行います。
なので、Joolが挙動するLinuxにはInternet Reachabilityのある
IPv4アドレスを割り当てます。

クライアントが乗るIPv6 onlyネットワークは、
クライアントが投げるv6通信をJoolまでroutingしてやるように設定します。

Joolが稼働するマシンはIPv4でインターネットアクセスができればよいです。

4. つづく

文字ばっかりしかも長文になったので
設計・構築編は次の記事とさせてください。

onifinger
似非技術屋だったはずでは。。。何の因果か現在採用マネージャ。 -----log is below プログラミングできない | するのが苦手なインフラ屋ですが、 自在にプログラミングできることやヒトに憧れ続けています。 いつか「一応プログラミングできます」と胸を張って言える日を目指して。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away