Comments
Description
Transcript
IPv6 - 阪南大学
IPv6 を使ったネットワーク構築 阪南大学 経営情報学部 5107118 澤竹 1 経営情報学科 潤一郎 目次 第2章 関連研究 ............................................................................................................. 4 第1節 IPv4 について .................................................................................................... 4 第2節 IPv6 について .................................................................................................... 5 第3節 KAME プロジェクト・FreeBSD について ........................................................ 6 第4節 第3章 Linux について .................................................................................................. 6 Linux での IPv6 実装 ......................................................................................... 8 第1節 Linux の IPv6 実装の現状 .................................................................................. 8 第2節 IPv6 の基本設定 ............................................................................................... 10 第3節 アプリケーションの導入 .................................................................................. 11 第4節 パッケージ管理によらないアプリケーションの導 ........................................... 13 第5節 アプリケーションの設定 .................................................................................. 14 第6節 動作確認 ........................................................................................................... 16 第7節 IPv6 アドレス用マクロ .................................................................................... 18 第 8 節 Linux の IPv6 対応の将来動向......................................................................... 19 第 4 章 FreeBSD での IPv6 実装 ..................................................................................... 20 第1節 OS の基本設定.................................................................................................. 20 第2節 アプリケーションの導入 .................................................................................. 22 第3節 アプリケーションの設定 .................................................................................. 26 第 4 節 動作確認 ........................................................................................................... 28 第 5 章 IPv6 対応ルータについて .................................................................................... 31 第1節 IPv6 対応ルータの仕様の比較 ......................................................................... 31 第2節 IPv6 対応ルータ 8 製品の詳細説明 .................................................................. 31 第1項 corega/CG-WLBARGPXB[5] ......................................................................... 31 第2項 corega/CG-BARPRO6[6] ............................................................................... 32 第3項 第4項 BUFFALO/BBR-4HG[7]................................................................................ 32 BUFFALO/WHR-G301N[8] .......................................................................... 33 第5項 PLANEX/BRL-04M[9]................................................................................... 33 第6項 PLANEX/MZK-WNH[10] .............................................................................. 34 第7項 I・O DATA/WN-G54/R3[11] ............................................................................ 34 第8項 I・O DATA/NP-BBRL[12] ............................................................................... 35 第3節 ホームネットワークの構築事例 ....................................................................... 35 第 4 節 製品仕様の比較結果および考察 ....................................................................... 36 第 6 章 まとめ .................................................................................................................. 37 参考文献 ............................................................................................................................. 38 謝辞 .................................................................................................................................... 38 2 第1章 はじめに 世界でのインターネット利用人口は、2006 年時点で 10 億人を越えて現在も増加し続 けている。2013 年には世界でのインターネット利用人口は 22 億人になるとも言われて おり、全世界の 3 割以上の人がインターネットを利用すると予測されている。しかし、 このままインターネット利用人口が増え続ければ、IP アドレスが枯渇するという問題 が予想されている。現在、IPv4 というプロトコルが使用されており、振り分け可能な IP アドレス数は、232(=4,294,967,296)個である。この IP 枯渇問題に対し、IETF (Internet Engineering Task Force)会議では、Classless Inter-Domain Routing(以 下 CIDR)と Supernetting を検討することになった。CIDR はクラスを廃止すること によりアドレスの利用効率を高める技術である。Supernetting は、経路を集約しその 数を削減するための技術である。これらの技術は実用化され、アドレスの枯渇時期を先 延ばしにすることを可能にした。しかし、2009 年 8 月時点での未使用の IPv4 アドレ ス数が約 5 億個とされており、ここ数年で IP アドレスが枯渇するのは間違いないとさ れている。 そこで、現在 IP 枯渇問題を解決するために実装が進められている IPv6 というプロ トコルに着目した。IPv6 プロトコルは、現在主流である IPv4 プロトコルにかわるもの として開発されている。 それまで最大であった IPv4 プロトコルの IP アドレスの数を、 2128(=340,282,366,920,938,463,463,374,607,431,768,211,456)個まで使えるという ものである。これだけの数の IP アドレスが使用可能になれば、IP 枯渇問題は解消され ることになる。現在、日本国内では一部の ISP により商用・実験サービスが開始され ている。 そこで、本論文では FreeBSD と Linux を利用した IPv6 ネットワーク構築を紹介す る。2 章では IPv6 全体の概要と Linux、KAME プロジェクトの FreeBSD について紹 介する。3 章では Linux を利用した IPv6 プロトコルの構築を紹介する。4 章では FreeBSD を利用した IPv6 プロトコルの設定を紹介する。5 章では IPv6 対応ルータの 仕様比較を紹介する。6 章では本論文のまとめを述べる。 3 第2章 関連研究 2 章では、本研究に使用する技術や例題を紹介する。1 節では IPv6 の概要について、 2 節では IPv6 プロトコルの概要について、3 節では KAME プロジェクト・FreeBSD について、4 節では Linux について紹介する。 第1節 IPv4 について IPv4 とは、Internet Protocol Version 4 の略である。OSI 参照モデルにおいてネッ トワーク層に位置づけられるプロトコルである。転送の単位であるパケットの経路選択 と、その断片化と再構築が主な機能である。TCP/IP の基本機能として現在のインター ネットで利用されている IP はこれがほとんどである。アドレス資源を 32 ビットで管 理しているため、識別できるコンピュータの最大数は 42 億 9496 万 7296 台である。ま た、IP パケットの先頭には必ず IP ヘッダが付加され、それにより経路選択などの IP 機能が実現されている(図 1) 。[2] そして、IP で用いられる 32 ビットのアドレスは IP アドレスと呼ばれており、この IP アドレスはネットワークアドレスとホストアドレスに分けて用いられる。通常は、 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 バージョン ヘッダ長 サービス種別 識別子 生存時間 全長 フラグ プロトコル 断片位置 チェックサム 送信元アドレス 宛先アドレス 拡張情報 データ 【図 1】パケット形式図 ドット付き十進法あるいはドットアドレスと呼ばれる 0~255 の数字 4 組をドットでつ ないだ形で表記される。ネットワークアドレスとホストアドレスの境界は、IP アドレ スの先頭のビット列で定められ、境界の位置により IP アドレスはクラス(class)とし て分類されている(図 2)。 クラス 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ホスト a 0 ネットワーク ネットワーク ホスト b 1 0 1 1 0 ネットワーク ホスト c 1 1 1 拡張アドレスモード 【図 2】 クラス分類図 4 第2節 IPv6 について IPv6 とは、Internet Protocol Version 6[3]の略であり、IPv4 の次世代プロトコルとし て注目されている。IPv4 の次世代プロトコルとしての検討は、1992 年頃から始まり、 1994 年に複数の IP 候補から SIPP(Simple Internet Protocol Plus)という IP が採用さ れ、翌 1995 年に IPv6 となり基本仕様が取り決められた。また、現状では個人への割 り 当 て が 可 能 な グ ロ ー バ ル IP の 数 は 限 り が あ る た め 、 NAT(Network Address Translator)を使ってプライベートアドレスとグローバルアドレスを変換して通信して いる。しかし、ネットワークを相互接続する必要がある場合、プライベートアドレスを 使用している場合、ネットワークの管理者が相互接続をしようとすれば、アドレスが重 複 す る 可 能 性 が 出 て く る 。 さ ら に 、 NAT の ア ド レ ス 変 換 が IPSec ( Security Architecture for Internet Protocol)では改ざんとなってしまうために、IPSec が機能 せず、IPSec が使用できないということもある。また、当初インターネットは研究ネッ トワークから始まったが、音楽、画像、動画などの大容量のマルチメディア情報をやり 取りするようになって IPv4 では対応できなくなりつつある。携帯電話や携帯端末機、 自動車、情報家電などもインターネットに接続され、常時接続環境が普及した場合、プ ライベートアドレスや NAT の限界も見えてきている。しかし、IPv6 では、アドレス空 間が拡大されたことから、このような環境変化などに対応できると考えられる(図 3)。 このように IPv6 の導入により、さまざまな機器がネットワークにつながり、それらの 間で通信が可能になり、新しい応用も考えられる。このように、IPv6 は様々な可能性 を支える基盤技術といえる。 モバイル 研究ネットワ 研究ネット ーク ワーク 携帯電話 携帯情報端末 研究ネット 商用ネットワー ワーク ク(ISP) 商用ネットワー 自動車 ク(ISP) 企業内 IP SOHO ネットワーク 企業内 IP SOHO ネットワーク 情報家電 【図 3】インターネット技術の適用範囲の拡大 5 第3節 KAME プロジェクト・FreeBSD について KAME プロジェクトとは、IIJ、NEC、東芝、日立、富士通、横河電機各社による共 同研究プロジェクトである。IPv6 と IPsec の開発及び普及を目的として、1998 年から 活動している。 KAME プロジェクトでは BSD 系の OS(FreeBSD、NetBSD、OpenBSD など)を ターゲットとしてプロトコルスタックの開発やアプリケーションの IPv6 対応などを行 っている。2005 年には、IPv6 の基本規格の実装はほぼ安定したということで、 「KAME プロジェクト完成宣言」が行われ、2006 年 3 月をもって活動の終了が発表された。ち なみに、KAME プロジェクトの Web サイトに IPv6 でアクセスするとトップページの 亀の画像が手足を動かすアニメーションをするようになっている。このページは、IPv6 で通信可能かどうかを判断する手段として広く知られており、「亀が躍る」と呼ばれて いる。KAME の実装は BSD ライセンス下でフリーソフトウェアとして公開されており、 現在までに各 BSD UNIX の IPv6 スタックとして採用されており、さらにルータベン ダなどにも採用されている。KAME プロジェクトは、USAGI プロジェクトや TAHI プロジェクト同様に WIDE プロジェクト傘下のプロジェクトで、特にこれらのプロジ ェクトとは密接に関係している。 FreeBSD とは、UNIX 系のオープンソースの OS であり、NetBSD や OpenBSD と 同じ BSD の子孫のひとつである。特徴は、Web サイトで、安定していて高速・高性能 かつ安全・先進的な機能や多くのセキュリティ機能を提供しており、FreeBSD jail(OS レベル仮想化機構)等の機能もレンタルサーバ等に適したシステムであるといえる。 Linux とは異なり、カーネルとユーザーランドを含めてひとつの OS であり、そして OS 側に GPL ライセンスのものを含まないようにしている。かつては自分の環境に合 わせてカーネルを再ビルドする方法が主流であったが、generic カーネルに必要に応じ てカーネルモジュールを追加する形で運用することが多い。 第4節 Linux について Linux とは、一般的には UNIX 系のコンピュータ用 OS の一群を示し、厳密にはその 中核となる部分であるカーネルのことである。1991 年にフィンランドのヘルシンキ大 学の大学院生(当時)Linus Torvalds 氏によって開発された。最初はアセンブリ言語 で記述されたターミナルエミュレータだったが、その後 Minix よりも優れた Minix を 作るために拡張された。現在では、パーソナルコンピュータに限らず、携帯電話のよう な組み込みシステムからメインフレームや HPCC などのスーパーコンピュータまで、 6 幅広く利用されている。Linux はほかの OS に比べ、低い性能のコンピュータでも軽快 に動作する。Linux と呼ばれているものには、Red Hat、Debian、Slackware など、 各種のディストリビューションがあり、それぞれ少しずつ違いがある。ただし、本当の 意味で Linux と呼べるのはカーネルのみであり、OS を構成するほかの部分は GNU も しくは BSD スタイルライセンスを採用しているソフトウェアで構成されている。 Linux カーネルを用いて構築された OS 環境は、一時的には UNIX 系 OS、UNIX 互換 OS な どとして分類される。ただし厳密には本来の UNIX と混同して扱うことは適切ではな い。かつては「ハッカーの OS」としてのイメージが強かったが、最近ではユーザーフ レンドリーなデスクトップ環境が充実し、さらにシステムソフトウェアパッケージなど の管理システムも発達し、グラフィカルなラッパーなどが充実した結果、システムの保 守運用も容易なものとなったため、それまで縁遠いものとされてきたエンドユーザーの 一部にも普及し始めている。さらに無料なうえ、オープンソースで改良も自由であるが、 改変、追加した部分は GPL に基づいてソースの改良は公開しなければならないという 条件がある。最近になり基本ライブラリである libc についても、GNU libc を採用する ものがほとんどであるため、システムを構成する最も基本となるソフトウェアは、 Linux カーネルと GNU libc、gcc の 3 点セットであるといえる。ほかのツールの選択 の違いや、gcc やカーネルの採用バージョンの違いはあるが、 この 3 点を抑えておけば、 読み替えることが可能である。この多くの利用者の知識を取り入れるというウィキペデ ィアとよく似た利用方法が、各方面に利用できる「幅広い機能」と数多くの利用者によ る修正を経た結果の「高い信頼性」につながっている。 7 第3章 第1節 Linux での IPv6 実装 Linux の IPv6 実装の現状 現在、IPv4 アドレス枯渇問題は、インターネットアーキテクチャに対して非常に大 きな影響を与えている。まず、インターネットをレイヤ分けすると(図 4)のように表 現できる。IP を表す第 3 層(ネットワーク層)のプロトコルだけが単一となっており、 それ以外はすべて複数のプロトコルが存在しているため、砂時計のような形になってい る。しかし、今までは単一であった IP が IPv6 の登場によって 2 つへ変わろうとして いる。 (図 5)IPv6 と、IPv4 には互換性がないため、両者は平行して存在するようにな り、IPv6 インターネットと IPv4 インターネットが同時に利用されるようになることが 考えられる。その時、一般的な家庭での接続形態は(図 6)のようになる。現時点では、 各家庭からのインターネット接続は IPv4 に対してのみである。しかし、それと同時に IPv6 とも接続することが、徐々に可能となっていくと思われている。しかし、一般家 庭へ配線を考えた場合、結局は1つの配線に IPv6 と IPv4 の両方のパケットが流れる だけであり、物理的には同じ通信路やトロポジになる部分も多いと思われる。 Thunderbird Firefox Mew Apache POP3 TELNET HTTP SMTP TCP UDP Thunderbird Firefox Mew Apache POP3 TELNET HTTP SMTP TCP UDP IPv4 IPv4 MPLS PPP Ethernet SONET CAT-5e CAT-6 Wireless MPLS PPP Ethernet SONET CAT-5e CAT-6 Wireless 【図 4】 【図 5】 IPv6 が加わったレイヤ分け IPv4 のレイヤ分け IPv4インター ネット IPv6インター ネット CPE 【図 6】 IPv6 一般的な家庭での接続形態 8 そこで、Linux の IPv6 対応状況であるが、FreeBSD の KAME プロジェクトなどと比 較すると、あまり芳しくない。しかし、現在のバージョンの Linux が IPv6 のプラット フォームとして利用できないわけではない。現在の Linux の実装では、IPv6 サーバや ルータとしての利用で問題が発生する場合もあるが、デスクトップの IPv6 端末として 利用するには、十分な機能がある。さらに、BSD や Solaris などとも比較しても、日本 語に対応した環境構築が容易なためデスクトップの IPv6 対応ホストとして考えた場合 は非常に便利なものである。 Linux での IPv6 実装において、問題の一つはカーネル内部のスタックの未分離問題 である。Linux カーネルの IPv6 プロトコルスタックは、 IPv4 プロトコルスタックと別々 になっていないため、IPv6 だけを利用したものは作れない。同様に、カーネル内部で IPv4 と IPv6 が分離していないため、KAME 環境のように IPv6 と IPv4 を分けて管理 することができない。 (図 7)そのため、1つのプログラムで、IPv6 と IPv4 のサービ スを行う必要がある。 IPv6独自部分 IPv4スタック + IPv4、IPv6共通部分 デバイスドライバなど 【図 7】 カーネル内部のプロトコルスタックの構造 IPv6 において、アドレス自動生成を使用する場合、ホストはルータが出す Router Advertisement メッセージを受信し、それに追従して状態を変える。現在の Linux カ ーネルでは、この機能に問題があり、実験目的のネットワークなどでは、運用中にアド レスが変更されるなど、ルータを変更した場合などに正常な通信ができなくなるという 問題がある。そのため、アドレスの付け替えやルータの入れ替えなどを行うたびに、ア ドレス自動生成を利用する Linux は、再起動する必要がでてくる。 アプリケーションに関しても、最近になって sendmail や BIND のように IPv6 が標 準で対応しているソフトウェアも増えてきてはいる。しかし、開発の本家で IPv6 への 対応がいまだに行われていないものに関しては、IPv6 利用者や IPv6 プロトコルスタッ フの開発に携わっている人たちが、独自にパッチを製作している。さらに、Linux では IPv6 アプリケーションのパッケージを IPv4 用のパッケージと別に配布する体制のデ ィストリビューションがないため、IPv6 を利用する場合、自分でバイナリパッケージ を製作する必要がある。 9 第2節 IPv6 の基本設定 まず、Linux で利用する OS は、IPv6 対応を積極的に行っているディストリビュー ションの中でも、日本語の利用環境が整っている Kondara/MNU Linux を利用する。 Kondara/MNU Linux には、Kondara プロジェクトから配布されているフリーと商用 の 2 種類のバージョンがあるが、ここでは安定していてかつ最新である商用版である Kondara2000 をベースに解説していく。OS のインストールは、通常のインストールで よく、インストール終了後すでに IPv6 対応がされたカーネルなどがインストールされ ている。 [root@linux root]$ sysctl -a|grep ipv6 net.ipv6.conf.eth0.router_solicitation_delay = 1 net.ipv6.conf.rth0.router_solicitation_interval = 4 net.ipv6.conf.rth0.router_solicitations = 3 net.ipv6.conf.rth0.dad_transmits = 1 net.ipv6.conf.rth0.autoconf = 1 ←eth0のアドレス自動生成は有効 net.ipv6.conf.rth0.accept_redirects = 1 net.ipv6.conf.rth0.accept_ra = 1 ←eth0でRouter Advertisementは受理する net.ipv6.conf.rth0.mtu = 1500 net.ipv6.conf.rth0.hop_limit = 64 net.ipv6.conf.rth0.forwarding = 0 (中略) net.ipv6.conf.default.autoconf = 1 ←標準のアドレス自動生成は有効 net.ipv6.conf.default.accept_redirects = 1 net.ipv6.conf.default.accept_ra = 1 ←標準でRouter Advertisementは受理する net.ipv6.conf.default.mtu = 1280 net.ipv6.conf.default.hop_limit = 64 (中略) net.ipv6.route.max_size = 4096 net.ipv6.route.gc_thresh = 1024 【図 8】 sysctl コマンドによるカーネルの状態確認 次に、IPv6 の設定であるが、DNS と Web サーバをインストールするためにアドレ ス自動生成を利用するための設定を行う。Kondara に限らず、最近の Linux ディスト リビューションでは、カーネル変数の設定に/etc/sysct1.conf ファイルを用い、起動時 に sysctl コマンドがその設定を見て自動的にカーネル変数に値を書き込むようになっ ている。流れとしては、最初に現在の IPv6 関係のカーネル変数がどのようになってい るかを確認した後、不足部分を/etc/sysctl.conf に定義する。 アドレス自動生成を用いたホスト設定は、sysctl で確認する。確認すべき項目は autoconf と accept_ra の 2 か所で、現在利用しているインターフェースおよびデフォ ルトの設定が 1 になっていることを確認する(図 8)。ここでは、eth0 でルータの通知 を受信し、アドレス自動生成をする設定になっている。 10 第3節 アプリケーションの導入 Kondara2000 ではカーネルおよび一部のアプリケーションは IPv6 に対応しているが、 ソフトウェアの一部は IPv6 に対応していない。そこで、ソフトウェアを Apache およ び BIND9 に変更し導入する。Kondara は RedHat と同じ rpm コマンドでアプリケー ションを管理しているため、これを利用して必要なソフトウェアを導入していく。 まず、rpm コマンドについて解説する。rpm コマンドとは 、RedHat Package Manager の略であり、プログラムなどのバイナリファイルや設定ファイル、ドキ ュメントなどがひとまとめになったものを示す。rpm コマンドには、『バイナリパ ッケージのインストール、削除、アップグレード』『インストール済みのパッケー ジに関する問い合わせ』『ソースからのバイナリおよびソースパッケージの構築』 という大きく分けて 3 つの機能がある。この中から、 『ソースからのバイナリおよ びソースパッケージの構築』を利用してバイナリパッケージの作成とインストール を行う。 まず、バイナリパッケージのインストールを行う必要がある。RPM 用のバイナリパ ッケージは、通常ファイル名が『パッケージ+バージョン番号.CPU アーキテクチャ /usr/src/redhat SOURCES SRPMS SPECS コンパイルなど ソースファイル 作成済みソース specファイル置場 作業ディレクトリ バッチファイル置場 パッケージ置場 BUILD RPMS i386 i586 386用バイナリパッケージ置場 noarch アーキテクチャ非依存 パッケージ置場 【図 9】 /usr/src/redhat 以下のディレクトリ構造 rpm -Uvh パッケージファイル名 【図 10】 バイナリパッケージのアップグレードインストール 名.rpm』となっている。インテル対応では”i386.rpm”や”i586.rpm”というファイル名と なるが、機種依存しない画像データや font データなどは”noarch.rpm”というファイル 名となる。また、ディレクトリ構造は(図 9)のようになっている。既存アプリケーシ ョンのバージョンアップ版を導入する場合は、 (図 10)のようにするとアップグレード インストールされる。 RPM のソースパッケージには、nosrc.rpm と src.rpm の 2 種類がある。これらの違 いは、nosrc.rpm は、一部のファイルがソースパッケージに含まれていないため別途ダ 11 ウンロードが必要になる。Src.rpm は、すべての必要なファイルがパッケージに含まれ ている。Kondara では、オリジナルソフトウェアの配布コントロールや、配布制限の あるソフトウェアの、ソースパッケージの配布の流通を考慮し、nosrc.rpm が基本にな っている。まず、 (図11)のように/usr/src/redhat/SPECS にある『パッケージ名.spec』 を参照し、NoSource フィールドを確認して不足しているソースを判断し、ソースを別 rpm -i パッケージ名.nosrc.rpm 【図 11】 ソースパッケージの展開 rpm -ba パッケージ名.spec 【図 12】 バイナリパッケージの作成 途でダウンロードしたら、/usr/src/redhat/SOURCES に置いておく。その後、SPECS ディレクトリで、 (図12)のようにすれば/usr/src/redhat/RPMS/以下にバイナリパッ ケージが作成されるため、そのパッケージを RPM でインストールする。 次に、IPv6 を使用する上で必要なソフトウェアを導入していく。Kondara2000 では、 inetd、telnet、ftp などが IPv6 に対応していないため、最小限動作確認に必要なもの として inetd と telnet、telnetd の IPv6 対応版をインストールする必要がある。 最初に開発版のソースパッケージから、ソースパッケージとその他必要なソースを入 手する。Linux の IPv6 の情報がまとめられたサイトがあり、そこで紹介されている関 連サイトから様々なソースや IPv6 パッチを入手することができる。このとき、注意し なければならないことが、最近の Kondara の開発版や Redhat の 7 以降では、新しい RPM のパッケージ方式を利用している。そのため、RPM のバージョン 4 系列のもの でないとうまく取り扱えない場合がある。その場合、先に RPM を ver.4 以上のものと 取り換える必要がある。そのため、 (表 1)のようなソースパッケージを利用する。 ・apache-1.3.12-3k.src.rpm ・inetd-0.16-6k.src.rpm ・telnet-0.16-7k.src.rpm ・bind-9.0.0-1k.src.rpm ・tcp_wrappers-7.6-13k.src.rpm 【表 1】 利用するソースパッケージ 次に、アプリケーションのコンパイルとインストールを行う。今回導入するアプリケー ションでは telnet と inetd の間に依存関係が存在するため、inetd を先にインストール する必要がある。しかし、コンパイル時の依存関係はないため、コンパイル自体は独立 して行うことができる。まず、/usr/src/redhat/SPECS ディレクトリを開き、bash のプ ロンプトで(図 13)のように入力すると、すべてのアプリケーションが自動でコンパ イルされてバイナリパッケージが作成される。次に、/usr/src/redhat/RPMS/ディレク トリを開き、パッケージができていることを確認する。このとき正常にコンパイルでき 12 ていれば(図 14)のようになっている。 [root@linux SPECS]$ for I in *.spec ;do rpm -ba $i ;done 【図13】 全パッケージの一括ビルド [root@linux root]$ cd /usr/src/redhat/RPMS [root@linux RPMS]$ Is i386 i586 noarch [root@linux RPMS]$ IS */ i386/: apache-1.3.12-3k.i386.rpm bind-utils-9.0.0-1k.i386.rpm apache-devel-1.3.12-3k.i386.rpm inetd-0.16-6k.i386.rpm apache-manual-1.3.12-3k.i386.rpm tcp_wrappers-7.6-13k.i386.rpm bind-9.0.0-1k.i386.rpm telnet-0.16-7k.i386.rpm bind-devel-9.0.0-1k.i386.rpm telnet-server-0.16-7k.i386.rpm i586/: noarch/: [root@linux RPMS]$ 【図14】 作成済みパッケージの確認 これらのファイルを順番に rpm-Uvh してインストールするが、古いバージョンと衝突 してインストールできない場合がある。その場合一度古いバージョンを削除したうえで 新しいバージョンをインストールするか、RPM に-force オプションを与えて強制的に インストールする方法がある。しかし、強制インストールには問題があり、元になるア プリケーションのバージョンアップに伴い、パッケージのバージョンアップが発生した 場合、rpm コマンドを利用したアップデートインストールができない(RPM がエラー で異常終了する)場合がある。 第 4 節 パッケージ管理によらないアプリケーションの導 入 IPv6 対応パッケージの中には、アプリケーションのバージョンアップや最新開発版 を利用するとき、対応しているパッケージがないことがある。このような場合でも、い ずれは入手可能になるが、セキュリティ上の理由などから、対応パッケージが配布され るのを待っていられないこともある。そのような場合は独自に IPv6 対応パッチを入手 して、コンパイルとインストールを行う必要がある。前節で紹介したアプリケーション のうち、Apache の開発版および BIND9 以外は IPv6 を標準サポートしていないため、 それらのアプリケーションはパッチを探してコンパイルする必要がある。また、これら のパッチは RPM を用いずにインストールしなければならないため、目的のバージョン のソフトウェア用の IPv6 対応ソースパッケージが見つからなかった場合、自分でパッ ケージ化するか、インストールする必要がある。しかし、IPv6 非対応のソースパッケ ージがある場合、ビルドの手順が spec ファイルに記載されており、Linux の IPv4 環境 13 で動作させるためのパッチが同封されているのでこれを用いればコンパイルは簡単に 行うことができる。 まず、インストールするアプリケーション用の IPv6 対応パッチを web 上から探し、 ダウンロードする。次に、そのソフトウェアのバージョンと同じバージョンの IPv4 ソ ースパッケージを探しダウンロードし、パッケージを展開しておく。そして、SPEC デ rpm -bp スペックファイル 【図 15】 rpm によるソースの展開とパッチの適用 ィレクトリを開き(図 15)のコマンドで BUILD ディレクトリにソースを展開しパッ チを適用する。 すると、BUILD ディレクトリ以下に IPv4 環境で必要なパッチが適用済みになった 展開済みソースができるので、それに対して IPv6 パッチを適用してインストールを行 う。IPv6 パッチの適用が完了したら、IPv6 対応パッチに付属しているテキストファイ ルを参照し、IPv6 対応させる場合に必要なコンパイルオプションなどを確認しておく。 第5節 アプリケーションの設定 まず、inetd の設定を行うが、動作確認のために telnet コネクションを受け付ける設定 # #telnet telnet stream # stream tcp nowait tcp nowait root root /usr/sbin/tcpd /usr/sbin/in.telnetd in.telnetd in.telnetd 【図 16】/etc/inetd.conf の記述例 を行う。Tcp_wrapper を用いることもできるが、動作しなかったときにどこが間違っ ていたのかわからなくなるので、tcp_wrapper を用いず telnet で接続できるように、 (図 16)のように/etc/inetd.conf を編集する。 Apache の設定は、RPM でインストールした場合、各ファイルがどこにインストー ルされているか確認しなければならない。そのため、Apache のバイナリパッケージに 含まれているファイル一覧を表示させ、そのリストを確認する(図 17)。 この例では、設定ファイルが/etc/httpd/conf 以下に格納され、画像や HTML ファイ ルなどが/home/httpd 以下に格納されている。起動スクリプトもインストールされてお り、ログのメンテナンスの設定も確認できる。 14 [root@linux /root]# rpm -q -l apache /etc/httpd/conf ┐ /etc/httpd/conf/access.conf | /etc/httpd/conf/httpd.conf |←設定ファイル関連 /etc/httpd/conf/magic | /etc/httpd/conf/srm.conf ┘ /etc/httpd/logs ←ログの格納場所 /etc/httpd/modules ←モジュールの格納場所 /etc/logrotate.d/apache ←ログの処理関連 /etc/rc.d/init.d/httpd ←起動スクリプト関連 /etc/rc.d/rc0.d/k15httpd /etc/rc.d/rc1.d/k15httpd /etc/rc.d/rc2.d/k15httpd /etc/rc.d/rc3.d/k15httpd /etc/rc.d/rc4.d/k15httpd /etc/rc.d/rc5.d/k15httpd /etc/rc.d/rc6.d/k15httpd /home/httpd ←wwwデータ置場所関連 (中略) /home/httpd/icons/transfer.gif /home/httpd/icons/unknown.gif /home/httpd/icons/up.gif /home/httpd/icons/uu.gif 【図 17】 Apache のバイナリパッケージのファイル確認 同様に、BIND にインストールされたファイルを確認する(図 18)。 [root@linux /root]# rpm -q -l bind-9.0.0-1k /etc/init.d/named /etc/logrotate.d/named ←namedのログの取り扱いの設定 /usr/doc/bind-9.0.0 ←ドキュメント置場 (中略) /usr/doc/bind-9.0.0/doc/rfc/rfc2874.txt /usr/doc/bind-9.0.0/doc/rfc/rfc952.txt /usr/man/man5/rndc.conf.5 /usr/man/man8/named.8 /usr/man/man8/rndc.8 /usr/sbin/dnssec-keygen /usr/sbin/dnssec-makekeyset /usr/sbin/dnssec-signzone /usr/sbin/lwresd /usr/sbin/named ←named本体 /usr/sbin/named-bootconf /usr/sbin/rndc /var/named ←namedのログ置場 【図 18】 BIND9 のパッケージの中身確認 ここには named の設定ファイルがないので、named のバイナリから設定ファイルを引 き出す(図 19)。 [root@linux /root]# strings /usr/sbin/named |grep named.conf /etc/named.conf [root@linux /root]# strings /usr/sbin/named |grep named.conf 【図 19】 named.conf の場所の確認 15 (図 19)から、named のデフォルトの設定ファイルは/etc 以下に置くようにコンパイ ルされていることがわかる 第6節 動作確認 設定が完了したら一度再起動を行い、正常に起動することを確認する。正常に起動で きたら、OS の動作確認でアドレスの自動生成と、telnet で接続し、ログインできるか を確認する。 まず、ifconfig コマンドで、インターフェース状態を確認し、アドレス自動生成が正 常に行われているかの確認をする(図 20) 。 ネットワークインターフェースに IPv6 アドレスが割り当てられていることを確認でき たら(図 20 下線部) 、telnet で inetd と telnetd が IPv6 接続を受け付けられるかの確 認をする(図 21) 。 [root@linux /root]# ifconfig eth0 eth0 リンク方法:イーサネット ハードウェアアドレス00:10:A4:8F:98:83 inetアドレス:xxx.xxx.xxx.xxx ブロードキャスト:xxx.xxx.xxx.xxx マスク:255.255.255.0 inet6アドレス: 3ffe:501:ffff:9101:210:a4ff:fe8f:9883 /64 範囲:集約可能 inet6アドレス: fe80::210:a4ff:fe8f:9883/10 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RXパケット:121314 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:20649 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):30 TXキュー長:100 割り込み:11 ベースアドレス:0x1400 [root@linux /root]# 【図 20】 ifconfig によるインターフェースの状態確認 [root@linux /root]# telnet 3ffe:501:ffff:9101:210:a4ff:fe8f:9883 Trying 3ffe:501:ffff:9101:210:a4ff:fe8f:9883… Connected to 3ffe:501:ffff:9101:210:a4ff:fe8f:9883. Escape character is ‘^]’ . Kondara MNU/Linux 2000 (Sushi) Kernel 2.2.16-5k on an i686 login: login: Conection closed by foreign host. 【図 21】telnet による接続確認 以上が、OS での動作確認である。また、セキュリティを高める場合は、telnet を tcp_wrapper で起動するか、telnet コネクションを受け付けないようにするとよい。 次に、Apache の動作確認では、プロセスとして httpd が起動しているかどうかと httpd が IPv6 接続を受け入れているかの確認を行う。 まず、プロセスが起動しているかを ps コマンドで確認する(図 22)。 16 [root@linux /root]# ps ax |grep httpd 14195 ? s 0:00 httpd 14197 ? s 0:00 httpd 14198 ? s 0:00 httpd 14199 ? s 0:00 httpd 14200 ? s 0:00 httpd 14201 ? s 0:00 httpd 14202 ? s 0:00 httpd 14203 ? s 0:00 httpd 14204 ? s 0:00 httpd 14220 pts/3 s 0:00 grep httpd [root@linux /root]# 【図 22】 Apache のプロセス確認 次に、telnet で 80 番ポートに接続し、簡単な http のリクエストを行う(図 23) 。 [root@linux /root]# telnet 3ffe:501:ffff:9101:210:a4ff:fe8f:9883 80 Trying 3ffe:501:ffff:9101:210:a4ff:fe8f:9883… Connected to 3ffe:501:ffff:9101:210:a4ff:fe8f:9883. Escape character is ‘^]’ . GET http://kondara/index.html <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 3.2 Final//EN” <HTML> <HEAD> <TITLE>Test Page for Kondara MNU/Linux’s Apache Installation</TITLE> </HEAD> <!-- Background white, links blue (unvisited) , navy (visited), red (active) --> <BODY BGCOLOR=” #FFFFFF” TEXT=” #000000” LINK=” #0000FF” VLINK=” #000080” ALINK=” #FF0000” > <H1 ALIGN=” CENTER” >It Worked!</H1> <P> If you can see this, it means that the installation of the (中略) <a href=” http://www.kondara.org/” ><img src=” poweredby.png” alt=” [ Powered by Kondara MNU/Linux ]” ></a> </p> </BODY> </HTML> Connection closed by foreign host. [root@linux /root]# 【図 23】 telnet による httpd の動作確認 以上が成功すれば、Apache の動作確認は終了である。telnet での http リクエストは、 一般に 1 本の TCP 接続を利用してネットワークサービスを行うサーバへの動作確認方 法の中でも、Web ブラウザを用いての動作確認より、単純で簡単な方法である。その 他の Web ブラウザを用いずに行う動作確認の方法としては、SMTP(Simple Mail Transfer Protocol)や POP(Post Office Protocol)、NNTP(Network News Transfer Protocol)などが、同様の方法で簡単に動作確認をすることができる。 また、Apache の動作確認でよくある問題で、httpd の起動時にサーバのアドレスが 見つからないといったエラーが検出されることがある。このようなエラーの回避方法は、 17 httpd.conf のサーバ名を記述する場所に FQDN(Fully Qualified Domain Name)ホ スト名を設定し、/etc/hosts にも記述すれば解決される。 BIND での動作確認も、Apache と同様にプロセスの確認(図 24)を行った後、IPv6 関連のリソースレコードを検索して行う。 [root@linux /root]# ps ax |grep named 14315 ? s 0:00 named 14316 ? s 0:00 named 14317 ? s 0:00 named 14318 ? s 0:00 named 14319 ? s 0:00 named 0:00 grep named 14323 pts/ s [root@linux /root]# 【図 24】 named のプロセス確認 また、定義ファイルなどに問題があった場合は/var/log/message ファイルを確認する (図 25) 。 [root@linux log]# tail message Mar 2 18:46:42 linux named[14315] : starting BIND 9.0.0 Mar 2 18:46:42 linux named[14317] : loading configration from ‘/etc/named.conf’ Mar 2 18:46:43 linux named[14317] : the default for the ‘auth-nxdomain’ option is now ‘no’ Mar 2 18:46:43 linux named[14317] : listening on IPv4 interface lo, 127.0.0.1#53 Mar 2 18:46:43 linux named[14317] : listening on IPv4 interface eth0, xxx.xxx.xxx.xxx#53 Mar 2 18:46:43 linux named[14317] : dns_master_load: named.local:7: using RFC 1035 TTL semantics Mar 2 18:46:43 linux named[14317] : running [root@linux log]# 【図 25】 /var/log/message の BIND のイメージ 次に、/etc/resolv.conf を編集して DNS サーバとして自身を参照するように設定する (図 26) 。 domain v6.net seach v6.net nameserver 127.0.0.1 【図 26】 /etc/resolv.conf の例 最後に、実際に DNS の問い合わせを発行して検索できることを確認する(図 27)。 [root@linux /root]# dig @127.0.0.1 AAAA linux.v6.net 【図 27】 dig による BIND9 の動作確認 第7節 IPv6 アドレス用マクロ /usr/include/netinet/in.h には、IPv6 アドレスの判定や比較用のマクロが宣言されて いる(図 28)。[4]このようなマクロは知っておくと便利なのでこの場で紹介しておく。 18 #define IN6_IS_ADDR_UNSPECIFIED(a) (((__const unit32_t *) (a))[0] == 0 && ((__const unit32_t *) (a))[1] == 0 && ((__const unit32_t *) (a))[2] == 0 && ((__const unit32_t *) (a))[3] == 0) #define IN6_IS_ADDR_LOOPBACK(a) (((__const unit32_t *) (a))[0] == 0 && ((__const unit32_t *) (a))[1] == 0 && ((__const unit32_t *) (a))[2] == 0 && ((__const unit32_t *) (a))[3] == htonl (1)) #define IN6_IS_ADDR_MULTICAST(a) (((__sonst unit8_t *) (a))[0] == 0xff #define IN6_IS_ADDR_LINKLOCAL(a) ((((__const unit32_t *) (a))[0] & htonl (0xffc00000)) == htonl (0xfe800000)) #define IN6_IS_ADDR_SITELOCAL(a) ((((__const unit32_t *) (a))[0] & htonl (0xffc00000)) == htonl (0xfec00000)) #define IN6_IS_ADDR_V4MAPPED(a) ((((__const unit32_t *) (a))[0] == 0) && (((__const unit32_t *) (a))[1] == 0) && (((__const unit32_t *) (a))[2] == htonl (0xffff))) #define IN6_IS_ADDR_V4COMPAT(a) ((((__const unit32_t *) (a))[0] == 0) && (((__const unit32_t *) (a))[1] == 0) && (((__const unit32_t *) (a))[2] == 0) && (ntohl (((__const unit32_t *) (a))[3]) > 1)) #define IN6_ARE_ADDR_EQUAL(a,b) ((((__const unit32_t *) (a))[0] == ((__const unit32_t *) (b))[0]) && (((__const unit32_t *) (a))[1] == ((__const unit32_t *) (b))[1]) && (((__const unit32_t *) (a))[2] == ((__const unit32_t *) (b))[2]) && (((__const unit32_t *) (a))[3] == ((__const unit32_t *) (b))[3])) 【図 28】 IPv6 用の便利なマクロ 第8節 Linux の IPv6 対応の将来動向 現在、IPv6 対応において、カーネルや GNU lbic を中心に、Linux を対象にしたプ ロジェクトが発足している。プロジェクト名は USAGI(UniverSAl play Ground for IPv6)プロジェクトである。USAGI プロジェクトとは、KAME プロジェクトや TAHI プロジェクトと同じ WIDE プロジェクト傘下のプロジェクトであり、Red Hat や Debian などの主要なディストリビューションに対応したパッケージなどを製作してい る。また、IPv6 には、通常のプロトコルスタック以外の機能もある。IPv6 は、規格上 IPSec の実装が義務付けられている。Linux においても、IPSec の実装が進められ、ま た、Mobile IPv6 の実装も開始されている。これらのプロジェクトがさらに進めば、今 後の Linux における IPv6 の利用が広がり、ますます進展していくと思われる。 19 第4章 第1節 FreeBSD での IPv6 実装 OS の基本設定 はじめに、FreeBSD の入手は、ネットワークからダウンロードするか、FreeBSD に 関連する書籍を購入し、それに付属している CD-ROM を利用するなどの方法がある。 設定の方針としては、 ・ルータにはしない(ネットワーク的にはリーフノードとする) ・アドレス自動生成を利用して Ipv6 の設定をする ・DNS サーバを動作させるため、BIND をインストールする ・Web サーバを動作させるため、Apache の Ipv6 対応版をインストールする 以上を踏まえた上で FreeBSD の設定を行っていく。 まず、OS の基本設定であるが、FreeBSD における基本設定は、基本設定ファイルと ブート設定の関係で、/etc/rc.conf ファイルを編集して行う。/etc/rc.conf は、shell 変数 に値を定義する形で設定の記述をする形式で、 (図 29)のような流れとなっている。ま た、shell 変数とは定義した値を、そのシェルが終了するまで残しておくものである。 しかし、その値を参照できるのは現在利用しているシェル上のみとなる。 /etc/defaults/rc.conf 読み込み shell変数値への 標準値の設定 追加読み込みの設定 実行 /bin/init /etc/rc 読み込み shell変数への値の設定 shell変数値の継承と実行 /etc/rc.conf /etc/rc.network等 /etc/rc.conf.local 【図 29】 ブート過程の各ファイルの関係 (図 29)の起動の流れは以下のように行われる (1) init がスクリプト(/etc/rc)を実行 (2) /etc/rc が/etc/defaults/rc.conf を読み込み変数に値を設定 (3) /etc/rc が/etc/rc.conf を読み込み変数に値を設定 (4) /etc/rc が/etc/rc.network などの軌道スクリプトを実行 (5) /etc/rc.network などの起動スクリプトは、rc.conf などで設定された変数の値 に従ってコマンドを実行し、カーネル変数の設定を行う ブート過程の説明から、/etc/rc.conf は/etc/defaults/rc.conf の内容から、上書きした 20 い部分のみを/etc/rc.conf に定義すればよいことがわかる。 (図 30)は、/etc/defaults/rc.conf の Ipv6 関連部分を、説明とともに記載したもので ある。FreeBSD マシンをルータとして利用したい場合やその他の設定を行いたい場合 は、関連文書(man ページなど)を参考にして、独自に設定し、利用するとよい。 ### ### ### ### /etc/defaults/rc.confのIPv6関連項目の抜粋と説明 ### ### #IPv6を利用する場合はYES。 ipv6_enable=” NO” ipv6_network_interfaces=” auto” #IPv6を利用するインターフェースのリスト。 ipv6_defaultrouter=” NO” # autoは自動判別、アドレス自動生成する場所に指定。 #IPv6のデフォルトルータを手動設定する場合に利用する。 # 利用する場合はデフォルトルータのIPv6アドレスを指定する。 #IPv6のスタティックルートの設定に利用。 # fec0:0000:0000:0006::/64の経路をループバックインターフェースに向ける場合 ipv6_static_routes=”” #ipv6_static_routes=” xxx” #ipv6_route_xxx=” fec0:0000:0000:0006:: -prefixlen 64 ::1” #IPv6のルーティングを行う場合はYES。 ipv6_gateway_enable=” NO” #IPv6のルーティングデーモンを動かす場合はYES。 ipv6_router_enable=” NO” # ipv6_router=” /usr/sbin/route6d#IPv6のルーティングデーモンのフルパス名。 #ルーティングデーモンの引数。 ipv6_router_flags=”” # route6dにサイトローカルアドレスを取り扱うよう #ipv6_router_aflags=” -l” # 指示する場合は”-l”オプションが必要。 #ルータの場合は手動設定の必要があるのでここで指定する。 #ホストの場合でも手動設定する場合はここで指定する。 #手動設定の場合の各インターフェースに対する # ネットワークprefixの設定。 #ipv6_network_interfaces=” ed0 ep0” #ipv6_prefix_ed0=” fec0:0000:0000:0001 fec0:0000:0000:0002” # ed0インターフェースに2つのネットワークアドレスを設定。 #ipv6_prefix_ep0=” fec0:0000:0000:0003 fec0:0000:0000:0004” # ep0インターフェースに2つのネットワークアドレスを設定。 #ipv6_ifconfig_ed0=” fec0:0:0:5::1 prefixlen 64#IPエイリアスの設定。 #リンクローカルアドレスやサイトローカルアドレスの ipv6_default_interface=”” # 発信時に用いるデフォルトのインターフェース #現在はリンクローカルマルチキャスト宛の発信時のみ有効。 #ネットワークのprefixの設定にprefixコマンドを利用するかどうかの設定。 prefixcmd_enable=” YES” #ルータ広告のデーモンを実行する場合はYESに設定。 rtadvd_enable=” YES” # ルータにしないホストの場合はNOでよい。 #IPv6マルチキャストルーティングを行う場合は” YES” mroute6d_enable=” NO” #IPv6マルチキャストのルーティングデーモンのフルパス名。 mroute6d_program=” /usr/sbin/pim6dd” #IPv6マルチキャストルーティングデーモンの引数の指定。 mroute6d_flags=”” #IPv6 over IPv4トンネル(GIFインターフェース)を利用する場合の設定。 gif_interfaces=” NO” #利用しない場合は” NO” #利用する場合の例。 #gif_interfaces=” gif0 gif1” #自分のIPv4アドレスとトンネル先のIPv4アドレス #gifconfig_gif0=” 10.1.1.1 10.1.2.1” #同上 #gifconfig_gif1=” 10.1.1.2 10.1.2.2” #IPv6 over IPv4トンネル(STFインターフェース)を利用する場合の設定。 stf_interface_ipv4addr=”” #STFインターフェースに関してはIPv4からIPv6への移行技術で用いる。 stf_interface_ipv4plen=” 0” stf_interface_ipv6_ifid=” 0:0:0:1” # stf_interface_ipv6_slaid=” 0000” #通常のIPv6トンネルではGIFインターフェースを用いる。 # ipv6_ipv4mapping=” YES” #このホストをIPv6ファイアウォールマシンにする場合は” YES” ipv6_firewall_enable=” NO” #IPv6ファイアウォールの設定起動スクリプトのフルパス名。 ipv6_firewall_script=” /etc/rc.firewall6” ipv6_firewall_type=” UNKNOWN” #IPv6ファイアウォールのタイプの指定(/etc/rc.firewall6を参照)。 #IPv6ファイアウォール起動時のルール追加を表示するかどうかの設定。 ipv6_firewall_quiet=” NO” # ip6fwのコマンドの” -q”オプションに相当。 #IPv6ファイアウォールのロギング機能の設定。 ipv6_firewall_logging=” NO” #IPv6ファイアウォール制御コマンド(ip6fw)の引数の指定。 ipv6_firewall_flags=”” 【図 30】 /etc/defaults/rc.conf のサンプルとその簡単な説明 21 しかし、本論文では、ルータとして利用せず、アドレス自動生成を利用したリーフノ ードとすることになっているため、これに関係する部分だけ記述すればよい。この場合、 /etc/rc.conf の Ipv6 設定は非常に単純なため、 (図 31)のようにするだけでよい。 ### ### ### ### /etc/rc.confの最小限の設定 ### ### #IPv6を利用する場合はYES。 ipv6_enable=” YES” 【図 31】 IPv6 ホストの最小限の設定 以上で OS の基本設定は終了である。また、inetd の設定を telnet で受け付けるように 設定しておけば、後の動作確認で利用するため便利である(図 32) 。 # $FreeBSD: src/etc/inetd.conf,v 1.44.2.3 2011/01/25 16:11:52 kris Exp $ # # Internet server configration database # # @(#)inetd.conf 5.4(Berkeley) 6/30/90 # ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l telnet stream tcp nowait root /usr/libexec/telnetd telnetd #shell stream tcp nowait root /usr/libexec/rshd rshd #login stream tcp nowait root /usr/libexec/rlogind rlogind 【図 32】 /etc/inetd.conf の設定例 第2節 アプリケーションの導入 OS の設定作業で、単体での Ipv6 通信が可能になり、telnet や ftp などは Ipv6 で利 用できるようになっている。しかし、今回の目的はサーバマシンとして動作させるため なので、サーバ関連のソフトウェアなどを導入する必要がある。OS のインストール時 にバイナリパッケージを導入している場合は、Ipv6 サーバ関連のソフトウェアがイン ストールされている。しかし、ここでは IPv6 サーバ関係のソフトウェアがインストー ルされていないことを前提に、インストールする方法を説明していく。 まず、FreeBSD においてアプリケーションを導入する場合、以下の方法がある そのため、これらの方法を用いたインストールにいて説明していく。 ①バイナリパッケージの利用 ②ports を利用してソースからコンパイルする ③独自で最新バージョンをコンパイルする まず、バイナリパッケージの利用についてだが、前述から OS のインストール時にア プリケーショのバイナリパッケージがインストールできる。しかし、/stand/sysinstall コマンドを実行すれば OS とまったく同じインターフェースでバイナリパッケージを インストールすることができる。以下、実際の図でその流れを説明する。[1] ・ /stand/sysinstall の実行 ・ “Index Glossary of functions”を選択(図 33) 22 【図 33】Glossary of functions の選択 ・ “Packages The packages collection”を選択(図 34) 【図 34】The packages collection の選択 23 ・インストールメディアを選択 【図 35】インストールメディアの選択 ・ “ipv6 Ipv6 related software”を選択 【図 36】IPv6 relate software の選択 24 ・パッケージの選択 【図 37】パッケージ選択 ・インストールの実行図 【図 38】インストール実行図 以上の方法でインストールされたバイナリパッケージは、通常/usr/local ディレクト リに導入されている。 次に、ports を利用してソースからコンパイルする方法について説明する。Ports と は、FreeBSD や OpenBSD でソフトウェアのパッケージを管理するシステムである。 ダウンロードからインストール、バイナリパッケージ化までの一連の動作を自動で行え るという便利なものである。Ports は/usr/ports 以下のディレクトリに存在し、負けコ マンドを用いて操作を実行する。その仕組みは(図 39)のようになっている。 / usr すべてのパッケージ ports net ipv6 netに分類されている すべてのパッケージ mozilla mozillaのみ 【図 39】ディレクトリとパッケージの関係 25 /usr/ports 以下のディレクトリはアプリケーションごとに分類されそのアプリケーシ ョンディレクトリ以下に各アプリケーション用のファイルが存在している。例えば、 BIND9 の場合/usr/ports/net/bind9 というディレクトリ以下に、Makefile や FreeBSD の ports 用のパッチやパッケージの定義ファイルがある。このディレクトリに make package コマンドを利用すると、Makefile の定義に従い、インターネットからソース がダウンロードされ、ソースの展開からバイナリパッケージの作成が自動的に行われる。 また、/usr/ports ディレクトリにも Makefile が存在するため、そこで make package コマンドを利用すると全てのソフトウェアのパッケージ作成が行われ、/usr/ports/[カテ ゴリディレクトリ]で make package コマンドを利用するとそのカテゴリ以下の全ての ソフトウェアのパッケージ作成が行われる。 次に、ports 利用して BIND9 と IPv6 対応版の Apache の導入を行う。手順は以下の 通りである。 (1) ディレクトリ/usr/ports/net/bind9 に移動 (2) make package (3) ディレクトリ/usr/ports/www/apache13+ipv6 に移動 (4) make package ここで注意しなければならないのが、バイナリパッケージなどで BIND9 や Apache がインストールされていると make package ができない。そのため、pkg_info コマン ドで BIND や Apache がインストールされていないことを確認し、導入を行う。もし、 BIND や Apache がインストールされていた場合、pkg_delete コマンドを用いればイン ストールパッケージを削除することができる。 第3節 アプリケーションの設定 BIND の設定では、パッケージ化されたバイナリの場合、設定ファイルのデフォルトで のディレクトリなどの場所が分からないことがある。このため、場所を確認するために pkg_info コマンドを用いる。まず、BIND 関連パッケージの名前を知るために、パッ ケージ情報から“bind”を含む部分を探す。 (図 40)から、BIND-9.0.0.1 がインスト ールされていることがわかる。次に、パッケージに含まれているファイルの一覧を確認 するために pkg_info –L で実行する。 26 bash-2.04$ pkg_info |grep bind bind-9.0.0_1 The Berkeley Internet Name Daemon, an implementation of py-gnome-1.0.53 A set of Python bindings GNOME py-gtk-0.6.6 A set of Python bindings for GTK rep-gtk-0.14_1 GTK+ binding for rep Lips interpreter bash-2.04$ pkg_info -L bind-9.0.0_1 Information for bind-9.0.0_1: Files: /usr/local/man/man8/dnssec-signzone.8.gz /usr/local/bin/dig /usr/local/bin/host /usr/local/bin/isc-config.sh /usr/local/bin/nslookup /usr/local/bin/nsupdate /usr/local/include/dns/a6.h /usr/local/include/dns/acl.h /usr/local/include/dns/aclconf.h (中略) /usr/local/lib/libomapi.a /usr/local/sbin/dnssec-keygen /usr/local/sbin/dnssec-makekeyset /usr/local/sbin/dnssec-signkey /usr/local/sbin/dnssec-signzone /usr/local/sbin/lwresd /usr/local/sbin/named /usr/local/sbin/rndc bash-2.04$ strings /usr/local/sbin/named |grep named.conf /usr/local/etc/named.conf bash-2.04$ strings /usr/local/sbin/named |grep named.pid /usr/local/var/run/named.pid 【図 40】BIND のパッケージ情報 図から、named が/usr/local/sbin/以下にインストールされていることがわかる。それ 以外にデフォルトの設定ファイルの場所と、PID ファイルの場所を確認するためにそれ ぞれ探し出す。図では、設定ファイルは/usr/local/etc/named.conf に、PID ファイルは、 /usr/local/var/run/named.pid にあることがわかる。実際に named を運用するために、 設定ファイルに記述し、プロセスの制御に PID ファイルを利用する。まず、プロセス を終了させるために kill コマンドを用いる。PID ファイルの中身が現在稼働中の named のプロセス番号になっているため、これを kill コマンドの引数に利用する(図 41)。 bash-2.04$ kill 'cat /usr/local/var/run/named.pid' 【図 41】BIND の終了 最後に、マシン起動時にデフォルトで DNS サーバが起動するように設定るる。その ため、/etc/rc.conf に named を起動するための記述を行う必要がある(図 42)。この記 述で、次回以降起動の際、named も起動する。 # # named. It may be possible to run named in a sandbox, man security for details. # named_enable=”YES” #namedを起動する場合はYES named_program=” /usr/local/abin/named” #追加インストールしたnamedのパス named_flags=”” #named起動時の引数の定義 【図 42】/etc/rc.conf に追加する BIND 関連設定 27 次に、Apache の設定だが、BIND と同様にパッケージ名とファイルの場所を確認す るために、pkg_info を利用する(図 43) 。 bash-2.04$ pkg_info |grep apache apache+ipv6-1.3.14 The extremely popular Apache http server. Very fast, very c bash-2.04$ pkg_info -L apache+ipv6-1.3.14 Information for apache+ipv6-1.3.14: Files: /usr/local/man/man1/dbmmanage.1.gz (中略) /usr/local/man/man8/rotatelogs.8.gz /usr/local/bin/dbmmanage /usr/local/bin/htdigest /usr/local/bin/htpasswd /usr/local/etc/apache/access.conf.default /usr/local/etc/apache/httpd.conf.default /usr/local/etc/apache/magic.default /usr/local/etc/apache/mime.types.default /usr/local/etc/apache/srm.conf.default /usr/local/etc/rc.d/apache.sh /usr/local/include/apache/ap.h /usr/local/include/apache/ap_alloc.h (中略) /usr/local/sbin/ab /usr/local/sbin/apachectl /usr/local/sbin/apxs /usr/local/sbin/httpd /usr/local/sbin/logresolve /usr/local/sbin/rotatelogs /usr/local/share/doc/apache/README.rus /usr/local/share/doc/apache/apache_pb.gif (中略) /usr/local/www/icons/world2.gif 【図 43】IPv6 対応 Apache のバイナリパッケージ情報 図から、導入されている Apache のパッケージは apache+ipv6-1.3.14 で、プログラ ムの本体は/usr/local/sbin/httpd であり、制御用のコマンドが/usr/local/sbin/apachectl、 そして設定ファイルの場所が/usr/local/etc/apache であることがわかる。また、Apache のパッケージには、OS 起動時に Apache を起動するためのスクリプトがあり、 /usr/local/etc/rc.d/apache.sh であることがわかる。 Apache のパッケージはインストールした時点で自動起動する設定になっているので、 パッケージのインストール以後は起動時に Apache が動作するようになっている。 第4節 動作確認 これまでの設定で、IPv6 で動作する環境が出来上がったので、実際に動作を確認す るために一度再起動し、正常にログインできることを確認する。起動が正常に終了した ら、以下の 3 つの確認を行う。 ① OS が IPv6 で通信可能な状態になっているか ② Apache(httpd)が稼働し、IPv6 の接続を受け入れているか ③ BIND9(named)稼働し、IPv6 関連リソースレコードが検索できるか 28 まず、OS の動作確認として、ネットワークインターフェースの状態を確認する。ル ータが正しく動作しており、設定が適切に行われていれば、アドレス自動生成でネット ワークインターフェースに IPv6 アドレスが設定されているので、これを ifconfig コマ ンドで確認する。コマンドを実行して(図 44)の下線部のように IPv6 アドレスが振り 分けられていれば、アドレス自動生成は正しく動作している。 bash-2.04# ifconfig -a x10: flags=8843<UP,BROADCAST,RUNNING,STMPLEX,MULTICAST> mtu 1500 inet6 fe80::260:8ff:fe88:b446%x10 prefixlen 64 scopeid 0x1 inte6 3ffe:501:ffff:8101:260:8ff:fe88:b446 prefixlen 64 inet xxx.xxx.xxx.xxx netmask 0xffffff00 broadcast xxx.xxx.xxx.xxx ether 60:08:fe:88:b4:46 media: autoselect (100baseTX <full-duplex>) status: active supported media: autoselect 100baseTX <full-duplex> 100baseTX 10baseT/UTP <full-duplex> 10baseT/UTP 100baseTX <hw-loopback> lo0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500 faith0: flags=8041<UP,RUNNING,MULTICAST> mtu 1500 inet6 fe80::260:8ff:fe88:b446%faith0 prefixlen 64 scopeid 0x3 inet 0.0.0.0 netmask 0xff000000 gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280 gif1: flags=8010<POINTOPOINT,MULTICAST> mtu 1280 gif2: flags=8010<POINTOPOINT,MULTICAST> mtu 1280 gif3: flags=8010<POINTOPOINT,MULTICAST> mtu 1280 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500 sl0: flags=co10<POINTOPOINT,LINK2,MULTICAST> mtu 552 bash-2.04# 【図 44】ifconfig の結果サンプル 次に telnet で通信を行い、ほかのホストからこのホストに対して telnet を行い接続 できることを確認する(図 45) 。 bash-2.04$ teln 3fee:501:ffff:8101:260:8ff:fe88:b446 Trying 3fee:501:ffff:8101:260:8ff:fe88:b446… Connected to freebsd Escape character is ‘^]’ . FreeBSD/i386 (freebsd1) (ttyp5) login: login: connection closed by foreign host. bash-2.04$ 【図 45】telnet の実行例 次に、telnet を利用して Apache の動作確認を行う。まず、ps コマンドで httpd が 起動しているかを確認する(図 46)。 freebsd1 ps ax 175 ?? Ss 204 ?? I 205 ?? I 206 ?? I 207 ?? I 208 ?? I 818 ?? I freebsd1 |grep http 0:00.43 /usr/local/sbin/httpd 0:00.01 /usr/local/sbin/httpd 0:00.02 /usr/local/sbin/httpd 0:00.01 /usr/local/sbin/httpd 0:00.00 /usr/local/sbin/httpd 0:00.01 /usr/local/sbin/httpd 0:00.00 /usr/local/sbin/httpd 【図 46】ps コマンドによる httpd の確認 29 次に、80 番ポートに telnet で接続し、ドキュメントルートの index.html を取得する。 (図 47)はローカルマシンから試した場合の結果で、この結果 HTML ドキュメントが 取得できれば動作確認は終了となる。 bash-2.04$ telnet localhost 80 Trying ::1… connected to localhost. Escape character is ‘^]’. GET http://localhost/index.html GET http://localhost/index.html <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 3.2 Final//EN”> <HTML> <HEAD> <TITLE>Test Page for Apache Installation</TITLE> (中略) <P> You are free to use the image below on an Apache-powered web server. Thanks for using Apache! <DIV ALIGN=“CENTER”><IMG SRC=” apache_pb.gif” ALT=”” ></DIV> </BODY> </HTML> Connection closed by foreign host. 【図 47】telnet による Apache の動作確認 最後に、BIND(DNSサーバ)の確認として、IPv4 で問い合わせが処理できること だけを確認する。まず、DNS の問い合わせを行うために/etc/resolv.conf の中身を確認 する。named がこのホストで稼働しているため、/etc/resolv.conf の nameserver のフ ィールドは自身を示すように IPv4 のループバックアドレスを指定しておく(図 48) 。 domain v6.net serch v6.net namesever 127.0.0.1 【図 48】/etc/resolv.conf の例 次に、httpd の確認時と同様に ps コマンドを用いて named が実際に稼働しているかを 確認する。最後に、dig コマンドで確認すれば、BIND の動作確認は終了である(図 49)。 bash-2.04$ dig @127.0.0.1 AAAA freebsd1.v6.net 【図 49】dig による BIND9 の動作確認 30 第5章 第1節 IPv6 対応ルータについて IPv6 対応ルータの仕様の比較 はじめに、現在市販されている IPv6 対応ルータ 8 種類の製品仕様を比較し、まとめ たものを提示する(図 50)。 メーカー corega corega BUFFALO 型番 CG-WLBARGPXB CG-BARPRO6 BBR-4HG 100Mbps 有線速 理論値 度 実測値(FTP) 65Mbps 85Mbps 92Mbps IPv6 ブリッジ デュアルスタック ブリッジ SPI ○ ○ ○ Dos攻撃検知 ○ ○ ○ ○ ○ ○ WAN PPPoE 側IP取 DHCP ○ ○ ○ 得方法 IP Unnumbreed ○ ○ ○ DHCPサーバ機能 ○ ○ ○ IPマスカレイド × ○ ○ DMZ ○ ○ ○ VPNリモートアクセス × × × 無料DDNS機能 ○ ○ × ポート開放 ○ ○ ○ メーカー PLANEX PLANEX IO DATA 型番 BRL-04M MZK-WNH NP-BBRL 100Mbps 有線速 理論値 度 実測値(FTP) 80Mbps 94Mbps 93Mbps IPv6 ブリッジ ブリッジ パススルー SPI × × ○ Dos攻撃検知 × × ○ ○ ○ ○ WAN PPPoE 側IP取 DHCP ○ ○ ○ 得方法 IP Unnumbreed ○ ○ × DHCPサーバ機能 ○ ○ ○ IPマスカレイド ○ ○ ○ DMZ ○ ○ ○ VPNリモートアクセス × × × 無料DDNS機能 ○ ○ ○ ポート開放 ○ ○ ○ BUFFALO WHR-G301N 92Mbps パススルー ○ × ○ ○ × × ○ ○ ○ × ○ IO DATA WN-G54/R3 86Mbps パススルー ○ × ○ ○ × ○ × ○ × ○ ○ 【図 50】IPv6 対応ルータの仕様比較 第2節 IPv6 対応ルータ 8 製品の詳細説明 第1項 corega/CG-WLBARGPXB[5] CG-WLBARGPXB は、corega から 2007 年 1 月に発売された無線ブロードバンドルー タである。標準価格は 5,565 円(税込)である。主な特徴は、無線 LAN 普及推進団体 である『Wi-Fi Alliance』が発表した無線 LAN 接続方式である、 『Wi-Fi Protected Setup』 を採用し、クライアントが corega に対応していればルータと子機のボタンを押すだけ で接続設定ができる。また、ルータの機能オフ時にはスイッチングハブ付き無線 LAN 31 アクセスポイントとしても利用できるため、スイッチ ングハブとして利用しながら Wi-Fi を楽しむなど柔軟 な使い方が可能である。また、本体背面にあるスイッ チを ON にすることで、WPA/WPA2 などのセキュリ ティ機能を利用することもできる。 【図 51】CG-WLBARGPXB 第2項 corega/CG-BARPRO6[6] CG-BARPRO6 は、corega から 2005 年 8 月に発売された IPv6 対応有線ブロードバ ンドルータである。価格は 17,640 円(税込)である。主な機能は、IPv4/IPv6 デュア ルスタック機能を搭載しており、IPv4 と IPv6 の両方のネットワークを利用することが 可能である。また、オートネゴシエーション機能に より、スイッチに接続されたコンピュータと通信速 度、通信モードを自動的に最適化することができる。 さらに、Auto MDI/MDI-X に対応しているため、 接続したイーサネットケーブルの種別を自動認識 できる。そのため、ケーブルの違いなどを考慮しな くても利用することが可能である。また、同梱の簡 単ルータ接続ソフトにより、初心者でも簡単に接続 【図 52】CG-BARPRO6 することが可能である。 第3項 BUFFALO/BBR-4HG[7] BBR-4HG は、BUFFALO から 2003 年 10 月に発売された有線ブロードバンドルー タである。価格は 6,090 円(税込)である。主な機能は、コンピュータをダウンさせる Dos 攻撃や PortScan などを検出すると、クライアントマネージャにポプアップ通知し、 さらにメールで通知してくれるアタックブロッ ク機能がある。また、SPI(ステートフル・パケ ット・インスペクション)機能により、高レベル のパケットフィルタリングが可能となり、通信セ ッション毎にパケットフィルタリングの統合性 をチェックし、セッション終了時には全ポートを 閉じるため不正アクセスの防止も可能となる。そ のため、セキュリティ面に対しては非常に強いル 【図 52】BBR-4HG ータとなっている。 32 第4項 BUFFALO/WHR-G301N[8] WHR-G301N は BUFFALO から 2009 年 12 月に発売された無線ブロードバンドルー タである。価格は 5,565 円(税込)である。主な機能は、最大 300Mbps の無線 LAN 高速規格である 11n に対応している。 さらに、 MIMO (Multiple Input Multiple Output) 技術を使用し、2 本のアンテナで送受信を行うこ とで安定した通信を行うことが可能である。また、 2 台の無線 LAN 親機関での無線通信機能をサポ ートし、通信距離の延長や死角エリアへの中継も 可能となる。また、インターネットを使う時間、 使わない時間などを設定し、オン/オフを自動で行 う『おまかせ節電』機能により、自分の生活に合 わせた省エネが可能となっている。 【図 53】WHR-G301N 第5項 PLANEX/BRL-04M[9] BRL-04M は PLANEX から 2008 年 12 月に発売された有線ブロードバンドルータで ある。価格は 3,280 円(税込)である。主な機能は、接続しているクライアントに対し て必要な情報(ゲートウェイアドレスや DNS アドレスなど)を自動的に割り当てること が可能なため、ネットワークの管理が容易になる ほか、他に DHCP サーバがある場合は DHCP ク ライアントとしても設定が可能である。また、 PPPoE マルチセッションに対応しており、プロ バイダと、フレッツ・スクウェアとの同時接続を 行うことが可能である。さらに、小型だがオート ネゴシエーション機能や Auto MDI/MDI-X に対 応しているため、汎用性の高いルータである。 【図 54】BRL-04M 33 第6項 PLANEX/MZK-WNH[10] MZK-WNH は PLANEX から 2008 年 12 月に発売された無線ブロードバンドルータ である。価格は 5,250 円(税込)である。主な特徴は、パソコンと家庭用ゲーム機など、 セキュリティレベルが異なる機器との同時接続が可能であり、機器に接続する場合機器 に応じてセキュリティレベルを自動で変更し利 用することが可能である。また、別途『TV&バ ッテリー』を購入し、自宅に設置することで 『TV&バッテリー』で受信したワンセグ放送を Wi-Fi 経由で、iPhone でワンセグ放送を視聴す ることができる。 【図 55】MZK-WNH 第7項 I・O DATA/WN-G54/R3[11] WN-G54/R3 は I・O DATA から 2006 年 9 月に発売された無線ブロードバンドルータ である。価格は 8,820 円(税込)である。主な機能は、アセロス社が開発した、無線 LAN の通信距離を拡大する XR(eXtended Ramge)機能に対応しており、ルータから 離れた場所や、死角となっていた場所でも安定 して接続することが可能である。また、I・O DATA の、DDNS サービスである『iobb.net』 により、IP アドレスに「○○○.iobb.net」とい うユーザー毎の名称を付け、外出先からのリモ ートアクセスなどを、無償で利用することが可 能である。さらに、自動チャンネル設定機能に より、自動的に電波の混雑が少ないチャンネル に設定が可能なため、電波干渉によるスループ ットの低下を避けることが可能である。 34 【図 56】WN-G54/R3 第8項 I・O DATA/NP-BBRL[12] NP/BBRL は I・O DATA から 2006 年 2 月に発売された有線ブロードバンドルータで ある。価格は 2,877 円(税込)である。主な特徴は、 ネットワーク対応のハードディスクビデオレコー ダなど、デジタル家電との接続が可能である。また、 Web ブラウザでの設定が可能なため、専用のソフ トを必要とせず、簡単に設定をすることが可能であ る。 【図 57】NP-BBRL 第3節 ホームネットワークの構築事例 前節で紹介したルータを利用し、ホームネットワークの構築事例を紹介する 外出先 Wi-Fi 中継機 テレビ 192.168.1.10 ネットワーク HDD (NAS) 地デジデータ カメラデータ 外出先データ ルータ 192.168.1.0 192.168.1.1 パソコンデータ デスクトップ PC 192.168.1.2 ノート PC 192.168.1.3 Web カメラ 1 192.168.1.11 Web カメラ 2 192.168.1.12 【図 58】ホームネットワークのシステム構成図 図 58 は、BUFFALO の WHR-G301N を利用したネットワーク構成図である。無線 LAN で web カメラやテレビなどの情報家電に接続し、テレビでは IPv6 機能を用いて フレッツ光 TV や、パススルーによる IPv6 ネットワークを利用することができる。ま た、テレビなどのデータやコンピュータの HDD を、NAS を用いて管理することで必 35 要なデータなどを 1 か所に集約させている。さらに、リモートアクセス機能により、外 出先からのリモートアクセスが可能なため、外出先から自宅のコンピュータにアクセス することが可能である。 第4節 製品仕様の比較結果および考察 ルータの仕様を比較した結果、まず注目すべき項目は IPv6 接続方式である。Corega の CG-BARPRO6 が IPv4/IPv6 デュアルスタックなのに対し、その他のルータはブリ ッジ接続またはパススルー接続となっている。また、セキュリティに関しても、corega のルータは他社のルータと比べても性能が高いといえる。BUFFALO の WHR-G301N に関しては VPN リモートアクセスが可能なため外出先からでも家のパソコンの遠隔操 作などネットワーク内にあるすべての機器とのデータのやり取りなどが可能というメリッ トもある。また、初心者が購入するという点では、設定が容易である NP-BBRL や BRL-04M、 CG-WLBARGPXB がよい。外出先からのリモートアクセスなどを利用したいなら VPN リ モートアクセス機能が利用できる BBR-4HG がよい。無線 LAN による高速通信を楽しみた い場合などは、WHR-G301N や MZK-WNH を推奨する。IPv6 を利用したインターネット を楽しみたい場合などは CG-BARPRO6 を利用することがよいだろう。 3 章のホームネットワークの構築事例では、リモートアクセス機能を用いたホームネ ットワークを考案した。そのため、BUFFALO の WHR-G301N を利用し、NAS を用 いて自宅内データを統一した。そこで、リモートアクセスを用いて NAS にアクセスす ることで、許可された情報を外出先から閲覧することが可能になる。さらに IPv6 パス スルー機能でフレッツ光 TV や IPv6 サービスを利用することができる。さらにテレビ とネットワークを接続することで地デジの録画なども可能となる。セキュリティにおい てもマルチセキュリティ機能で接続する機器が対応する最も高い暗号化レベルのセキュ リティを自動設定することができる。 最期に、 筆者が推奨するルータとしては、corega の CG-BARPRO6 または、BUFFALO の BBR-4HG である。CG-BARPRO6 は IPv4/IPv6 デュアルスタック機能があり、セ キュリティ面に関しても十分機能が高い。BBR-4HG は、安定性が高くセキュリティ面 も充実している。価格に関してもそれほど高価ではなく、消費電力も低いので人気が高 い。どのルータに関してもメリット・デメリットは存在するが、製品仕様を調べ比較し た結果、筆者は上記の 2 種類のルータを推奨したい。 36 第6章 まとめ 本論文では、IPv4 枯渇問題に対して Linux と FreeBSD を用いてそれぞれネットワ ークの構築について述べた。Linux では IPv6 の実装の現状から、Kondara を利用し必 要なアプリケーションの導入、設定、ネットワークの動作確認の方法について解説した。 また、Linux の IPv6 対応における将来動向も、現在開発が進められているプロジェク トに関して解説した。KAME プロジェクトの FreeBSD に関しては、プロジェクトを 紹介し、Linux と同様に OS の導入から、BIND や Apache の導入、設定、動作確認に ついて解説した。IPv6 対応ルータの仕様比較では、現状の IPv6 対応比較や、性能、推 奨するルータなどを紹介した。 しかし、IPv6 対応に関する問題は少なくない。IPv4 から、IPv6 への移行や、一般 家庭への普及など、現状では世間の認知度が低く、あまり知られていない。しかし、2012 年には、IPv4 アドレスは枯渇すると予想されているため、今後の IPv6 対応に関するプ ロジェクトの取り組みや、世間への認知を広めることも必要である。さらに、IPv6 に 対応した製品を開発し、これからの IPv6 への関心を高めていく必要がある。 37 参考文献 [1] あきみち. (2010). Linux ネットワークプログラミング. ソフトバンククリエイティブ. [2] IPv4. http://ja.wikipedia.org/wiki/IPv4 [3] IPv6. http://ja.wikipedia.org/wiki/IPv6 [4] 松平直樹 監修. (2001). IPv6 ネットワーク実践構築技法. オーム社. [5] corega/ CG-WLBARGPXB. http://www.corega.co.jp/prod/wlbargpxb/index.htm [6] corega/ CG-BARPRO6. http://corega.jp/product/list/router/barpro6.htm [7] BUFFALO/ BBR-4HG. http://buffalo.jp/products/catalog/item/b/bbr-4hg/index.html [8] BUFFALO/ WHR-G301N. http://buffalo.jp/products/catalog/network/whr-g301n/ [9] PLANEX/ BRM-04M. http://www.planex.co.jp/product/router/brl-04m/index.shtml [10] PLANEX / MZK-WNH. http://www.planex.co.jp/product/router/mzk-wnh/index.shtml [11] I・O DAT/ N-G54/R3. http://www.iodata.jp/prod/network/wnlan/2006/wn-g54r3/index.htm#01 [12] I・O DAT/ NP-BBRL. http://www.iodata.jp/product/network/router/np-bbrl/spec.htm 謝辞 本論文において、多くのアドバイスをいただき、また、遊んでいただいた尾花将輝氏に感 謝します。オープンキャンパスでまとめてくれた妹背武志氏に感謝します。アドバイスを くれた杉木亜友美氏に感謝します。アドバイスをくれた小藪瑠璃氏に感謝します。アドバ イスをくれた柴田洋佑氏に感謝します。共に励ましあった小山史弥氏に感謝します。くだ らない話や遊びに付き合ってくれた管貴将氏に感謝します。相談にのってくれた西井裕亮 氏に感謝します。迷惑をかけたにもかかわらず、励ましてくれた金光大貴氏に感謝します。 学校からの帰宅時、バイクで自転車をひっぱってくれた仙田友久氏に感謝します。いつも 楽しませてくれた原知廣氏に感謝します。いつも支えてくれた家族に感謝します。最後に、 ゼミでの面倒を見ていただき、多くの迷惑をかけ、多くのアドバイスを頂いた花川典子教 授に心より感謝します。 38