prefix - みる会図書館


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

1. UNIX MAGAZINE 2002年10月号

図 15 1627 1628 1629 1637 1638 1639 1640 図 16 1651 1663 1664 1665 1666 1667 1668 1669 連載 / IPv6 の実装ーの プレフィックスの鑠 VOid pfxlist—onlink—check ( ) for ()r = nd-prefix. lh_first ; pr ; pr = pr—>ndpr—next) { if (pr—>ndpr—raf—onlink & & find—pfxlist-reachable—router (pr) ) break; ルータがリンク上にある / ない場合 ~ 里 fo て ()r = nd-prefix. lh—first ; pr ; pr = pr—>ndpr—next) { if if ( (pr->ndpr—stateflags & NDPRF—DETACHED) find—pfxlist—reachable—router (pr) = = NULL) pr—>ndpr—stateflags ー = NDPRF—DETACHED ・ ( (pr->ndpr—stateflags & NDPRF-DETACHED) ! = 0 & & find—pfxlist—reachable—router(pr) ! = 0 ) pr—>ndpr—stateflags & = &NDPRF—DETACHED ; 1 , 638 行目の find-pfxlist-reachable-router() は、引 数で渡されたプレフィックスを通知しているルータがリン ク上に存在するかどうかをチェックします。具イ勺には、 該当ルータがノードの近隣キャッシュに存在し、データリ ンク層アドレスか海夬済みであるとき、リンク上に存在す るとみなします。 1641 if ()r ! = NULL Ⅱ TAILQ_FIRST(&nd—defrouter) ! = NULL) { オンリンク状態のプレフィックスが最低 1 つ存在する ()r ! = NULL) か、あるいはデフォルトルータか存在す る場合、各プレフィックスのオンリンク状態をそれらを通 知してきたルータの状態に従って設定します。 プレフィックスを通知しているルータがリンク上に存 在するかどうかは、 ndpr-stateflags に設定されます。ル ータがリンク上に存在しない場合、 ndpr-stateflags に NDPRFDETACHED カ寸き、存在する場合はフラグ が外れます。図 16 の 1 , 663 ~ 1 , 665 行目では、プレフ ィックスを通知していたルータがリンクから消えたため、 NDPRF-DETACHED フラグを付けています。 1 666 ~ 1 , 668 行目はその逆です。 どのプレフィックスもオンリンク状態ではなく、かっ デフォルトルータも存在しない場合、すべてのプレフィ ックスから NDPRFDETACHED フラグを外します ( 図 17 ) 。これは、近ド爾架索のイ士様で、リンク上にルータが 86 存在しない ( すなわち、他のリンク / 妾続していない ) 場 合は、すべての宛先をオンリンクであるとみなす必要があ るためです ( RFC2461 [ 2 ] の 5.2 節 ) 。 次に、各プレフィックスごとに、通知してきたルータの 状態とオンリンク状態が一致しないものについて、オンリ ンク状態を更新します ( 図 18 ) 。つまり、通知しているル ータがリンク上から消えた (NDPRF-DETACHED フ ラグカイ寸いている ) にもかかわらず、プレフィックスがオ ンリンク状態になっている (NDPRF-ONLINK フラグ カ寸いている ) 場合、 nd6-prefix-offlink() でオフリンク 状態にします。逆の場合も同様です。 nd6-prefix-onlink()/nd6-prefix-offlink() の彳齬リは、 プレフィックス宛の糸響各情報の追加と削除です。あるプレ フィックスがオンリンク状態である場合、ノードはそのプ レフィックス宛のバケットを、直接自分のインターフェイ スに出力できます。 オフリンク状態だったプレフィックスがオンリンク状 態に変化した場合には、プレフィックスが示すネットワー クへのネットワーク経路を追加します。逆に、オンリンク 状態だったプレフィックスがオフリンク状態に変化した場 合、バケットはデフォルトルータを経由して中幻逶してもら わなければなりません。このとき、プレフィックスが示す ネットワークへのネットワーク糸齧各を、経路表から削除し ます。 UNIX MAGAZINE 2002 ユ 0

2. UNIX MAGAZINE 2002年10月号

図 17 1670 1672 1679 1680 1681 1682 図 18 1692 1701 1702 1703 1709 1710 1711 1712 1713 1714 1720 1721 1722 1732 1733 1734 連載 / IPv6 の実装ー⑩ すべてのプレフィックスからフラグを外す } else { for ()r = nd-prefix. lh—first ; pr ; pr = pr—>ndpr—next) { if ( (pr—>ndpr—stateflags & NDPRF—DETACHED) ! = 0 ) pr—>ndpr—stateflags & = &NDPRF—DETACHED ・ オンリンクの更新 for ()r = nd—prefix. lh—first ; pr ; pr = pr—>ndpr—next) { if if ( (pr—>ndpr—stateflags & NDPRF-DETACHED) ! = 0 & & (pr—>ndpr—stateflags & NDPRF-ONLINK) ! = 0 ) { if ((e nd6—prefix—0ffIink(pr) ) ! ( (pr—>ndpr—stateflags & NDPRF-DETACHED) (pr—>ndpr—stateflags & NDPRF—ONL 工 NK) pr— >ndpr—raf— 0 Ⅱ 1 ink) { 0 & & if ()e = nd6—prefix—on1ink(pr) ) ! = 0 ) { for (ifa = in6—ifaddr; ifa—>ia—next) { if ( ! (ifa—>ia6-f1ags & ifa; ifa C011tim.le ; IN6_IFF_AUTOCONF) ) では、ますアドレスがインターフェイスに割り当てら そのあとにプレフィックスカワ。レフィックス・リストに追 加されます。この過程で、アドレスか存在するにもかかわ らす、そのもととなるプレフィックスがまだリストに存在 しない状態が一印判勺に発生します。 1 , 736 ~ 1 , 743 行目で は、こ刎列外を処理しています。 プレフィックスのオンリンク状態は、アドレスの状態に 景グします。オフリンク状態のプレフィックスに由来する アドレスは、間違って通信に利用されないように印を付け 1745 1746 1747 } if (find—pfxlist—reachable router(ifa—>ia6—ndpr)) break; る必喫があります。 1736 if (ifa—>ia6_ndpr = NULL) { 1742 1743 } continue ; ifa->ia6-ndpr は、アドレスか参照しているプレフィッ クスを示します。ステートレス・アドレス自動設疋のみを 利用しているかぎりにおいて、プレフィックスへの参照が NULL になることはありません。しかし、場合によっては 手動でアドレスを付けつつ、プレフィックスをステートレ ス・アドレス自動言殳定に従って管理してもらいたいことが あります。手動でアドレスを付けるとき、 KAME の実装 UNIX MAGAZINE 2002.10 1 , 732 ~ 1 , 747 行目は、プレフィックスを通知している ルータがすくなくとも 1 台リンク上に存在するかどうかの 石裔忍です。ルータが 1 台も存在しなければ、仕様に従い すべてのアドレスをオンリンクなアドレスとして利用でき ます。 1748 if (ifa) { 1 , 732 ~ 1 , 747 行目のチェックでルータがみつかれば、 ifa にアドレスを示すポインタの値が入ります。 リンク上にルータが存在する場合、各アドレスの状態 87

3. UNIX MAGAZINE 2002年10月号

特集・ロnびX2.4 の netfilter ー 1 ー 1 iptables —A FORWARD -i $DMZ—INTERFACE —s ! $DMZ—LAN —j DROP -log-prefix "ingress filtering iptables —A FORWARD -i $DMZ—INTERFACE —s ! $DMZ—LAN —j LOG \ # # 拒否したバケットのログも記録する # # lngress フィルタリング ( RFC2827 ) # # FORWARD チェーンの設定 ( デフォルト拒否 ) # # 始点 / 終点アドレスがプライベート工 P アドレスのバケットを拒否する iptables —A FORWARD -i $INTERNAL—INTERFACE —s ! $INTERNAL—LAN —j DROP ¯log¯prefix "ingress filtering iptables —A FORWARD —i $INTERNAL—INTERFACE —s ! $INTERNAL—LAN —j LOG \ # # プロバイダからプライベート工 P アドレスを割り当てられる場合は、該当工ントリを削除する iptables iptables iptables iptables iptables iptables —A FORWARD ー 1 —A FORWARD ー 1 —A FORWARD —A FORWARD ー 1 —A FORWARD ー 1 —A FORWARD $EXTERNAL_INTERFACE —s $EXTERNAL_ 工 NTERFACE ー s $EXTERNAL_ I NTERFACE ー s $EXTERNAL—INTERFACE —d 10 . 0 . 0 . 0 / 8 $EXTERNAL—INTERFACE -d $EXTERNAL—INTERFACE -d 192 .168.0.0 / 16 172 . 16 . 0 . 0 / 12 192 .168.0.0 / 16 ー」 172.16.0.0 / 12 10 . 0 . 0 . 0 / 8 DROP DROP DROP DROP DROP DROP # # 内部ネットワークから送った ( ようにみえる ) バケットを外部インターフェイスから受信するはずはない # # 拒否したバケットのログも記録する iptables —A FORWARD —i $EXTERNAL—INTERFACE -s $INTERNAL—LAN -j LOG \ —log-prefix- "spoofed packet iptables —A FORWARD —i $EXTERNAL—INTERFACE -s $INTERNAL—LAN -j DROP # # 自分が送った ( ようにみえる ) バケットを外部インターフェイスから受信するはすはない # # 拒否したバケットのログも記録する iptables —A FORWARD —i $EXTERNAL_INTERFACE —s $IPADDR —j LOG \ —log¯prefix "spoofed packet iptables -A FORWARD —i $EXTERNAL—INTERFACE -s $IPADDR -j DROP # # Windows DCE RPC 、 NetBIOS 、 Direct Hosting SMB/€ケットを拒否する iptables iptables iptables iptables —A FORWARD —p tcp -A FORWARD —p udp -A FORWARD —p tcp -A FORWARD —p udp —m multiport —m multiport —m multiport —m multiport -source—port 135 , 137 , 138 , 139 , 445 —j DROP -source—port 135 , 137 , 138 , 139 , 445 —j DROP -destination—port 135 , 137 , 138 , 139 , 445 —j DROP -destination—port 135 , 137 , 138 , 139 , 445 —j DROP # # # インターネット DMZ 間のフィルタリング # # サーパーへの接続を許可する iptables -A FORWARD —i $EXTERNAL-INTERFACE ー 0 $DMZ—INTERFACE \ # # ポート番号を指定すること # # サーパーがグローバル IP アドレスの場合は、許可するプロトコルと こでは指定しなくてよい # # 許可するポート番号は DNAT で決まるので、 42 UNIX MAGAZINE 2002 ユ 0

4. UNIX MAGAZINE 2002年10月号

図 14 1460 1461 1463 1464 1465 1466 1467 1481 ます。 連載 / IPv6 の実装ーの = 0 ) 重複アドレス検出の開始 (ifra->ifra-flags & IN6—IFF—NODAD) if (hostIsNew & & in6if—d0—dad (ifp) & & nd6—dad—start ( (struct ifaddr * ) ia, NULL) ; return(error) ; ・ prelist-update() プレフィックス情報を含むルータ通知を受信したときに 呼び出されます。ノードか着理しているプレフィックス 情報の更新喇助日をおこないます。 ・ pfxlist-onlink-check() ことのないプレフィックスを受信した場合など力げら ルータ・リストの状態か変化したり、これまで受信した われる場合に呼び出されます。たとえば、デフォルト ク上のルータの状態になんらかの変更か加えられたと思 をチェックします。 pfxlist-onlink-check() は、リン ノードがイ尉寺しているプレフィックスのオンリンク状態 オンリンク状態の考察 指定したプレフィックスをオフリンク状態にします。 ・ nd6-prefix-offlink() 指定したプレフィックスをオンリンク状態にします。 ・ nd6-prefix-onlink() れます。 ステートレス・アドレス自重垢又疋の仕様では、 リンク上 UNIX MAGAZINE 2002.10 推奨有効時間は 7 日です。つまり、ノードがリンク上を れています。とくに変更しなければ、有効時間は 30 日、 を設定します。通常、こ刎直にはかなり長い嗤間カ甘旨定さ 定では、割り当てられたアドレスか無効になるまでの日計 こで問題が生します。ステートレス・アドレス自重垢殳 ます。 いプレフィックスを受信し、適切なアドレスを自動注成し るリンクに移動すると、移動先のリンクのルータから新し ス識別子から固有のアドレスを生成します。ノードが異な のルータから受信したプレフィックスとインターフェイ 次々に移動していくと、過去に接続していたリンクでのア ドレスか無効にならないまま残ってしまいます。以ⅱ妾続 していたリンクで自動言されたアドレスは、現在接続し ているリンクでは使えません。ところが、ノードはインタ ーフェイスに付いているアドレスか有効かどうかを有効時 間でしか判断しません。間違って以前のリンクのアドレス を使うと、当然ながら通信できません。 KAME では、プレフィックスがオンリンクであるかオ フリンクであるかを管理することで、そのプレフィックス から生成されたアドレスカリ用可能かどうかを判断できる ように実装されています。プレフィックスがオンリンクで あるためには、そのプレフィックスを通知しているルータ が同一リンク上に存在する必要があります。オフリンクで あるプレフィックスに由来するアドレスは印を付けら 通信に利用されなくなります。 オンリンク状態のチェック pfxlist-onlink-check() は、リンク上のルータか変わっ たと考えられるときに呼び出されます。 ます、ノードが管理しているプレフィックスのなかか ら、オンリンクフラグカ寸いており、かっそのプレフィッ クスを通知していたルータがリンク上に存在すると思われ るプレフィックスを検索します ( 図 15 ) 。 注意しなければならないのは、プレフィックス情報自体 がもっているオンリンクフラグと、プレフィックスが実 際にオンリンクであるかどうかは関係がないということで す。オンリンクフラグは、プレフィックスを通知するルー タカワ。レフィックス情報の一にとして静的に決定します。 これに対し、オンリンク状態はリンクの状態に依存して変 化します。 85

5. UNIX MAGAZINE 2002年10月号

旧 v6 の実装 アドレス自動設定の実装 ( 3 ) リンクローカル・アドレスが自動設疋されるため、 IPv6 8 月 1 日、ついにアッカ・ネットワークスと OCN が ノードは起動直後からリンク上の他のノードと通信する PD (Prefix Delegation) サービスを開始しました。 PD ことができます。 を利用すると、ルータは ISP から IPv6 アドレスプロッ 2. ステートレス・アドレス自動設疋 クを自珥得できるようになります。これまで、 IPv6 の サービスを利用するためには IPv6 ルータの設定に関する ルータから送信されるルータ通知 (Router Advertise- ment) に含まれているプレフィックス情報を受信し、サ 知識が必要でしたが、 PD を使えは、はとんど匁丿ゞなく イトローカル / グローバル・アドレスを自動設疋します。 ても IPv6 ネットワークに接続できます。 IPv6 でアドレスの自動設疋といえば、はとんどの場合 IPv4 に対応した家庭 . 用ルータ製品 ( いわゆるプロード ステートレス・アドレス自動設疋を指します。 バンド・ルータ ) のほはすべてには、あらかじめ PPP と NAT の設定が含まれています。ューザーは、プロバイダ 3. 手動設定 IPv4 と同じように、 IPv6 アドレスを手動で設定する の情報を入力するだけで、 (NAT ではありますが ) 簡単 こともできます。 に IPv4 ネットワークを構築できます。この点で、むしろ IPv6 は IPv4 に負けていたといえるでしよう。しかしな KAME におけるアドレス設定の実装では、上記のそれ がら、 PD がその間題を解決しました。これからは、 PD ぞれが異なるコードバスを通ります。各方式で呼び出され 対応のプロードバンド・ルータを設置するだけで、 NAT る関数を図 1 に示します。 を介さない完全にグローバルな IPv6 ネットワーク竟が 図を見川ま分かるように、どのコードバスを通っても、 手に入るようになります。 最終的には in6-update-ifa() にたどり着きます。この関 PD は、とくに家庭に IPv6 を普及させるための重要な 数は、アドレスの追加や更新に関する共通の処理を担当し 技術です。サポートしている ISP や対応しているルータ ます。コメントを含め 533 行にもおよ」臥きな関数で、以 はまだ多くありませんが、今後標準になっていくことは確 下の手順に従ってアドレス設定か進みます。 かでしまう。 ・引数の正当性チェック ・アドレスの追加処理 ・プレフィックス長の設定 ・対向ノード糸各清報の削除 有効日日 / 推奨有時間の設定 ・ IPv6 関連のインターフェイス・ノヾラメータのネノ琪月・化 ・アドレスフラグの成疋 ・マルチキャスト・アドレスへの参加 ・重複アドレス検出の開始 アドレス設定のおさらい IPv6 ノードにアドレスを割り当てるガ去は以下の 3 種 類に大別されます。 1. リンクローカル・アドレスの自重嬬リ当て リンクローカル・アドレスは各インターフェイスに自動 的に割り当てられます。この機能はステートレス・アド レス自動設定の手続きの一部として定義されています。 75 UNIX MAGAZINE 2002.10

6. UNIX MAGAZINE 2002年10月号

特集・リn社X2.4 の netfilter c んれ : チェーン名 (INPUT 、 OUTPUT 、 iptables —P c んれ 図 13 ポリシーの言聢 iptables —L [ c ん司 図 12 フィルタの新 —line—numbers] FORWARD のみ ) target : ターゲット (ACCEPT 、 DROP のみ ) ます。 ・—log—level level : ログのレベル TCP のシーケンス番号を記録にとることを指定しま ・—log—tcp—sequence : TCP シーケンス番号の言求 索するときにイリでしよう。 攻撃名などを言当剥こ残すようにしておくと、 grep て検 師ェに設定できる文字列の最大長は 29 文字です。 文字列世師が追記されます。 このオプションを指定すると、言当求されるログの知寬こ ・—log—prefix 2 五 : プレフィックス文字列 テ。フォノレトのレベノレは warning です。 ニュアルを参照してください。 定できるプライオリティについては、 syslog. conf のマ syslog のプライオリティ (priority) を指定します。指 フィルタを表示する 録されます。 の場合、オプションの内容は HEX ( 16 進表記 ) で記 TCP のオプションを言当求にとることを指定します。 ・—log—tcp—options : TCP オプションの言求 す。 ンについては、チェーンに入ってきたバケットとバイト数 のカウンタも表示されます。とくにピルトイン・チェ なく、そのルールにマッチしたバケットの数と糸をヾイト数 定します。このリストでは、フィルタルールの内容だけで ての情報を表示するには、 -L の後ろに一 v オプションも指 ただし、こて表示されるのはルールの一碚にです。すべ のチェーンのルールだけが表示されます。 方、 -L オプションの引数にチェーン名を指定すると、そ ンを含むすべてのチェーンのルールが表示されます。 -L オプションだけを指定すると、ユーザー定義チェー を図 12 に示します。 iptables コマンドでフィルタのリストを表示する書式 36 ポリシーの設定 チェーンに、、ポリシー " を設定する書式を図 13 に示し ます。 ポリシーとは、どのフィルタルールにもマッチしなかっ た場合、デフォルト動作として働くターゲットのことで す。ただし、ポリシーを設定できるのはビルトイン・チ ェーンだけです。 ューザー定義チェーンのデフォルト動作は、そのユー ザー定義チェーンを呼び出したチェーンに戻ることです。 ューザー定義チェーンにポリシーを設定したい場合は、す べてにマッチするルールを末尾に追加します。 ポリシーに設定できるターゲットは以下のどちらか 1 つ も表示されます。 -v オプションで表示されるバイト数は、数字の桁数が 大きくなってくると自重加勺に K ( 1 , 000 ) 、 M ( 1 , 000K ) 、 G ( 1 , 000 ) のように丸められていきます。これは、お おまかな量さえ分かればいいときにリですが、糸を とるといった目的で正確な数字を知りたい場合には不便で す。そこで、さらに一 x オプションも同時に指定すると、 正確な数字か表示されるようになります。 ところで、 -I オプションや -D オプションでルール番 号を指定してルールを挿入したり削除するとき、知頁から 「いち、に、さん、 ・・・」と数えていくのはひどく面倒で す。ルールを数えるのに飽きたら、 —line—numbers 2 ・ プションを使うといいでしよう。このオプションを付け ると、各行の地直にルール番号が表示されます。 - L オプションを付けると、デフォルトでは自重加勺に IP アドレスからホスト名、ポート番号からサービス名へと変 換したうえで表示されます。これはこれでイリかっ親切な 機能なのですが、場合によっては IP アドレスやポート番 号を直接見たいこともあります。そんなときは、一Ⅱを指 定して実行すると、変換せすにそのまま表示されます。 UNIX MAGAZINE 2002.10

7. UNIX MAGAZINE 2002年10月号

連載 JavaServer Pages—@ 図 3 txt:style タグ吏った JSP ファイル (style ・ jsp) く %@ page contentType="text/htm1 ; charset=EUC—JP" % > く %@ taglib prefix="txt" uri="http://www.astec.co ・ jp/text" % > く ! DOCTYPE HTML PUBLIC "—//W3C//DTD HTML 4.0 Transitiona1//EN" > く html> く head> く meta http—equiv="Content—Type" content="text/html ; charset=EUC¯JP"> く tit1e>TextSty1e く /title> く /head> く body> く txt : sty1e text= く txt : style text¯ く /body> く /html> ー " 普通の文字列 " " 大きな文字列” ド T “にに - に「叩に€ 図 4 style. jsp の表示 size="9"> く /txt : style> く br> size="5"/> く br> - ファイルの編集表示検索ジャンプ 0 プマーグ印タスりヘルプ ( 印 第本を 普通の文字列 大きな文字列 働は一ム複常ーロカりマグ騫一物“。、新着、お第め、メンバーズ いト発癶 4 了タグが別々に言己されていても、 1 つのタグとして言己 2 不頁のタグをくらべれば分かるように、開始タグと終 さが、 size 属性の値に応して変わっています。 うな画面になります。 text 属性で指定した文字列の大き 図 3 の style. jsp をプラウザて表示すると、図 4 のよ の表示をみてみましよう。 さきに TextStyle タグハンドラで作った txt:style タグ 必要になりますが、具体的な手順の説明は後回しにして、 タグハンドラを利用するにはこのあといくつかの準備が txt :style タグの表示 をそのまま続けることかて、きます。 ソッドを抜けています。これにより、 JSP ページの処理 doEndTag() の最後では、 EVAL-PAGE を返してメ でおこなってもプラウサ上の表示は同しになります。 メインの処理を doStartTag() と doEndTag() のどちら 本体をもたないタグの場合は、カスタムタグを変換する く fo 取 t size="9"> 大きな文字列く / f0 Ⅱ t > ます。 タク冽の例では、次の文字列が write() メソッドに渡され 100 図 5 style ・ jsp をプラウサで表示したときのソース ( カスタム タグの部分のみ ) く font size = " 9 " > 大きな文字列く / fo Ⅱ t > く br > く font size = " 5 ” > 普通の文字列く / fo Ⅱ t > く br > されていても表示結果は同しです。 タグハンドラをテストするときは、プラウザに表示され た内容だけでなく、 JSP ファイルのコードがどのような HTML コードに変換されたのかも不忍してください。 図 5 は、プラウサのメニューから、、ページソース " など お尺して表示させたソースコードのうち、カスタムタグ に対応する部分だけを取り出したものです。 JSP ファイ ルの 2 不頁のタグが、いずれも font タグを使って書き換 えられていることカ蔀忍できます。 txt:style タグのさまざまな表示 図 3 と図 4 で、カスタムタグの正常な動列をみてみ ました。次に、カスタムタグの仕様とは違う使い方をした り、通常の使い方からすこし外れたことをした場合に何が 起きるのか試してみましよう。 誤った使い方をしたときにどのようなエラーか起きるの かが分かっていると、テンヾッグの際に役立ちます。タグ や JSP ページを開発する場合は、よくあるエラーについ て知っておいたはうがよいでしよう。 こではいくつかの実列を紹介しますが、仕様に合わ ないタグをみつけたときの JSP 工ンジンの振舞いやエラ ーメッセージは環竟によって異なります。できれば、自分 UNIX MAGAZINE 2002.10