USAGIによるカーネルのIPv6対応:Linuxで作るIPv6ネットワーク環境(1)(2/3 ページ)
本記事では、将来的な移行を前提にIPv6環境を構築する方法を紹介する。移行の際のコアとなるIPv6環境が社内にあれば、徐々に移行を進めることもできるし、OSやサービスの動作テストも可能だ。まずは小規模なIPv6環境を用意しよう。
USAGI対応カーネルの作成
USAGI Projectは、「UniverSAl playGround for Ipv6 Project」の略であり、プロジェクトの成果物はhttp://www.linux-ipv6.org/で公開されています。
USAGIのSTABLE版は、Red HatやDebianをはじめとする主要なディストリビューションに対応したパッケージが用意されていますが、スナップショット版にはそれがありません。今回使用するのはSTABLE版ですが、原稿執筆時点ではディストリビューション用のバイナリは用意されていませんでしたので、スナップショット版と同様にカーネルコンフィグレーションを行う必要があります。敷居は若干高い気もしますが、今後のことを考えると試してみる価値はあるでしょう。
なお、今回は2002年10月7日に公開されたばかりのSTABLE Release 4を使用しています。
■USAGIのソースコードの入手
ftp://ftp.linux-ipv6.org/pub/usagi/stable/kit/の配下に、STABLE版ソースコードのtarボールが存在します。
筆者は、検証時点での最新版であるusagi-linux24-stable-20021007.tar.bz2を入手しました。
■アーカイブの展開とインストール
$ bzip2 -dc usagi-linux24-stable-20021007.tar.bz2 | tar xvf - $ cd usagi
として、生成されたusagiディレクトリ下に移動すると、
$ ls CHANGELOG.USAGI INSTALL.USAGI RELEASE kernel usagi CHANGELOG.USAGI.2001 Makefile RELNOTES.USAGI prepare.pl CVS README.USAGI doc src
という構造になっているのが分かります。
INSTALL.USAGIを読むと、インストール方法が分かります。以下、実際に手順を追って行っていきます。
■コンパイルの前準備
入手したソースコードはカーネル2.4ベースのものであるため、生成されたディレクトリに移動した後に以下のコマンドを実行します。
$ make prepare TARGET=linux24
このコマンドを実行することで、必要なシンボリックリンクやディレクトリ構造の準備が行われます。
■カーネルの設定とコンパイル
USAGIは、USAGI対応カーネルおよびユーザーランドアプリケーションの2種類のプログラムから構成されます。ここでは、カーネルの設定とコンパイルを実施します。
$ cd kernel/linux24 $ make mrproper $ make menuconfig
とすると、見慣れたカーネルの設定メニューが出現します(画面1)。
注意しなければならないのは、「Code maturity level options」のメニューで「Prompt for development and/or incomplete code/drivers」のチェックを有効にしておくことです。そうしないと、IPv6関係の設定がメニューに出現しません。具体的には画面1から画面2に移動し、項目をチェックします。
「Networking options」におけるIPv6関係の設定(画面3および画面4)以外は、基本的に普段自分で作成するカーネルの設定を参考にすれば問題ないでしょう。
ただし、IPSec関連の設定を行う場合は、画面5→画面6のようにして、「Cryptography support (CryptoAPI)」を有効にすることに注意しましょう。デフォルトの状態では無効になっています。
ここまでの設定を終えたら、設定ファイルを保存(画面7)して設定画面を終了します。
その後は、通常のカーネルコンパイルと同様に、
$ make dep $ make bzImage $ make modules
を実行し、USAGI対応カーネルを作成します。
■ブート設定とリブート
いきなりカーネルをインストールして、そのカーネルでブートしないと困ります。まだカーネルのインストールは行わず、作成したカーネルイメージファイル(bzImage)を使ってブートするかどうかをチェックしてみましょう。筆者は、検証環境ではGRUBを使用しているので、
title Usagi Stable Kernel (2.4.19) root (hd0,6) kernel /wakatono/work/usagi/usagi/kernel/linux24/arch/i386 /boot/bzImage ro root=/dev/hda5
という内容をgrub.confの最後に書き足します。grub.confの書式についてはGRUBのinfoファイルを参照いただくとして、上記の意味は、
- 第7パーティションからブートする(root (hd0,6))
- カーネルはパーティション内の/wakatono/work/usagi/usagi/kernel/linux24/arch/i386/boot/bzImageであり、ルートパーティションとしては/dev/hda5を使用する
となります。
ブートしなかったときのことを考え、それまで使用していたカーネルや設定は残しておきましょう。
設定を確認し、問題ないと思ったらOSを再起動します。
再起動後に、ブートメッセージ(リスト1)の中で、IPv6で定義されたアドレスの種類の1つであるLink Localアドレス(注)を設定する旨のメッセージが確認されるなどすれば、カーネルのIPv6化は成功です。
注:ほかにはSite LocalやGlobalがあります。アドレスの有効な範囲(scope)が、同一の物理ネットワーク上/組織内/組織外の場合にそれぞれのアドレスが使用されます。
念のため、ifconfigコマンドでネットワークインターフェイスに割り当てられたアドレスを確認します。
$ /sbin/ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:A0:24:56:97:89 inet addr:61.197.226.213 Bcast:61.197.226.215 Mask:255.255.255.248 inet6 addr: fe80::2a0:24ff:fe56:9789/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:226 errors:0 dropped:0 overruns:0 frame:0 TX packets:164 errors:0 dropped:0 overruns:0 carrier:5 collisions:5 txqueuelen:100 RX bytes:20382 (19.9 Kb) TX bytes:35222 (34.3 Kb) Interrupt:10 Base address:0xec80
3行目に「inet6 addr:」で始まる部分がありますが、これがLink Localアドレスです。このアドレスは自動的に(ユーザーが明示的に指示しなくても)付与されます。そして、下位64bitの値はイーサネットカードの持つハードウェアアドレス(上記の場合は 00:A0:24:56:97:89)を基に生成されるので、同一ネットワークで同じアドレスが付与されるなどの理由でアドレスが衝突することはありません。
カーネルのIPv6化が済んだら、次はユーザーランドの作成です。
Copyright © ITmedia, Inc. All Rights Reserved.