1. はじめに
去る2016.08.20に開催されましたiOSDC(iOS Developers conference)にて、
このカンファレンスで使えるWi-Fiネットワークの構築にCONBUメンバーとして参画し、
ありがたくもNAT64の実装に携わってきました。
聞くところによりますと、(省略:前回記事をご覧ください)
概要編ではJoolというNAT64コンポーネントを採用したと述べました。
本記事ではJoolを構築し動かすまでを記載します。
Jool: https://jool.mx/en/index.html
なお、手順は公式ページのInstallationに概ね準拠しています。
また、iOSとIPv6とのトピックはiOSDC関連まとめの中では
結構なヒット作となっておられます、以下もご覧いただけるとより楽しめるかと思います。
IPv6に関するプログラミングアンチパターンが面白いんじゃよ。
■IPv6 Readyって何?NAT64/DNS64徹底解説
■上記の発表資料はこちら
2. 構築環境
items | version | notes |
---|---|---|
Linux OS | ubuntu 14.04.5 LTS | 母艦OS |
kernel release | 4.2.0-27-generic | kernel moduleなので明記 |
Jool | 3.4.4 | 2016/07時点latest |
git | 1.9.1 | Joolのcloneに |
ちなみに、dockerizeにも挑戦しましたが、
ubuntuのofficial docker imageのkernel versionに対応する
kernel headerを見つけきれずに断念しました。未熟未熟ゥ!
3. 設計
これを見つつ、Joolの役割を考えると
「DNS64で付与されたwell-known-prefix向けの通信をipv4に変換するGW」
として機能させればよいことがわかります。
well-known-prefixとは64:ff9b::/96になります。
dest IPが64:ff9b::/96の通信を吸い込んでIPv4にNATしてやるという挙動です。
そのため、以下の項目を設計します。
- クライアント通信受信用IPv6アドレス
- Joolのインターネットアクセス用IPv4アドレス
- 上記を踏まえNICは2つ必要
- IPv6通信用GW
- IPv4通信用GW
- 周辺の設計として64:ff9b::/96宛の通信をJool稼働マシンにrouting
4. 構築
大まかな構築項目は以下の3つです。
- 必要なパッケージのインストール
- Joolのインストール
- Jool ユーザスペースアプリのインストール
これに沿って進めていきます。
1. 必要なパッケージのインストール
-
OSのアップデート・アップグレード
セキュリティ対策的な感じでやっておきます。$ sudo apt-get update $ sudo apt-get upgrade
-
パッケージインストール
必要なパッケージは次の通りです。name way to use git Joolのcloneに dkms kernel moduleのインストールに利用 build-essential 公式準拠 linux-headers 公式準拠 autoconf ユーザスペースアプリインストールに必要 pkg-config 同上 libnl-3-dev 同上 インストールコマンドはこんな感じでババッと。
パッケージインストール$ sudo apt-get install git $ sudo apt-get install dkms $ sudo apt-get install build-essential $ sudo apt-get install linux-headers-$(uname -r) $ sudo apt-get install autoconf $ sudo apt-get install pkg-config $ sudo apt-get install libnl-3-dev
2. Joolのインストール
-
Joolの取得とインストール
ホームディレクトリにcloneしてしまってよいです。
そのあとはdkmsでインストールします。Joolのインストール$ cd $ git clone https://github.com/NICMx/Jool.git $ sudo dkms install Jool
3. Jool ユーザスペースアプリのインストール
-
ユーザスペースアプリとは?
Joolの起動状態やセッションテーブル等を確認するためのツール(コマンド群)です。
こう書いてあるので、直訳しただけ。 -
インストール
公式通りこういう感じで、サックリと
だと不親切すぎるので、ちょっと解説します。
git cloneしたフォルダ構成のうち、Jool/usr配下にユーザスペースアプリインストール用の資材が格納されています。
ですので、cd Jool/usrした後に以下コマンドでインストール。ユーザスペースアプリのインストール$ cd ~/Jool/usr $ ./autogen.sh $ ./configure $ make $ sudo make install
起動方法ですが、
$ sudo modprobe jool pool6=64:ff9b::/96 pool4=$YOUR_IPV4_ADDR
で起動します。
sudo make installしたので、root権限が必要です。
以下のコマンド・出力を得られれば、ユーザスペースアプリも正常に動いています。
ユーザスペースアプリも、sudo権限が必要なコマンドがあります。
$ sudo jool -s
~~ (中略) ~~
TCP:
---------------------------------
(empty)
UDP:
---------------------------------
(empty)
ICMP:
---------------------------------
(empty)
5. つづく
ここまではよかったんですが、さすがに色々チューニングしました。
運用ってほんとうに大事ですね。というわけで、
まじめにほんとうに大事な運用周りは次回記事で。