設定 - みる会図書館


検索対象: UNIX MAGAZINE 2002年8月号
118件見つかりました。

1. UNIX MAGAZINE 2002年8月号

連載 / IPv6 の実装ー⑩ 図 3 ループパック・インターフェイスの場合 if 613 614 615 図 4 スコー ( (ifp—>if—flags & IFF-LOOPBACK) ! = 0 ) { ifra. ifra-addr . sin6-addr . s6—addr32 [ 2 ] ifra. ifra—addr. sin6—addr. s6—addr32 [ 3 ] フ識別子の里 = hto Ⅱ 1 ( 1 ) ; 623 624 625 626 627 629 します。 if (in6—addr2zoneid (ifp , &ifra. ifra—addr. sin6—addr , . ifra-addr. sin6-scope—id)) { in6—embedscope(&ifra. ifra—addr. sin6—addr, &ifra. ifra—addr) ; return(—l) ; &ifra ifra. ifra—addr. sin6—scope—id = 0 ; / * XXX * / この構造体は、ネットワーク・インターフェイ スにアドレスを設定したり、ネットワーク・インターフェ イスのアドレスを取得したりするときに使われます。以下 274 struct in6—aIiasreq { in6-var. h に in6-aliasreq 構造体の定義を示します。 ifra. ifra—addr . sin6—addr . s6—addr32 [ 1 ] リンクローカル・アドレスのプレフィックスは fe80 : : / 64 に固定されているので、 611 ~ 612 行目で ifra-addr に fe80 : : / 64 を代入します。 インターフェイスかルーフ。バックの場合、インターフェ イス識別子は 1 に固定されます ( 図 3 ) 。 616 } else { 612 275 276 277 278 281 } ; 279 280 char struct struct struct int struct ifra—name CIFNAMSIZ] ; sockaddr_in6 ifra—addr ; sockaddr_in6 ifra_dstaddr ; sockaddr_in6 ifra—prefixmask; ifra—flags ; in6_addr1ifetime ifra_lifetime; 617 620 621 if (get-ifid(ifp, altifp, &ifra. ifra-addr. sin6-addr) ! = の { return(—l) ; それぞれのメンバー変数は次のような意味をもちます。 ・ ifra-name : 文字列て表現されたインターフェイス名 ・ ifra-addr : インターフェイスのアドレス ・ ifra-dstaddr : 対向リンクの場合の対向ノ - ードアドレス ・ ifra-prefixmask : アドレスのフレフィックス・マスク ・ ifra-flags : アドレスのフラグ ・ ifra 」 ifetime : アドレスの有効 / 推奨有澗 リンクローカルでは基本的に対向ノードのアドレスは不 要ですから、 ifra-dstaddr は利用しません。 ます、設定するリンクローカル・アドレスの値を決め ます。 609 610 611 ifra. ifra—addr. sin6—fami1y = AF-lNET6; ifra. ifra_addr. sin6—1en = sizeof (struct sockaddr—in6) ; ifra. ifra_addr. sin6—addr. s6—addr32 [ 0 ] htonl ( 0Xfe800000 ) ; UNIX MAGAZINE 2002.8 622 } ルーフ。バック・インターフェイスではない場合は、 get- ifid() でインターフェイス識別・子を決定し、その値を ifra- addr の下位 64 ピットに設定します。 get-ifid() につい てはのちほど解説します。 623 ~ 629 行目 ( 図 4 ) はスコーフ。識別子の処理です。 623 行目の in6-addr2zoneid() では、ネットワーク・イ ンターフェイスとアドレスの値をもとに適切なスコーフ識 別子を言算し、 ifra-addr の sin6-scope-id メンノヾーに設 定します。 627 行目の in6-embedscope() は、アドレス の一にスコープ情報を埋め込むための関数です。本連載 83 フ請報を利用するように変更される予定です。いまのとこ 体のメンバーである sin6-scope-id に設定されたスコー 埋め込まれたスコープ情報を使わす、 sockaddr-in6 構造 子を消去しています。将来の KAME では、アドレスに 定です。 629 行目では、 623 行目で設定したスコーフ第筬別 で何度か述べているとおり、この関数は将来削除される予

2. UNIX MAGAZINE 2002年8月号

0 けつま 3 びっド 図 9 named. conf ファイル options { zone Z one ZOne Z one zone ZOne directory "/etc/namedb" ・ listen—on {any;}; 1isten-on—v6 {any ; } ; type hint ; fi1e "root . cachet "localhost" { type master ; file "localhost't " 127. IN—ADDR. ARPA" { type master; file " 127 " " 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. ip6 . int " { file "example . org ・ zone type master ; "example ・ org" { file "sub3ffe . 501. ffff" ・ type master ; " f . f . f . f . 1 . 0.5 . 0 . e . f . f . 3 . 工 P6. INT' file "loopback. v6" ・ type master; 全体に対するオプション窈旨定 かれます。 UNIX MAGAZINE 2002.8 ています。 root. cache ファイルにはルート・ネームサー した。 { } 内の type 以下の部分はファイルの不鶤頁を示し トリ内の root. cache ファイルを参照するように言己しま ますルートゾーンについて、 options でオ旨定したディレク タ・ファイルを書いた各ゾーンについての設定か読きます。 その後ろには、ルートゾーンおよび自分でゾーンデー フション (BIND 9 での新しいオプション ) を使います。 プション、 IPv6 ソケットについては、、 listen-on-v6 ' オ 追加しました。 IPv4 ソケットについては、、 listen-on ' オ け取るポートを、、 any ( すべて ) " に指定するオプションも なオプションを指定できます。今回は、 DNS 間合せを受 かれているディレクトリへのパス情報です。ほかにも必要 ます。必須のオプションは、ゾーンデータ・ファイルの置 オプションの指定は、 options の後ろの { } 内に言当し 各ゾーンに対する設定ファイルの指定 ( 必要な印 ーに到達するためのヒントが入っているので、ここて指 定するファイルの不頁は、、 hint" です。次の用 e 行は、参 照すべきファイルが root. cache であることを指定してい ます。以 E でエントリが 1 っ終りました。 続いて、各ゾーンデータ・ファイルのエントリを作っ ていきます。私の場合は 5 個のファイルを作ったので、 工ントリも 5 つ必要です。各工ントリの type 行にある master" は、このネームサーバーかマスター・ネームサー バーであることを示しています。 options と zone を合わ せて全部で 7 つのエントリかできれば、 named. conf ファ イルは完成です。 以ーヒでゾーンデータ・ファイル、 root. cache ファイル、 named. conf ファイルがすべて揃いました。 ◎ 関連ユーティリティの設定 ネームサーバー用の設定ファイルを一通り書き終えたの で、 DNS 関連ユーティリティを使うための準備に移りま 107

3. UNIX MAGAZINE 2002年8月号

連載 / IPv6 の実装ー⑩ 図 5 アドレスのプレフィックス・マスクの言聢 632 ifra. ifra—prefixmask. sin6—1en = sizeof (struct sockaddr—in6) ; 633 ifra. ifra-prefixmask. sin6—fami1y = AF-INET6 ; 634 ifra. ifra—pref ixmask. sin6—addr = in6mask64 ; ろ、 sin6-scope-id メンバーは 0 に設定しておく必要があ ります。 632 ~ 634 行目 ( 図 5 ) はアドレスのプレフィックス・ マスクの設定です。リンクローカル・アドレスのフレフィ ックスは 64 ピットなので、 64 ヒ、ツトのプレフィックス・ マスクを ifra-prefixmask に設定します。 640 ~ 641 行目は、アドレスの有』間と推奨有間 の設定です。 640 ifra . ifra_lifetime . ia6t_v1time ND6_INFINITE_LIFETIME; 641 ifra. ifra_lifetime. ia6t_p1time ND6_INFINITE_LIFETIME ; いったん割り当てたリンクローカル・アドレスは無期限 に有効です。そのため、無期限を表す ND6-INFINITE- LIFETIME の値を有間として設定します。 648 行目では ifra-flags に重複アドレス検出不要 (IFF- NODAD) フラグを付けます。 648 ifra. ifra—flags ト IN6—IFF—NODAD ; これは、後出の in6-update-ifa() の呼出しと関係して います。 in6-update-ifa() はインターフェイスのアドレ ス情報を更新する関数です。この関数を使って新しいア ドレスを割り当てると、アドレスの重複検出が開始されま す。もちろん、リンクローカル・アドレスを利用するため には重複アドレス検出が必要です。ただし、重複アドレス 検出のイ土様では、インターフェイスか初めて有効になると き、重複アドレス検出の開始前に適切な遅延を設けなけれ はならないと定めています。これは、たとえは停電からの 復旧などで、リンク上の IPv6 ノードがいっせいに起動し たような場合に、重複アドレス検出のためのバケットが大 量に送信されるのを防ぐことが目的です。そこで、重複検 出か即座に開始されないように、明示的に重複アドレス検 84 656 &ifra, NULL)) ! = 0 ) in6—update—ifa(ifp, if ( (error 出不要フラグを設定しておきます。 668 669 } return(—l) ; ifra に設定したリンクローカル・アドレス情報をⅲ 6 ー updateäfa() に渡し、 ifp で指定されたインターフェイス のリンクローカル・アドレスを設定します。 in6-update- ifa() はアドレス追加 / 更新の要となる関数です。詳しい解 説は次回にまわします。この関数を実行すると、第 2 引数 て指定したアドレスが第 1 引数で指定したネットワーク・ インターフェイスに割り当てられます。 in6ifa—ifpforIinkIocaI(ifp, 0 ) ; 676 ia 683 if (in6if—do—dad(ifp) & & (ifp—>if_flags & IFF_POINTOPOINT) 684 685 686 } ia->ia6—f1ags & = &IN6—IFF—NODAD ; ia->ia6—f1ags ー = IN6_IFF_TENTATIVE ; 648 行目で重複アドレス検出をしないように設定してい るため、このリンクローカル・アドレスはまた重複してい ないことか不俿忍できていません。 676 ~ 686 行目で重複ア ドレス検出不要 (IFF-NODAD) フラグを外し、重複ア ドレス検出中 (IFF-TENTATIVE) フラグを付けておき ます。前回解説したとおり、 in6-if-up() 関数で重複アド レス検出を実行しますから、 in6-ifattach 」 inklocal() 関 数の終了後、 in6-if-up() のなかで確実に重複アドレスの 処理がおこなわれることになります。 683 行目は、対向リンクの場合に重複アドレス検出をお こなわないようにする例外処理てす。対向リンクのなかに は、インターフェイスか有効になった直後のバケット送信 に失敗するものがあるので、安全のために対向リンクでの 重複アドレス検出を制限します。 次はプレフィックス情報の登録処理です。 KAME で は、インターフェイスに割り当てられたアドレスと、ノ ードかイ尉寺しているプレフィックス情報を分けて管理しま す。プレフィックス情報は、通常はネットワーク上のルー タから通知されます。プレフィックスの追加や更新などの 処理はルータ通知を受信したときに実行されますが、リン クローカル・アドレスや、手動でアドレスを設定する場合 UNIX MAGAZINE 2002.8

4. UNIX MAGAZINE 2002年8月号

0073 : 0074 : 4 $INITSEG , $go し inux のプートプロセス movsw ljmp MOV 命令は、以下の書式で叩プから叩 2 ヘデータ をコピーします。、、 m 。 v " に続く 1 文字はコピーするデー タの大きさを表すイ市子で、 b は 1 バイト、 w は 2 バイ ト、 I ( 工ノのは 4 バイトを意味します。 mov [bwl] 0 1 , 0 ア 2 SUB 命令は、以下の書式で叩 2 から叩ノ : した 結果を叩 2 ロ褓内します。 sub CbwI] 叩プ , 0 〃 2 36 行目の DEF-INITSEG は、 asm/boot. h に次のよ うな定数旦言があり、コンパイル時に、 0X9000 " に展開さ れます。 #define DEF_INITSEG 0X9000 ここまでの説明で、 64 ~ 70 行目は、以下のようにレ ジスタを設定するコードであることが理解できたと思い レジスタの内容は、 MOVS 命令を 1 回実行するたびにデ クリメントされるので、系区しか終った啼点で、その内容 は 0 になります。 72 行目を実行する点で CX レジスタには 256 か設 定されています。そして、 73 行目の MOVSW 命令は 1 回で 2 バイトを転送します。この 2 つの命令を繰り返す ことによって、結果的に 512 バイトのデータを 07C00H から 90000H , 云送することかできます。 74 行目の LJMP 命令は、以下の書式で指定される セグメントとオフセットのアドレスへジャンプする命令 ljmp セグメント値 , オフセット値 74 行目にある、、 g 。 " は、 60 行目のようにアドレスに付 けられたラベルを表します。これは、すぐ次の過程に登場 します。 スタックの設定 bootsect を移動したあと、セグメント間ジャンフ。命令 によりラベル、 g 。 " から処理カ台まります。 ます。 DS: 07COH ES: 9000H AX: 9000H CX : 256 SI: 0 DI: 0 0082 : go : movw 0086 : 0087 : 0088 : movw movw movw $ 0X4000 ー 12 , %di %ax , %ds %ax, %ss %di, %sp 71 行目の CLD 命令は、 EFLAGS レジスタの DF フラグをクリアします。この処理の意味は、 73 行目の MOVS 命令にあります。 とりあえす 72 行目は飛よして、 73 行目の MOVS 命 令をみましよう。ここでは、 DS:(E)SI カ甘旨すアドレスの データを ES:(E)DI に転送しています。転送するバイト 数は、 MOV 命令とに b 、 w 、 1 のいすれかで指定し ますにこでは w = 2 バイト ) 。そして、 DF フラグがクリ アされている場合、 (E)SI と (E)DI は転送したバイト数 だけ加算されます。これとは逆に、セットされている場合 は減算されます。つまり、 73 行目の MOVSW 命令は、 07C0 : 0000H から 9000 : 0000H へ 2 バイト転送し、さら に SI と DI の内容を 0 から 2 に更新します。しかし、 こでしたいのは 2 バイトではなくて 512 バイトです。 そこで、 72 行目の REP 命令か登場します。 この REP 命令は、次に続く MOVS 命令を (E)CX レジスタ値の回数だけ繰り返す操作をおこないます。 CX UNIX MAGAZINE 2002.8 82 ~ 88 行目は bootsect が使用するスタックを設定す るためのコードで、レジスタの内容が以下のように更新さ れます。 DI: 3FF4H DS: 9000H SS: 9000H SP: 3FF4H 82 行目の 4000H は、 bootsect とセットアップ・ルー チンのサイズ、そしてスタック領域に十分と想定されるサ イズを足し合わせた値です。つまり、適当な直です。 こから引いている 12 という直は、フロッピードライプ のパラメータをオ内するための領域の大きさです。以 E の 関係は、図 6 のように表すことができます。 フロッピードライフのパラメータ設定 bootsect は、フロッピーからの言ムみを BIOS のサー ピスを利用しておこないます。しかし、一部の BIOS の 49

5. UNIX MAGAZINE 2002年8月号

ーけつま 3 びっド 図 2 膨要な DNS レコード example ・ org. 工 N example ・ org. IN NS nsl . example . net . ・ example.org のネームサーパーを nsl. example. net に設定 ( スレープ ) NS Ⅱ s0. example . 0 て g ・ ・ example.org のネームサーパーを nsO.example.org に設定 nsO. example ・ org. IN AAAA 3ffe : 501 :ffff : 0 : 3333 : 4444 : 5555 : 6666 123.234.345 .456 nsO. example . org. IN A ・ nsO.example.org の IP アドレス (IPv4/IPv6) を設定 localhost . example ・ org. IN CNAME localhost . ・ localhost.example.org の CNAME を localhost に設定 example ・ org. IN MX 10 mx. example ・ org ・ ・ example.org の MX を mx. example ・ org に指定。 preference は 10 w. example ・ org. IN CNAME ns0 . example ・ org ・ ・ www.example.org の CNAME を nsO. example ・ org に設定 yuzuko . example ・ 0 て g. IN CNAME ns0. example ・ org ・ ・ yuzuko.example.org の CNAME を nsO.example.org に設定 mx.example.org/ IN AAAA 3ffe:501:ffff:0: : 1 123.234.345.456 mx.example.org/ IN A ・ mx.example.org の IP アドレス (IPv4/IPv6) を設定 nsO. example ・ org. IN AAAA 3ffe:501:ffff:0: : 1 図 3 SOA レコード SOA IN ns0. example ・ org ・ hostmaster. example . org ・ 2002032701 ; データのシリアル番号 3600 1200 3600 3600000 ; テータ更新までの時間 ; データ更新の再試行までの時間 ; ネガテイプキャッシュ TTL ; データ失効までの時間 $TTL 3600 5 ファイル名がドメイン名と同し場合には、@" で代用できるので、どちら ample.org/ です。ただし、メールアドレス中の、、@" は ゾーンの管理責イ壬者のメーノレアドレス (hostmaster@ex- ・ example ・ org ・ ) を記述します。 5 番目のフィールドは ムサーバー、つまりマスター・ネームサーバーの名前 (nsO は、このゾーン (example ・ org) に対して権威をもつネー の不頁を示す、、 SOA " を入れます。 4 番目のフィールドに 書きます。次にクラスを示す、、 IN " 、 3 番目にはレコード います。最初にドメイン名 (example.org/) か、、@" 5 を ムサーバーを示すもので、 6 つのフィールドに分かれて す。 SOA レコードはあるゾーンに対して権威をもつネー 2 番目に書いておく記述は SOA レコード ( 図 3 ) で UNIX MAGAZINE 2002.8 を使ってもかまいません。 に置き換えることになっているので、実際には、、 host- master.example.org/" と記述することになります。最後 の 6 番目のフィールドでは、 ( ) 内に、スレープ・ネーム サーバーに対してゾーンデータの取扱い方を指定するオプ ションを並べます。このオプションに関しては、独自の設 定をできるような経験がないので、ひとます師匠の設定を 丸写しさせてもらいました。 以上の 2 つの言当の後ろにさきはど図 2 に示したレコー ドを書いていけば、 example ・ org.zone ファイルか元成し ます。 最終的にファイルにまとめるときには、 @以外にも省略 できる部分があります。 BIND の設疋ファイルの文法に は、 、、各行の最初のフィールドでは起点名 ($ORIGIN) を省 103

6. UNIX MAGAZINE 2002年8月号

連載 IPv6 の実装ー⑩ カル・アドレスを生成し、重複アドレス検出をおこないま す。リンクローカル・アドレスのインターフェイス識別子 はハードウェア・アドレスをもとにしているので、通常は 重複しないはすです。しかし、糸寸に重複がない凵焉正さ れているわけではないため、重複検出は必喫です。 重複検出か完了し、リンクローカル・アドレスカリ用で きる状態になったら、サイトローカル / グローバル・アド レスの自動設定に移ります。こちらも、基本的にはリンク ローカル・アドレスの場合と同しです。インターフェイス 識別子に、サイトローカル / グローバル・アドレスのプレ フィックスを連結することでアドレスを生成します。リン クローカル・アドレスとの違いは、プレフィックス情報を 他のノードから取得しなけ川まならない点です。 サイトローカル / グローバル・アドレスのフレフィック スは、リンク上のルータが送信するルータ通知 (Router Advertisement) に含まれます。ルータ通知を受信したノ ードは、プレフィックス情報を取り出し、サイトローカル / グローバル・アドレスを設定します。 今回は、ステートレス・アドレス自咸疋の前半部にあ たる、リンクローカル・アドレスの自動設定と、インター フェイス識別子を決定する部分のコードを紹介します。 KAME では、各ネットワーク・インターフェイスか有 効になった点で自重加勺にリンクローカル・アドレスを割 り当てます。ただし、ルータとして利用するときなど、リ ンクローカル・アドレスを手動で管理したい場合のために 自重加勺に割り当てないように設定することもできます。 ューザーレベルでネットワーク・インターフェイスを有 効にするコマンドは ifconfig です。 ifconfig コマンドに ネットワーク・インターフェイス名と引数、、 up " を指定し て実行すると、そのインターフェイスで通信できるように なります。 ifconfig fxpO up 上の例では、ネットワーク・インターフェイスⅸ p0 を 有効にしています。このコマンドは、ネットワーク管理者 にはお染みのものでしよう。 ifconfig は、 ioctl() システムコール経由でネットワー ク・インターフェイスを操作します。 ioctl() のなかで、イ リンクローカル・アドレスの設定 80 ンターフェイスの状態か無効から有効に変化したとき、リ ンクローカル・アドレスの自動設定がおこなわれます。 リンクローカル・アドレスの設定の大半は in6-ifattach. c で実装されています。以ード、とくに明記しないかぎり、 コードは in6-ifattach. c のものです。 ネットワーク・インターフェイスカ陏効になると、ⅲ 6 -if-up() か呼び出されます。 in6. C 2746 void 2747 in6-if—up(ifp) 2748 struct ifnet *ifp; 2749 { 実際に in6-if-up() を呼び出しているのは ifioctl() で す。 ifioctl() は、ユーサー空間のプログラムがネットワ ーク・インターフェイスを操作するための窓口であり、 ioctl() システムコール経由て呼び出されます。さきはど の ifconfig コマンドも、 ioctl() 経由で ifioctl() を呼び出 しています。 in6. C 2757 in6—ifattach(ifp, NULL) ; ューザーカ甘作したいインターフェイスは ifp に設定さ れています。 ifp を in6äfattach() に渡すと、 ifp カ甘旨し ているネットワーク・インターフェイスの IPv6 に関係す る初期化処理カまります。 IPv6 関連の初期化里 2 , 757 行目以降、 in6-if-up() では重複アドレス検出 の処理か読きます。この部分は前回解説したので省略し、 in6-ifattach() の実装に進みましよう。 844 void in6—ifattach(ifp, altifp) 845 846 847 848 { struct ifnet *ifp; struct ifnet *altifp; ifp には初期化するインターフェイス、 altifp にはイン ターフェイス識別子を決定するための情報となる予備のイ ンターフェイスを指定します。前述したとおり、インター フェイス識別子はネットワーク・インターフェイスのハー ドウェア・アドレスをもとに生成されます。しかし、ネッ トワーク・インターフェイスのなかにはハードウェア・アド レスをもたないものもあります。たとえは、ダイヤルアッ フ鮟続で利用するイトンネル・インターフェイスなどで UNIX MAGAZINE 2002.8

7. UNIX MAGAZINE 2002年8月号

けつま 3 びっ u ド す。 IPv6 での DNS 問合せ の 1 つは IPv6 による DNS 間・伶ぜが可能なことです。 最初のほうで説明したように、 BIND 9 の大きな特徴 ただし、 要です。 この機能を使うためには、以下のような設定が必 1. named. conf ファイルで listen-on-v6 オプションを指 定する。 2. /etc/resolv. conf ファイルで IPv6 のルーフ。バック アドレスを指定する。 3. 間合迂に使う dig コマンドを IPv6 対応 (BIND 9 に 刊属のもの ) にする。 これまでの作業のなかで 1 番目と 3 番目はすでに設定 されています。あとは /etc/resolv. conf ファイル中に nameserver という行を加えておけば、 IPv6 で DNS 間伶がおこな rndc の設定 えるはすです 6 。 6 もう 1 つク斤しい DNS 間合迂用コマンドである host は、残念ながら イルが作成される ) 。 1. 、、 rndc-confgen" コマンドを実行する (rndc. conf ファ ことにします。手順は以下のようになります。 ストからの接続のみを受け入れるように rndc を設定する 今回は、 rndc. key ファイルを使う方法で、ローカルホ くこともできます。 ルには rndc. key ファイルへのポインタだけを言己してお conf ファイル用の設定を書き込み、 named. conf ファイ になっている場合などは、 rndc. key ファイルに named. す。 named. conf ファイルの内容か誰にでも見られるよう ファイルの両方に同し暗号イな建が入っている必要がありま rndc の成疋では、 named. conf ファイルと rndc. conf 考書などを見ながら設定しました。 ければなりません。 rndc のオンライン・マニュアルや参 そのためには、あらかしめ暗号イ建などを設定しておかな 管理コマンドをリモートから暗号化して送れることです。 rndc コマンドを利用したネームサーバー管理の長所は、 108 まだ IPv6 には対応していませんでした。 2. rndc. key ファイルを作成し、 1 でイ乍られた rndc. conf ファイノレの # Use with the following ⅲ named. c 。 nf ,... " 以下の部分をコピーする。 3. named. conf ファイルの先頭に、、 include ' ' /etc/rndc. key ” ;" という行を挿入する。 これで、 rndc によるネームサーバー管理ができるよう になり、名前角夬に関してはとりあえすすべての設定力鮗 てくれたネームサーバーの管理者に連絡をとり、設定をお なお、スレープ・ネームサーバーについては、引き受け りました。 願いしておきました。 まだ問題が・ UNIX MAGAZINE 2002.8 索も試してみましたが、まったく返事力唳ってきません。 コマンドが失敗してしまいます。 dig コマンドを使った検 実行してみました。ところが、図 10 のように表示されて : ノヾーー ・ホストである ns0. example ・ org に向けて ping を かったので、別のドメインにあるホストから、ネームサー すです。まだ外側から↑帯長を検索できるかを石忍していな イン外から情報を引けるようになっていることか肝腎なは バーは、自分が外部の清報を引くために使うよりも、ドメ メインのマスター・ネームサーバーとして使うネームサー 「できた一 ! 」と喜びかけたのですが、考えてみたら、自ド きちんと通じているようでした。 て ping コマンドを実行してみると、やはり応答が返り、 ドメインタ ) ホストや IP アドレスに対し です。さらに、 サーバーにある情報に関する名前検索は成功しているよう 含まれた応答カ亟ってくるので、さきほど設定したネーム ns0.example.org などの名前を引いてみました。情報の 試しに、手許で dig コマンドを使って、 localhost や 工ラーも出なかったので、 named は正常に動いているよ 読み込むべき成疋ファイルの場所を示しています。とくに とコマンドを打ち込みます。ー c オプションは named が /etc/rc . d/named9 —c /etc/namedb/named. conf になって、 で、どきどきしながら named を動かしてみました。 root 以上でネームサーバーの設定がすべて終ったはすなの

8. UNIX MAGAZINE 2002年8月号

連載 / IPv6 の実装ー⑩ 図 2 リンクローカル・アドレスの言聢 932 933 934 935 937 939 940 941 942 } if (ip6-auto—1ink10ca1) { ia = in6ifa—ifpforIinkIocaI(ifp, 0 ) ; if ()a = = NULL) { if (in6—ifattach—1ink10ca1(ifp, } else { altifp) ドの IPv4 アドレスから生成されますが、 KAME では手 動で設定する実装になっています。 910 if ( (ifp—>if-flags & IFF_MULTICAST) 914 0 ) { return ・ 915 } 910 行目では、インターフェイスがマルチキャストを サポートしているかどうかを調べます。これまでに何度も 解説してきたとおり、 IPv6 にマルチキャスト通信は必頭 です。マルチキャストに対応していないインターフェイス は、 IPv6 の通信には使えません。 ネ川月化するインターフェイスがループバック・インター フェイスの場合には、 in6-ifattach-loopback() でループ バック・インターフェイス特有の初期化をおこないます。 if ( (ifp—>if—flags & IFF—LOOPBACK) ! = 0 ) { 921 922 923 924 925 926 in6 in6addr— 10 opback ; if (in6ifa—ifpwithaddr(ifp, ぬ n6 ) = = NULL) { if (in6—ifattach—100pback (ifp). ! = 0 ) 図 2 の 932 ~ 935 行目で、リンクローカル・アドレス を設定します。 933 行目の in6ifa-ifpforIinklocal() は、 第 1 引数で指定したネットワーク・インターフェイスに 割り当てられているリンクローカル・アドレスを返す関数 です。まだインターフェイスにリンクローカル・アドレス か割り当てられていない ()a が NULL の ) 場合は、 935 行目の in6-ifattach 」 inklocal() で割り当てます。 なお、 932 行目の ip6-auto 」 inklocal はユーサーか変 更可能な変数で、インターフェイスの匆祺月イ芋に自重加勺に リンクローカル・アドレスを設定するかどうかを指定しま す。この変数を指定しない場合、ユーザーは手イ乍業でリン クローカル・アドレスを付けなけれはなりません。この機 能は、ルータなどでアドレスの設定を完全に手動で実行し たいときにイ叫リです。 リンクローカル・アドレスの鹹と割当て 続いて、 935 行目て羽乎び出している in6-ifattach 」 ink- local() に移りましよう。これは、リンクローカル・アド レスを生成し、インターフェイスに割り当てる関数です。 588 static int 589 in6—ifattach—IinkIocaI(ifp, altifp) 927 } 923 行目は、すでにルーフ。バック・アドレスか割り当て られているインターフェイスがあるかどうかの石忍です。 割り当てられていれは、 924 行目のネ加月化処理は実行され ません。特殊なケースに限られますが、ノード内に閉した 複数のネットワークが必要なときなど、複数のループバッ ク・インターフェイスが必要になる場合、 2 つ目以降の ルーフンヾック・アドレスの初期化はおこなわれないことに なります。現在のところ、 KAME ではルーフ。バック・イ ンターフェイスは 1 つしかないという前提て川乍します。 82 590 591 struct ifnet *ifp, struct ifnet *altifp; 592 { in6-ifattach 」 inklocal() の引数は in6-ifattach() と 同しです。匆祺月化するインターフェイスと、インターフェ イス識別子を計算するための第幻嚇甫となるインターフェ イスを渡します。 607 strncpy(ifra. ifra—name, if—name(ifp) , sizeof(ifra. ifra—name) ) ; ます、 in6-aIiasreq 構造体の変数である ifra を初期化 UNIX MAGAZINE 2002.8

9. UNIX MAGAZINE 2002年8月号

NEWS 円、「同 Wireless LAN 」が 164 万 9 , 000 円、「同 LAN & 同 Wireless LAN 」が 329 万 9 , 000 円、「同 PortabIe LAN and Reporter Bundle 」が 247 万 8 , 000 円 ( い •Sybase SSL に対応した RepIication Server 米 Sybase (Tel 0120-505256 : サイベ ース ) は、データ複製ソフトウェア「 Sy- base Replication Server 12.5 」の販冗 を開始した。 RDBMS 「 Sybase Adaptive Server Enterprise 」のレプリケーション同期を おこなう。稼動中のリカバリーが可能。 新バージョンでは、公開鍵と SSL を使用 し、インターネット経由でのデータ転送 の安全性を強化。 lnformix 、 Oracle な ■ Lotus L0tus N0tes/Domino 6 ロータス (Tel 03-5496 ー 3111 ) は、コ ラボレーション・ソフトウェア「 Lotus Notes/Domino 6 」を販売する。 サーバーは、イントラネット用アプリケ シトリックス・システムズ・ジャパンは、 「 Citrix MetaFrame XP for Windows, Feature ReIease 2 」の販売を開始した。 Windows サーバー用のアプリケーショ ン・サービス配信ソフトウェア。おもな 強化点は、 Windows アプリケーション MetaFrame XP の新バ ネットワーク管理ツール ノキア・ジャパンは、同社の IPSO OS 用ネットワーク管理ツール「 Horizon Manager 1.2 」の販売を開始した。 IPSO および Check Point FireWall— ーションや Web サーピス (J2EE や JSP など ) との連携、データベース構造 ( 排他 制御、複数データベース間での設計情報 の共有 ) 、システム・バックアッフ。機能な •Citrix を Web プラウザから利用できる「 Citrix NFuse 1.7 」、 MetaFrame XP サーバー と ICA クライアントが通信するための SSL/TLS 暗号化サービス「同 Secure Gateway 」、複数の MetaFrame XP サー ーを集約する「 Enterprise Services ーション ■ NOK 1 のリモートからのインストールやアッフ グレード、バックアップ、復元が可能。タ スクの自動化をサポート。設定変更前に テストプートを実行し、失敗時にはもとの ■オレンジソフト Web メール対応の携帯電話用メールサーバー オレンジソフト (E—mail xgate@or angesoft. co.jp) は、メールゲートウェイ・ ソフトウェア「 xGate V3.1 」の販売を開 始した。 Web プラウサをもつ携帯端末 ( i モー 28 ド、 J ースカイ、 EZweb など ) から個人の メールポックスにアクセスできるインタ ーネット・メールゲートウェイ。 Word や ExceI などの添付ファイルを表示可能。 新バージョンでは、 PC や PocketPC の すれもソフトウェア・ライセンス ) 。年間 バージョンアッフ。科は 132 , 000 円から。 どにも対応し、双方向の異種レプリケー ションが可能。 XML 、 Java 、 Unicode 、 UNIX MAGAZINE 2002.8 ーション・サーバー (Apache 十 Apache 動作環境は、 Java 2 対応のアプリケ おこなっ。 ウェアが付属。設疋は Web プラウサから ログイン監視、ログ参照用の専用ソフト APOP0 アドレス管理は LDAP に対応。 た。対応プロトコルは、 IMAP 、 POP 、 Web プラウサからのアクセスに対応し http://www.nokia.co.jp/index.html 価格は 330 , 000 円 ( 5 デバイス ) から。 2000 。 JRE 1.3 が必要。 対応 OS は、 SoIaris 7 以 .- ヒ、 Windows 設定を復元できる。 tributor/)o (http://www.citrix. CO. jp/partners/dis XPa/XPe) がある。代理店を通じて販売 機能の違いにより、 3 種類の製品 (XPs/ 理者権限の設定などの機能も強化した。 のみ ) など。 ICA クライアントの匪能、管 for NFuse 」 ( - 」こイ立版の MetaFrame XPe 価格は未定。出荷は第 4 四半期。 設定、操作性などを強化した。 理、モバイル環境からアクセスする際の & スケジュール機能、添付ファイルの処 どを強化。クライアントは、カレンダー ム用が 446 , 000 円から ( 予定 ) 。 万 9 , 000 円から、 Windows プラットホー 価格は、 UNIX プラットホーム用が 162 LDAP などに対応。

10. UNIX MAGAZINE 2002年8月号

PC をトンネルルータにするには、ます 2 台の IPv6 ホ ジョン 9 を使うと IPv6 関連の機能を利用することがで スト間でトンネルを設定し、続いてルーティング・プロト きます。 DNS サーバーにホスト名と IPv4 アドレスの対 コルとルーティング・デーモンを設定します。さらに、同 応を言当するときは A レコードを使いますが、 IPv6 アド レスの場合は AAAA (quad A) レコードで設定します。 ーネットワーク上にあるほかの IPv6 ホストに IPv6 接 続性を提供したい場合は、ルータ通知プログラムを動かし また、 IPv6 の逆引きの設定には IP6. INT レコードを使 用します。これは、 IPv6 アドレスを 4 ビット単位で逆向 ます。 IPv6 でもイ研軽頁かのルーティング・プロトコルがあり きに 32 個並べて . ( ピリオド ) で連結するという、手で 当主するのはかなり面倒な作業てす。釧忍は dig とい ますが、今回はもっとも単純な RIPng を使用しました。 BSD には RIPng を扱うルーティング・デーモンとして うコマンドでおこないますが、 IPv4 と同様に nslookup でも確認できます。 route6d が付属していますが、 Linux にはこれがないの で、 GNU Zebra に付属の ripngd を使いました。また、 実習では、各自の PC を使ってサーバーの構築に羽鉞し BSD ではルータ通知プログラムとして rtadvd を動かし ました。 2 不転頁のサーバーを作るには時間カ眇々短く、し ます。 かもサーバーを構築した経験のない人もかなりいたため、 この実習では、参加者 4 ~ 5 人ごとに 1 つのグループ やや肖イく良に終った感もあります。しかし、それでも多 くの人がサーバーを誣力させていました。 を作り、 1 人の PC をトンネルルータとして設定し、その 他の PC はハプ経由でルータに接続することによって小 おわりに さな IPv6 ネットワークを構成しました。設定の終了後 jus では、これまでも勉強会など、初・中級者のレベル 各自の PC で、、踊る KA E " を見たり、外部の IPv6 ホ アップを目的としたイベントを開催してきました。しか ストに対して ping を実行するなどして接続性を石忍しま し、時間が限られている ( 約 2 時間 ) 勉強会では、事前 準備の都合などもあって一方的な説明だけで終ってしまい 実習 . IPv6 対応サーパー構築に羽 がちです。その点、今回のワークショップは 1 泊 2 日の日 最後の実習は、 IPv6 対応サーバーの構築です。サー 程にしたため、参加者自身が手を動かして技術を習得する ーにもいろいろありますが、今回は Web サーバーと 時間もある程度は石呆できたのではないかと思います。参 DNS サーバーを構築しました。 加者のあいだでも、ふだんはなかなか勉強する時間がとれ ないが、このような形式であれは集中的に勉強できるとい Web サーバーについては、バージョン 2.0.36 から 標準で IPv6 に対応した Apache を使いました。また、 う声カかれました。 KAME プロジェクトの Web サイトのように、 IPv4 か 1 泊 2 日て集中的に学ふ形式カ評だったので、も IPv6 のどちらでアクセスしたかに応じて見せるべージを 日判月やテーマ、場所を変えて開催していきたいと考えてい ( サーバー 変えるには、 Apache のバーチャル・サー ノ、 の IP アドレスごとに異なるコンテンツ・ディレクトリを 用意する ) 機能を使います。 各種の設定を終えたあと、 Apache を起動し、プラウザ の URL 入力欄に从 b サーバーの IPv6 アドレスを入力 して重川を石忍しました。 IPv6 アドレスでオクテットの 区切りを示す、、 : " は、 URL でホスト名とポート番号の区 切り文字として使われているため、 http://[IPv6 アドレス ] / のように、 IPv6 アドレスを [... ] で囲んて指定します。 次は、 DNS サーバーの構築です。 BIND では、ノヾー 1 三ロ ます。 157 UNIX MAGAZINE 2002.8