ここまで来ているIPv6の実装
− KAMEでIPv6しよう −

(Software Design 1998年11月号)

梅本 肇 UMEMOTO Hajimu ● ume@calm.imasy.org

 最近,IPv6というキーワードがあちこちで聞こえるようになってきました. 一般に入手できる実装もいくつか出てきており,その気になれば,すぐにでも IPv6で遊べるような状況になってきています.しかし,実体はあまり知られて おらず,使ってみたくても手が出しにくいといったところではないでしょうか. ここでは,簡単にIPv6について説明し,IPv6の実装のひとつであるKAMEを例に してIPv6の世界をご紹介します.

IPv6とは

 現在広く利用されているIPはバージョン4 (IPv4)で,32ビットのアドレス空 間を持っています.約43億の識別ができますが,実際にはそのその全てが使用 できるわけではありません.このまま行くと,21世紀の初めには枯渇してしま うという予想もあります。この問題を解決しようと提案されたのがIPv6です. IPv6の基本的なアーキテクチャはIPv4のものをそのまま引き継いでいます.こ れは,「もしIPv4に大きな欠点があったとしたら,今日のようなインターネッ トの発展はなかっただろう」という考えに基づいています.加えて,長年の IPv4の運用経験に基づいて,いくつかの改良が加えられました.

アドレス空間の拡張

 IPv6の最大の特徴は,アドレス空間が128ビットに拡張されたことでしょう. これにより,3.4×1038個のインタフェースが識別できるようにな りました.

Plug & Play

 IPアドレス長が長くなったのを生かして,プラグアンドプレイができるアド レスの体系なっています.IPv4時代のようにネットワークにつなぐために自分 のIPアドレスを設定するなどという煩わしさがなくなりました.

ヘッダの簡略化

 IPアドレス長が長くなるに伴って,それだけオーバヘッドが大きくなること になります.IPv4では使用されていなかったフィールドを廃止し,ヘッダ長は 固定長になりました.この変更によって,ルータの負荷が少なくなるよう改善 されています.これでは柔軟性に欠けることになりますので,拡張あるいはオ プションヘッダを数珠つなぎできるようになっています.

集約

 IPアドレスの枯渇と同様に問題となっている経路制御情報の増大についても 配慮されています.経路制御情報を増やさないように,IPv6アドレスは,アド レス上の複数の部分に集約ポイントを設けることができるようになっています.

セキュリティ機能

 セキュリティ機能を標準的に備えており,あらかじめ交換しておいた鍵を利 用して,必要に応じてパケットを暗号化したり,認証することができるのも, IPv6の大きな特徴でしょう.

IPv6のアドレス記法

 ここで,IPv6アドレスの記法について,簡単に説明しておきましょう.
 IPv6のアドレス表記は,128ビットのアドレスを16ビット毎に区切って,そ れぞれを16進数で表したものを,『:』でつないだものとなります.例えば,
3ffe 0505 0002 0000 0000 0000 0000 0001
というアドレスは3ffe:505:2:0:0:0:0:1で表されます.ここで,IPv6のアドレ ス表記は長くなりがちなので,中間にある0は『::』によって省略できます. 上記の例では,
3ffe:505:2::1
と省略できます.

入手可能なIPv6の実装

 IPv6の実装はいくつかありますが,その中でも,INRIA,NRL,そして,KAME あたりが有名でしょう.これらはUNIX上での実装ですが,Windows95やNT で利 用できるものも出てきています.

KAMEでIPv6しよう

KAMEとは

 KAMEは,研究あるいは商用利用できるIPv6プロトコルスタックの実装を, BSDスタイルコピーライトにもとづいてフリーで提供することを目的として, 開発が進められています.加えて,世界中で使えるフリーなIPsecの実装を提 供することを目指しています.

 KAMEにはSNAP,STABLE,RELEASEの3種類のリリースがあります.それぞれの リリースは表1のように分類されています。また,CVSupにより,常に最新のソー スツリーを入手することもできます.

●表1 KAMEのリリースワーク
分類安定度リリース実験的要素入手先最新版(1998/9/25現在)
SNAP毎月曜日ありftp://ftp.kame.net/pub/kame/snap/kame-980921-fbsd227-snap.tgz
STABLE約2ヵ月毎なしftp://ftp.kame.net/pub/kame/stable/kame-980731-fbsd226-stable.tgz
RELEASE年2回なしftp://ftp.kame.net/pub/kame/release/未定
 現在のKAMEでも、TELNET,FTPをはじめ,E-Mail,WWW,sshなど一般的にイ ンターネットで生活するのには不自由しない程度のアプリケーションが使用で きます.これらのアプリケーションはpackage形式にこそなっていませんが, FreeBSDでおなじみのports形式で配布されていますので,基本的にmake一発で インストールできます.
 KAMEのメインターゲットはFreeBSDで,現在は2.2.7-RELEASEがベースとなっ ています.また,NetBSD 1.3,BSD/OS 3.0でも利用できます.
 以降,FreeBSD版のKAMEを例にして説明します.

インストール

 FreeBSD 2.2.7-RELEASEにkame-980921-fbsd227-snap.tgzをインストールし てみましょう.
 準備作業として,FreeBSD 2.2.7-RELEASEの/usr/src/sysと/usr/src/lkmを 展開しておきます.

 まず,アーカイブをどこか適当なところに展開します.ここでは,例として /usr/srcに展開することにしましょう.

# cd /usr/src
# tar xvzf kame-980921-fbsd227-snap.tgz
/usr/src以下にkitというディレクトリが作成されたと思います.

 次に,/usr/src/sys以下にKAME化するためのパッチを当てます.

# cd /usr/src/sys
# patch -p1 -f < /usr/src/kit/sys-227.diff
 IPv6対応のカーネルを作成します.先のパッチで/usr/src/sys/i386/confに GENERIC.v6というコンフィグファイルが作られていますので,参考にすると良 いでしょう.既に自分用のコンフィグファイルをお持ちの場合は,最低限,以 下の行を追加します。
options "INET6"
options IPSEC
pseudo-device bpfilter  4
pseudo-device gif       4
 ここでは仮に IPv6という名前でコンフィグファイルを作成したとしましょ う.このファイルを用いてカーネルを作成します.
# config IPv6
# cd /usr/src/sys/compile/IPv6
# make depend
# make
# make install
 LKM (Loadable Kernel Module)を作り直します.LKMはkernelと同期してい る必要があります.LKM を使用していなければ必ずしも必要ではありませんが, 少なくともoptions "CD9660"を指定せずに作成したカーネルでCD-ROMにアクセ スしようとするとパニックを起こすことが判っています.
# cd /usr/src/lkm
# make obj depend all
# make install
 インクルードファイルの修正を行います.
# cd /usr/include
# patch -p1 -f < /usr/src/kit/include-227.diff
# mv net net-dist
# ln -s ../src/sys/net
# mv netinet netinet-dist
# ln -s ../src/sys/netinet
# mv netkey netkey-dist
# ln -s ../src/sys/netkey
# mv sys sys-dist
# ln -s ../src/sys/sys
# mv machine machine-dist
# ln -s ../src/sys/i386/include machine
# ln -s ../src/sys/netinet6
 コマンド群を作成します.IPv6関係のコマンドは/usr/local/v6以下にイン ストールされます.
# cd /usr/src/kit
# make
# make install
 KAMEで提供されるコマンドを表2に示します.
●表2 KAMEで提供される/usr/local/v6/bin一覧
名称概要
cksum6IPv6仮想ヘッダのチェックサムの計算
fetchURL表記によるファイルの取得
ftp / gate-ftp / pftpファイル転送プログラム
icmp6dumpネットワーク上を流れるICMPv6パケットのダンプ
ifmcstatインタフェース毎のマルチキャストグループの管理統計情報のダンプ
lpqプリンタキューに登録されている印刷ジョブの確認
lpr印刷ジョブを生成しキューに登録
lprmプリンタキューから印刷ジョブの削除
netstatネットワークの状態の表示
rip6queryRIPngの問い合わせ
rloginリモートログイン
rshリモートマシン上でのコマンドの実行
telnetTELNET プロトコルを用いた他のホストとの通信
tftp単純なファイル転送プログラム
traceroute6IPv6パケットがネットワーク上のホストまでにたどる経路を表示する
v6pカーネルがIPv6対応しているかどうかを調べる

 /etc/rcに

    [ -f /usr/local/v6/etc/rc.net6 ] && sh /usr/local/v6/etc/rc.net6
を加え,IPv6が起動時に初期化されるようにします.そして, /usr/local/v6/etc/rc.net6.sample を/usr/local/v6/etc/rc.net6にコピーし, 必要な変更を加えます.

 リブートすると,IPv6が有効になります.

ネットにつなごう

 /usr/local/v6/etc/rc.net6で設定を行います.
 IPv6にはプラグアンドプレイの機能があります.rtadvdをルータ上で起動さ せておくことにより,各終端ノードは,自分のIPアドレスを設定しなくても, rtsolを実行するだけで自動的に設定されます.このため,ルータ用途と終端 ノード用途とで設定が異なります.

 ここでは,図1のネットワークを例に,設定を見ていきます.net-aには host-aとhost-bがあり,host-aはトンネリングによりhost-cに接続しています. 各ネットワークのプレフィックス長は64ビットです.

●図1 想定するネットワーク
想定するネットワーク

 host-aはルータですので,ip6router=YESとします.IPv6アドレスは,プレ フィックスとMACアドレスから自動的に設定されます.ifaceに使用するインタ フェースed0を指定し,prefix_インタフェース にプレフィックス 3ffe:505:2:0を指定します.ifaceは2ヶ所にありますので,片方をコメントア ウトするのをお忘れなく(リスト1).

●リスト1 ルータとして使用する場合のrc.net6の設定例
ip6router=YES

    〜省略〜

# list of interfaces, and prefix for interfaces
iface="ed0"
prefix_ed0="3ffe:505:2:0"
#----------
# manual configurations - in case ip6router=NO
route6dflags="-A 3ffe:505:2::/48,gif0"
#iface="ed0"
#----------
 また,rtadvdも立ち上げておきましょう. /usr/local/v6/etc/rtadvd.conf.sampleを/usr/local/v6/etc/rtadvd.confに コピーし,設定を行います.基本的には,使用しているインターフェースed0 のエントリを作成し,ed0で使用しているプレフィックス3ffe:505:2:0::を addrに設定するだけです(リスト2).
●リスト2 rtadvd.confの設定例
#
# common definitions.
#
default:\
        :chlim#64:raflags#0:rltime#1800:rtime#30000:retrans#1000:\
        :pinfoflags#64:vltime#3600000:pltime#3600000:mtu#1500:
ether:\
        :mtu#1500:tc=default:
#
# interfaces.
#
ed0:\
        :addrs#1:addr="3ffe:505:2:0::":prefixlen#64:tc=ether:
 そして,リスト3のような起動スクリプトを /usr/local/v6/etc/rc.d/rtadvd.shに置きます.ここで,ifaceを使用してい るインタフェースed0 に合わせて修正します.実行権限を付けるのをお忘れな く.
●リスト3 rtadvd.shの例
#!/bin/sh

iface=ed0	← 使用しているインタフェースに合わせて修正してください.
PATH=/usr/local/v6/sbin:/usr/local/v6/bin:$PATH
if [ -x /usr/local/v6/sbin/rtadvd -a -r /usr/local/v6/etc/rtadvd.conf ]; then
    echo -n ' rtadvd'
    rtadvd $iface
fi

 host-bは終端ノードです.host-aにrtadvdが上がっているので,IPアドレス とデフォルト経路の設定は自動化できます.ip6router=NOとし,ifaceにイン タフェースed0を指定します(リスト4).

●リスト4 ルータがある場合のrc.net6の設定例
ip6router=NO

    〜省略〜

# list of interfaces, and prefix for interfaces
#iface="ed0 ep0"
#prefix_ed0="fec0:0000:0000:0001"
#prefix_ep0="fec0:0000:0000:0002"
#----------
# manual configurations - in case ip6router=NO
iface="ed0"
#----------

トンネリング

 現状では,インターネットを構成する多くのルータがIPv6を喋ることができ ません.ですから,IPv6パケットをIPv4パケットでカプセル化してやりとりを 行っています.このためのトンネルを張るには,KAMEの実装ではgif仮想イン タフェースを使用します.
 トンネルを張るには,gif仮想インタフェース名,自分のIPv4アドレス,相 手のIPv4アドレスを指定してgifconfigコマンドを実行します.
 図1の例では,host-aとhost-bのIPv4アドレスは202.227.26.33, 202.227.24.9で,gif0を使ってトンネルを張りますので,
gifconfig gif0 202.227.26.33 202.227.24.9
となります.
 rc.net6でroute6d を起動している所より前に加えておきます.

経路制御

 KAMEにはroute6d,hroute6d,bgpdの3つの経路制御プロトコルデーモンが提 供されています.
 ここでは,一番基本的なroute6dを使用してみましょう.といっても,3.3. でip6router=YESを指定すると,自動的にroute6dが起動されるようになってい ます.
 このままでも動くのですが,折角ですからIPv6 の特徴のひとつである集約 を積極的に使用し,余計な経路情報を他のサイトに流さないようにしましょう. rc.net6の頭の方にroute6dflags=という行がありますから,そこで,
route6dflags="-A プレフィックス/プレフィックス長,インタフェース名"
を加えまます.図1の例では,自サイトに割り当てられているアドレスが 3ffe:505:2::,プレフィックス長が48ビットで,トンネルにはgif0を使用して いますから,
route6dflags="-A 3ffe:505:2::/48,gif0"
と指定します.

DNSに登録しよう

 DNSのIPv6サポートは,
1)IPv6アドレスを登録できる
2)IPv6を使って問い合わせ等のアクセスができる
3)動的なアドレスの登録/更新
4)互換アドレスのサポート
などがあります.1)が最低要件となります.これについては,BINDの最新版で 対応しています.2) 以降についてはnewbie (http://www.sfc.wide.ad.jp/~doi/softs/newbie/) などで開発が進められていますが,現在は発展途上にあります.つまり,現時 点での現実解としては,
1)IPv6アドレスを登録できる
2)アクセスはIPv4を使う
となります.

 IPv6アドレスをサポートしているBINDは,8系列か,4系列であれば4.9.7に なります.これは,IPv6アドレスを指定するためにAAAAレコードと呼ばれるレ コードを登録できる必要があるためです.現在お使いのBINDのバージョンが古 い場合は,バージョンアップが必要になります.もしバージョンアップされる のであれば,今からであれば,8系列の最新版である8.1.2が良いでしょう. bind-8.1.2は,

ftp://ftp.isc.org/isc/bind/src/8.1.2/bind-8.1.2-src.tar.gz
ftp://ftp.isc.org/isc/bind/src/8.1.2/bind-8.1.2-doc.tar.gz
から入手できます.

 では,設定を行ってみましょう.基本的な考え方はIPv4の場合と全く同じで す.ほんの少し,IPv6のアドレスの指定の仕方を覚えるだけです.

 正引きは,IPv4ではAレコードを使って登録しますが,これに相当するのが AAAAレコードと呼ばれるレコードになります.例えば,

3ffe:505:2:0:220:afff:fef8:7c44
というIPv6アドレスを持つhost-aを登録するには,
host-a	IN	AAAA	3ffe:505:2:0:220:afff:fef8:7c44 
となります.

 逆引きは,IPv6アドレスを4ビット毎に区切って,16進表記で逆順に並べま す.またIPv4の場合に使用するIN-ADDR.ARPA.は,IPv6ではIP6.INT.となります. 例えばhost-aだと

4.4.c.7.8.f.e.f.f.f.f.a.0.2.2.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.IP6.INT.
となります.

 実際に逆引きのゾーンファイルを登録するには,自サイトに割り当てられて いるIPv6アドレスを管理するゾーンファイルを用意します.ここでは, 3ffe:505:2::/48のゾーンを3ffe:505:2.revというファイル名で作成するとし ます.

 ゾーンファイルには,

4.4.c.7.8.f.e.f.f.f.f.a.0.2.2.0.0.0.0.0 IN PTR host-a.hogehoge.org.
のように,逆引きの記述から2.0.0.0.5.0.5.0.e.f.f.3.IP6.INT.を除いた部分 を書きます.あと,もちろん SOAレコードなども書いておいておくのをお忘れ なく.

 3ffe:505:2::のゾーンを有効にします.bind-4.9.7の場合,named.bootに

primary	2.0.0.0.5.0.5.0.e.f.f.3.IP6.INT	3ffe:505:2.rev
のように指定します.bind-8.Xの場合は,named.confに,
zone "2.0.0.0.5.0.5.0.e.f.f.3.IP6.INT" {
	type master;
	file "3ffe:505:2.rev";
};
と指定します.書式は違いますが,基本的にやっていることは変わりませんね.

 さて,ちゃんと登録されているか確認してみましょう.基本的にはnslookup で調べれば良いわけですが,逆引きが本当にちゃんと引けるのかは不安なもの です.特に,IPv6アドレスは長いですしね.

 traceroute6を使うというのがお手軽でしょう.自分に対してtraceroute6す ると,図2のように,逆引きで得られたホスト名付きで表示してくれます.最 近のKAMEではnetstatもIPv6アドレスの逆引きを行うようになりましたので, netstatで見るのも有効でしょう.しばらく前までnetstatはIPv6アドレスの逆 引きをサポートしていなかったので,筆者は,逆引きをどうやって確認したら 良いものかと頭を抱えました.^^;

●図2 traceroute6実行例
ume@host-a:102> traceroute6 host-a
traceroute to host-a.hogehoge.org (3ffe:505:2:0:220:afff:fef8:7c44), 30 hops max, 12 byte packets
 1  host-a (3ffe:505:2:0:220:afff:fef8:7c44)  2.087 ms  1.71 ms  1.681 ms

 少し余談になりますが,wやwhoコマンドはログイン元のホスト名を表示して くれるので,一見これで見れば良いように思えます.しかし,これらのコマン ドはIPv6化されていないloginというコマンドを内部的に呼び出し,ログイン 処理を行っています.このため,これらのコマンドが参照するutmpファイルに は,IPv4アドレスの逆引きの結果が記録されています.さて,loginコマンド をIPv6化するにはどうしたら良いでしょうか?utmp のホスト名を記録するフィー ルドのサイズ(UT_HOSTSIZE)は固定長で,例えばFreeBSDでは16 バイトBSD/OS で32バイトしかありません.IPv6アドレスを収容しようとすると,最低で39バ イト必要とします.UT_HOSTSIZEの変更を行うと,多くのプログラムが影響を 受けることになりますので,IPv6がOSの標準機能として提供されるようになる まで,お預けということになるでしょう.

SMTP/IPv6しよう

 sendmailをIPv6対応させるパッチが公開されています.執筆時点での最新は,
ftp://ftp.kyoto.wide.ad.jp/pub/mail/smtpfeed/sendmail891+3.1W.patch.gz
より入手できます.FreeBSD版KAMEの配布キットには,FreeBSDでポピュラーな ports形式も含まれています.sendmailはkit/ports/sendmail6にありますので, ここでmake; make installするのがお手軽でしょう.

 IPv6対応版sendmailがIPv4版と異なる点は,

1) IPv6も喋ることができます (当然ですね :-))
2) Received: ヘッダにIPv4とIPv6のどちらを使ってやりとりしたのかを記録できます
3) check_*でIPアドレスを解析するルールをIPv4かIPv6かによって切り替えできます
4) sendmail.cf ではなく,sendmail6.cf を使用します
の4つです.

 まず1)から説明しましょう.送信する際は,相手のSMTPサーバーがIPv6を喋 ることができればIPv6を使用して送信します.もしIPv4しか喋れない場合には, IPv4を喋って送信します.要するに,相手に合わせてくれます.受信について は,IPv6 だけを待ち受けるという使い方はもちろんのこと,IPv4のみ,IPv4 とIPv6共に待ち受けるといった使い方ができます.IPv4/IPv6のどちらを待ち 受けるかはsendmail6.cfのO DaemonPortOptionsで指定します.

O DaemonPortOptions=Family=inet
O DaemonPortOptions=Family=inet6
というように,この指定をアドレスファミリ毎に2つ書いておくと,IPv4/IPv6 のデュアルスタックで待ち受けるようになります.sendmail.cfの作成にCFを 使用しているのであれば,DAEMON_OPTIONSを使用して,
DAEMON_OPTIONS='Family=inet
O DaemonPortOptions=Family=inet6'
のように書くと良いでしょう.

 次に2)ですが,sendmail6.cfのHReceived:行で,リスト5のように,反転標 示の部分を追加することで有効になります.これは,現行のCFではサポートさ れていませんので,筆者はリスト6にある修正を加えて,FORMAT_RECEIVED=に Familyというキーワードを使えるようにし,

FORMAT_RECEIVED=Ident-Proto-Family-Dest-Multi-EnvFrom
というように指定しています.
●リスト5 HReceived:行に追加
HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
	$.by $j ($v/$Z)$?r with $r$.$?{family}/${family}$. id $i$?u
	for $u; $|;                 ^^^^^^^^^^^^^^^^^^^^^^
	$.$b$?g
	(envelope-from $g)$.
●リスト6 CF-3.7Wpl1に対する修正
diff -ur orig/Master/option.v8 CF-3.7Wpl1/Master/option.v8
--- orig/Master/option.v8	Fri Jul 24 11:20:51 1998
+++ CF-3.7Wpl1/Master/option.v8	Sat Aug  8 05:20:48 1998
@@ -52,7 +52,11 @@
 
 case "$FORMAT_RECEIVED" in
 *Proto*|*proto*)
-FMTRECEIVED="$FMTRECEIVED"'$?r with $r$.' ;;
+	FMTRECEIVED="$FMTRECEIVED"'$?r with $r$.'
+	case "$FORMAT_RECEIVED" in
+	*Family*|*family*)
+	FMTRECEIVED="$FMTRECEIVED"'$?{family}/${family}$.' ;;
+	esac ;;
 esac
 
 case "$FORMAT_RECEIVED" in

 さて,DNSのMXレコードには特にIPv6用の拡張があるというわけではありま せん.MXを立てているホストのSMTPサーバがIPv6対応していればIPv6 で送ら れることになりますし,対応していなければIPv4を使って送られることになり ます.つまり,IPv6でもメイルを受信するようにしたいのであれば,MXなホス トをIPv6対応にしなくてはいけないということになります.これは現状では勇 気のいることかも知れません.実際,自宅の環境ではIPv6対応にしていますが, 筆者が管理しているサイトのMXなホストをIPv6対応にするのは躊躇している状 態です.

HTTP/IPv6

 KAMEではサーバはApacheが,ブラウザはlynxとmozillaが,ports形式で提供 されています.それぞれのディレクトリでmakeすることで使用することができ るようになります.

 Apacheはhttpdの起動オプションに-6を指定することで,IPv6でのサービス を行うようになります.-4オプションを指定すると,IPv4用になります.加え て,httpd.confにProxyRequests onを指定することで,IPv6においてもプロキ シサーバとして使用できます.ただし,IPv6で使用する際は複雑な設定はサポー トされていないので,注意が必要です.
 プロキシサーバの定番になっているSquidはIPv6化するのはかなり大変なよ うです.現状では,プロキシサーバを使いたい場合には,Apacheを使用するの が唯一の解となるでしょう.

 lynx,mozilla共に,IPv4/IPv6どちらのHTTPサーバにも接続できます(図3,4).

●図3 Mozilla6でhttp://www.kame.net/をアクセス
Mozilla6でhttp://www.kame.net/をアクセス
●図4 lynx6でhttp://www.v6.imasy.or.jp/をアクセス
lynx6でhttp://www.v6.imasy.or.jp/をアクセス

ssh/IPv6

 ftp://ftp.kyoto.wide.ad.jp/pub/security/ssh/ より,IPv6化パッチが入手できます.執筆時点での最新は ssh-1.2.26-IPv6-1.4-patch.gzとなっています.このパッチを当てて、-- enable-ipv6オプション付でconfigureを実行することで、IPv6 対応になりま す。KAMEにはportsが用意されていますので、そちらを使うほうが楽でしょう.

 sshdは,IPv4/IPv6 のいずれかあるいは両方のサーバになることができます. sshd_configに

ListenAddress 0.0.0.0
と指定すると,IPv4 (これは従来通りですね),
ListenAddress ::
と指定すると,IPv6のサーバとなります.両方指定すると,どちらに対しても サービスを行います.

 ssh, slogin,scpは,AAAAレコードがあるとIPv6での接続を試み,ダメな らIPv4で接続します.この振る舞いを変えたい場合は,起動オプションに-6を 指定するとIPv6で,-4を指定するとIPv4で接続します.

v6tun

 v6tunを使用するとtunデバイスを使用してアプリケーションレベルでIPv6ト ンネルを張ることができます.sshで通信路を確保しますので,通信路もセキュ アにできます(図5).sshをSOCKS対応にすれば,ファイアウォールを越えての 接続もできます.
●図5 sshトンネル
sshトンネル
 v6tunを使用するためには,接続先のホストにアカウントがあり,sshでログ インできることが条件となります.
 IPv6ならではというものではなく,ちょっとad-hocな気もしますが,モバイ ル環境などで使うととても便利です.
http://www.rcac.tdi.co.jp/fujiwara/
から入手できます.もちろんportsになっています.

tcpd6

 やはりIPv6もセキュアにやりたいねということで,tcpd6が開発されていま す. http://www.rcac.tdi.co.jp/fujiwara/ から入手できます.IPv4で定番であるTCPWrappersのIPv6 版といったところで しょうか.こちらもKAMEのportsになっています.

Perl5

 PerlでIPv6なスクリプトを書くためには,原則的にPerlがIPv6対応している 必要があります.IPv6版Perl5もportsで提供されています.
 同様に,Emacs lispでIPv6なプログラムを書くためには,EmacsがIPv6対応 にならないといけないですね.

6boneにつなごう

 世界的規模でIPv6の実験ネットワーク6boneが構成されています。日本では WIDEプロジェクトが6bone JPを運営しています。

 6boneでは,プレフィックスをいくつかの部分に分けて,アドレス割り当て を柔軟にし,かつ,経路制御情報が増大しないよう抑制しています.

 6boneはTLAとして3ffeを使用しています.6bone JPにはpTLAとして05が割り 当てられており,接続希望サイトに対してNLA1を割り当てています.ちなみに WIDEプロジェクトは01で,筆者の所属しているインターネット互助会横浜 (IMASY)は05です.NLA1を割り当てられたサイトは,接続希望サイトに対して NLA2を割り当てています(図6).
 現在NLA2による接続を受け入れているサイトはWIDEプロジェクト,NTTソフ トウェア研究所,IIJ 研究所,IMASYです.
 6bone JPに参加するには http://www.v6.sfc.wide.ad.jp/6bone/6bone-jp/ を参照してください.

●図6 6bone JPにおけるIPv6グローバルユニキャストアドレスの構造
│     プレフィックス     │  インタフェース識別子  │
│ 16 │ 8│ 8│ 16 │ 16 │       64ビット         │
├──┼─┼─┼──┼──┼────────────┤
│3ffe│05│05│0002│0000│  0220:afff:fef8:7c44   │
└──┴─┴─┴──┴──┴────────────┘
   ↑  ↑  ↑    ↑    ↑    ↑
   │  │  │    │    │    └─ ホストのインタフェース識別子
   │  │  │    │    └──── SLA
   │  │  │    └─────── NLA2
   │  │  └────────── NLA1 (IMASY)
   │  └──────────── pTLA (6bone JP)
   └────────────── TLA (6bone実験アドレスのプレフィックス)

 では,IPv6の世界でお会いしましょう.


All Rights Reserved, Copyright (C) 2001 Hajimu UMEMOTO
Last Modified Aug 25, 2001
ume@mahoroba.org