最新スよリミング動向 スプリッティングには、 PULL 型と PUSH 型の 2 つ の方式があります。 PULL 型は、子サーバー (Receiver) がクライアント からのアクセスを初めて受けたときに親サーバー (Trans- mitter) に接続し、ソースコンテンツを受け取る形態で す。一方、 PUSH 型では、エンコーダからのソースか親 サーバーに到着すると、即座に子サーバーに ( クライアン トからのアクセスがなくても ) 送り出されます。今回のヒ ッキーライプでは、 PUSH 型て配信をおこないました。 PUSH 型スプリッティングにおける基本的な設定情 報には、次のようなものがあります ( 括弧内は今回の設 定。 ・ source path (/encoder/) ・ Transport (udp/unicast) ・ port Range ( 30001 ~ 30020 ) ・ password (hogehoge ) これらを以下の手順に沿って正しく設定すれば、無事に スプリッティングができます。 このほかにも細かいパラメータがありますが、詳しくは オンライン・マニュアル [ 4 ] などを参照してください。 親サーパー (Transmitter) 側の言聢 1. ReaISystem Administrator 画面に Web プラウサで ログインする。 2. 左側のメニューから Splitting → Transmitter を選 ぶ。 3. 右イ則のフレームの Broadcast Receivers 欄の下にある [Add New] ボタンを押す ( 図 2-a)0 4. 右側にある項目欄にデフォルトの値が入るので、イベン トごとに必要な設定項目を適宜入力する。 ・ Receiver Name を必要に応じて変更 ( 分かりやすい 名前にする ) ・ source path を変更 ( 例では /encoder/) ェンコーダのパスが変わっていなけれは変更は不要 です。 ・ port Range を変更 ( 例では 30001 ~ 30020 ) 複数の Receiver にスプリッティングするときは、 Range が重複しないように注意します。 120 ・ password を入力 ( 図 2-b0 例では hogehoge) これは Transmitter と Receiver で同しものを指定 します。 5. 入力か終ったら、右下にある [ApplY] ボタンを押す。 設定値に誤りがあるとエラーメッセージか表示されるの で、よく石忍する。 子サーパー (Receiver) 側の言 1. ReaISystem Administrator 画面に Web プラウサで ログインする。 2. 左側のメニューから Splitting → Receiver を選ぶ 3. 右側のフレームの Broadcast Transmitters 欄の下に ある [Add New] ボタンを押す ( 図 2-c)0 4. 右側にある項目欄にデフォルトの値が入るので、環境に 合わせて必要な項目を設定する。 ・ Transmitter Name を必要に応じて変更 ( 分かりや すい名前にする ) ・ Transmitter Address を変更 ( 例では 192.168.1. 10 ) ・ port Range を変更 ( 例では 30001 ~ 30020 ) 複数の Receiver にスプリッティングするときは、 Range が重複しないように注意します。 ・ password を入力 ( 図 2-d0 例では hogehoge) Transmitter と Receiver で同じものを扣疋します。 5. 入力カ鮗ったら、右下にある [Apply] ボタンを押す。 設定値に誤りがあるとエラーメッセージが表示されるの で、よく石忍する。 今回は、メイン系とバックアッフ係の 2 系統を利用し たため、バックアッブ系の親サーバーと子サーバーについ ・エンコーダの冗長化 では、 ヒッキーライプでは使いませんでしたが、 RealSystem RealSystem の冗長化方式 ても上記と同し作業をおこないました。 UNIX MAGAZINE 2003.5 の 2 不頁の冗長化方式か利用できます。 ・バックアッフ Transmitter による冗長化
特集・プログラミング入門 る前に、それか完成するまでにどの程度の時間がかかるか は簡単には見積もれませんし、できあがったプログラムを 何回実行するかも予想しにくいでしよう。ただ、計算機で 何か処理をしようと考えるときには、つねにこれらの点に 注意してほしいと思います。 こでは単純に手間が 1 , 000 倍になると計算し また、 ましたが、間題カ吠きくなったときに手間か線形に増える アルゴリズムもあれは、もっと急激に増えてしまうアルゴ リズムもあり、逆になかなか手間カ蒴えないアルゴリズム もあります。これらのさまざまな要因を考慮に入れて、ど う間題を鮹夬していくのかを考えてください。 UNIX のコマンドの利用 UNIX を用いてプログラムを作成する場合には、既存 のコマンドの存在を忘れるわけにはいきません。 UNIX で は、基本的なコマンドとしてさまざまな処理をおこなうコ マンドカ甘是供されています。これらをうまく使えば、プロ グラムの作成時間を矢旨することができます。もちろん、 目的の処理をおこなうための専用のコマンドが用意されて いるわけではないので、出力を多少手直ししたりする必要 はあるでしよう。しかしその作業も、 UNIX のコマンド を使っておこなうことができます。 UNIX ではパイプという概念があり、あるコマンドの 出力を次のコマンドの入力として渡すことができます。そ の際、渡されるのはバイトストリームであるといわれてい ますが、実際には改行文字で終る行が連続したものか渡さ れることがほとんどです。数多くのコマンドがこのような 入力を処理し、出力でも同様な出力をおこなうため、さま ざまなコマンドを組み合わせて複雑な処理を実行すること もできます。 かなり昔の話ですが、和初めて UNIX マシンや C 言 語を触りだしたころのことです。プログラミングの練習と いうことで、「テキストファイルの行を逆順に出力するプ ログラムを作れ」という課題を出されました。純粋に C 言 語のプログラム練習として捉え、文字配列やポインタ、さ らにはファイルからの入出力を使ったプログラムを作ろう としたところ、ある人はこれを UNIX のコマンドのみで 実現しました。現在では、実際のファイルに対する同様の 操作であれは tail コマンドに一 r オプションを付けること で実現できますが、当時はまだ一 r オプションはありませ 100 んでした。さらに、この人は標準入力から入力が与えられ た場合にも正しく動作するようにしたのです。それは次の ようなものでした。 # ! /bin/sh cat ーⅡ " $@" ー sort —nr ー cut —c 8 ー いちおう説明しておくと、 cat コマンドに—n オフショ ンを指定することで、ますすべての行に行番号を付けま す。引数として、、 $@" を指定している点も重要です。この シェル・スクリプトに対する引数カ甘旨定されていない場合 には、 cat コマンドに対する引数も存在しなくなります。 すると、 cat コマンドは標準入力から入力を読み込むよう になります。逆に、引数カ甘旨定されている場合には、 cat コマンドにも引数を指定した状態になるので、 cat コマン ドはファイルから内容を読み込むわけです。 次に、行番号の付いた内容が sort コマンドに渡されま す。 sort はご存じのとおり整列のために使われるコマン ドですが、オプションとして -nr を指定しています。Ⅱオ プションにより上交の対象を数値とみなした上罅交をおこな うことを指定し、 r オフションでは上交の結果を逆順とす ることを指定します。したがって、 sort コマンドは与え られた各行の : 麪頁を数値とみなし、それらの行の順番を大 きい順になるように並べ替えます。 cat コマンドでは、 1 から始めて順番にインクリメントしながら行番号を付けま した。それを大きい順になるように並べ替えるということ は、遡頂に並べるのと同じ意味になります。 この段階での出力には、ツ頁によけいな数値カ咐いてい るはすです。最後の cut コマンドは、この数値の部分を切 り取るためのものです。ここでは、各行の 8 文字目以降を 出力するようにしています。 cat コマンドは行番号を 6 桁 て表示し、その後ろにタブを置くようなのでこのようにし ていますが、う頁のタブ文字よりも後ろがすべて出力され るのであ川よ、こオ LJ ユ外のコマンドて処理してもかまいま せん。 このガ去の優れたところは、最初に出力を得るまでか高 速だという点です。もちろん、ファイルを遡頂にするため に、整列をおこなうコマンドである sort を用いるのは明 らかにオーバースペックですし、コマンドの処理時間もそ れなりにかかります。しかし、プログラムを一から書き始 めるのにくらべ川ま、ごくま可寺間で結果を得ることができ ます。さらに、 UNIX のコマンドを流用しているため安 UNIX MAGAZINE 2003.5
特集・プログラミング入門 定度か高いという点も見逃せません。自分でプログラムを 作成した場合には、プログラム中に誤りが含まれてしまう こともあるでしよう。もちろん、 UNIX のコマンドだか らといってバグがまったくないわけではありませんが、い きなり作成したプログラムにくらべれは少ないと考えてよ いでしよう。 また、巨大な入力が与えられた場合を考えてみてくださ い。自分でプログラムを作成する場合、もっとも簡単な方 法は、メモリ上にファイルの内容をすべて手寺しながら逆 順に出力することになるでしようが、メモリ上に一尉寺でき ないほどの入力が学えられたらどうなるでしよう。 sort コ マンドはこのあたりにもちゃんと対処してくれます。これ を実際にプログラムするとなると、ちょっと面倒です。安 定したプログラムを簡単に作ることができるのも、 UNIX コマンドを組み合わせるガ去の利点の 1 っといえるでしょ う。うまく UNIX コマンドを組み合わせられるように 日頃からどのようなコマンドカ甘是供されているのかを調べ たり、 man コマンドを利用したり Web で検索するなど して、必要な機能をもつコマンドを上手にみつけられるよ うにしておくことが大切です。これは、アルゴリズムをた くさんみておく理由と共通していますれ もちろん、この場合にもプログラムを和実行する必要 があるかや、プログラムに対する入力はどの程度大きいの かを考慮すべき点は変わりません。 UNIX のコマンドは単 体でみればかなり高速に重川するプログラムですが、あく までも汎用のプログラムですから、間題領域に合わせて作 成した専用のプログラムのほうか高速に処理できると考え てよいでしよう。アルゴリズムも、間題に合わせてチュー ニングできるのであれは、そのはうか高速に重川乍させるこ とができます。入力が巨大であったり、プログラムの実行 回数か膨大な場合には、専用のプログラムを作成する去 も忘れてはいけません。その場合には、自分でアルゴリズ ムを尺しなけれはなりません。「作ってみたのはよいけ れど、 UNIX コマンドを組み合わせたほうか高速だった」 というのではちょっと寂しいですよね。日頃から手間を見 積もる癖をつけておくと、プログラムを作るほうか得なの か、コマンドを組み合わせるはうがよいのかという勘がだ んだん働くようになります。うまく見積もれるようになれ ば、けっきよくは処理の結果を早く手にすることができる わけです。 UNIX MAGAZINE 2003.5 お勧めなのは、とりあえす既存のコマンドでうまく処理 できるものがないかを調べるガ去です。間題にはさまざま なものがあると思いますが、それらの間題の本質的な部分 は探索であったり、整列であったり、基本的な操作であ ることがはとんどです。この部分をうまく既存のコマンド で処理できるように、前処理や後処理を付け足すのです。 前処理や後処理では、間題領域に特化した処理が必要にな ることが多いので、 awk や PerI 、 Ruby などのちょっと 賢いスクリプト言語を使うことも多いでしようし、 C 言語 で書くこともできます。これらを組み合わせて、とりあえ ず正しく動作するプログラムを作ってしまいましよう。そ のプログラムを使っていて「どうしても遅い」ということ になれば、それから改良を始めてもよいのです。プログラ ムを釧乍させながら改良をおこない、最終的に早く答の出 たほうを採用してもよいでしよう。計算機のパワーを無駄 に使っているようにもみえますが、山も匠の言 1 算機は強力に なっていますし、個人用の引算機カ甘是供されている環竟も 多いと思います。どうせ余っているパワーであれはどんど ん使うべきです。引・算機はうまく活用してください。 ☆ 今月は、前回までの、、探索 " に続いて、文字列ク架索と いう特定のアプリケーションを対象とした探索問題をみて きました。具イ勺には、力すくのガ去に始まり、 Knuth- Morris-Pratt のアノレゴリズム、 Boyer-Moore のアノレゴ リズム、 Rabin-Karp のアルゴリズムを紹介しました。先 人たちは、文字列の探索に関してもさまざまな工夫を凝ら し、高速に動作するアルゴリズムをいくつも考え出してい ることが分かっていただけたと思います。 また、実際にプログラムを作成する際に注意してはしい 点もいくつカ呂介しました。けっきよくのところ、重要な のは結果が早く手に入ることです。どうするのがよいかを よく考えてプログラミング ( コり組んでください。 ( いまいすみ・たかし千葉大学 ) 101
ZXserve 図 4 シリアル番号を入力するウインドウ サーバのパスワードが必要です。 を続けるには、サーバのシリアル番号の最初の 8 物を入力してくださ バスワード : ー 図 5 OS のシリアル番号を入力 Mac 05 X Ⅳ町アシスタント シリアル番号 ソフトウェアのシリアル番号が CD のケースに記載されています。 シリアル番号を入力してください . 例 : A ー 111- 記 B -222- C ( ( -333- DDD -444- EEE -555 ー F 号の : 頁 8 桁を入力します (Xserve の場合、シリアル 番号は背面パネルに記されています ) 。 OS のインストー ル用 CD-ROM から起動したばかりの状態では、通常 のユーザー認証はおこなえないので、これくらいしか認 証方去はないのでしよう。 このウインドウでシリアル番号の : 頁 8 桁を正しく入 力し、 [ 認証 ] ボタンをクリックします。そして、、、おも に使用する言語 " を尺し、インストール先ハードディ スクお尺するとインストールが始まります。 20 分ほ どするとインストールカ院了します ( そのあいだは画面 を見ている以外にすることはありません ) 。 こで次の段階 ( サーバーの設疋 ) に移ってもかまい ませんし、いったん Server Assistant を終了して、あ とで作業を続けることもできます。いったん終了した場 合は、その次に Server Assistant を起動したとき、図 続けるには右矢印をクリックします。 2 のウインドウで、サーバを設定 " を選びます。 X Server も丘の PC UNIX などと同様、通常の作 サーバーの設定 業は一殳ューサーでおこない、必要なときだけ sudo コ マンドなどで管理者権限を得るスタイルか驃準になって こから、 Mac OS X Server のごく基本的な設定 います。つまり、 をおこないます。これは図 5 のウインドウから始まりま こでは sudo を実行する権限をもつ ューサー・アカウントを作成します。ここで、そのユー す。 OS のインストール終了時に Server Assistant も ザーのために設定したパスワードは root のパスワード 終了したときは、上記のように再度 Server Assistant としても有効になります。 を起動し、図 2 のウインドウで、、サーバを設定 " を選び 続いて、、、ネットワーク " に関する設定力始まります。 ます。続いて、図 4 のウインドウでサーバーのシリアル ます、ホスト名と IP アドレス、 DNS サーバーやデフォ 番号の頁 8 桁を正しく入力すると、図 5 のウインド ウカ俵示されます。 ルトルータの IP アドレスなどを設定します。複数のネ ットワーク・インターフェイスがある場合は 7 、どのイ こまでの一 - ー漣窈巣作は、図 5 の左側に書かれた順序 ンターフェイスを有効にするかを決め、各インターフェ で進んでいます。つまり、前項までで、、概要 " の作業が イスて利用するプロトコル (TCP/IP か AppIeTaIk) 終り、これから、セキュリティ " についての作業カま を決定して、それぞれに IP アドレスなどを設定します。 るということですにの Xserve にはキーポードを接続 すると、図 7 のウインドウか表示さ Apple ファイル していないので、、、キーポード " に関する設定作業はあ サービス (AFP によるファイル共有 ) や Web サーピス りません ) 。 (Apache httpd) 、 QuickTime Streaming Server な 図 5 で OS のシリアル番号を正しく入力したら、次 は管理者アカウントを設定します ( 図 6 ) 。、あれ ? 管理 7 本体に内蔵されているインターフェイスは 1 つですが、 PCI スロッ 者は root とちゃうの ? " という気力ゞしますが、 MacOS トにも装着できます。 18 0 極要 一物キアポード - ~ 0 セキュリティ をネットワーク 、日付と時刻 を仕上げ 続けるには右矢印をクリックします。 里者アカウントの言聢 図 6 MacOS X アシスタント 管理者 このサーバの管理に使うアカウントを作成してください。 名前 : MiYASHlTA kensuke 第 : Adm または、 HiromiSatO 例 : 記 m または、 h - 0 ( 空まを含まない英数字で、 3 字以内 ) FTP. れなどで円します。 バスワード : 管新当 ( ルート ) のログインバスワードとして使用されていますを 検証 . バスワードの再入力 0 概要 ・セキュリティ をネットワーク ・日付と時刻 仕上げ UNIX MAGAZINE 2003.5
旧 v6 の実装 島慶 証ヘッダの処理 今回参照するファイル 今回は認証ヘッダに関連する以下のファイルを参照し ます。 ・ kame/sys/netinet6/ah. h ( 改訂番号 1.17 ) ・ kame/sys/netinet6/ah-input. c ( 改訂番号 1.81 ) ・ kame/sys/netinet6/ip6-input. c ( 改言丁番号 1.307 ) ・ kame/sys/netinet6/ipsec. c ( 改言丁番号 1.181 ) ・ kame/sys/netkey/key. c ( 改訂番号 1.270 ) ・ kame/sys/netkey/keydb. h ( 改訂番号 1.18 ) ・ kame/sys/net/pfkeyv2. h ( 改訂番号 1.28 ) 認証ヘッダ付き IP バケットの入力 認証ヘッダは拡リ、ツダの 1 つです。 IPv6 では、才長 ヘッダカのように叫吉された構造をとるため、ヘッタ処 理は彳ヤ、、ツダがなくなるまで入力処理を繰り返すことで 実行されます。刻、ツダの入力処理は、 IP バケットの 入力関数である ip6-input() の終りに実装されています。 ・を、ツダには専用の入力関数が定義されており、処理 する才に、ツダの不鶤頁に応じて適切な入力関数か呼び出さ れます。 ip6-input() での才ッダ処理部を以下に示し ます。 ip6-input. c IPPROTO_DONE) { 1174 while (nxt ! = (*inet6sw Cip6—protox [nxt] ] nxt ・ pr-input) (&m, &off , nxt) ; 1236 } 響証ヘッダの場合、入力関数として ah6-input() カ症 ルい 義されています。 2 月 27 日から 3 月 6 日にかけて、「 Connectathon 2003 」 1 か開催されました。 Connectathon は世界有数の 大堋期は圧接続イベントです。インターネットでは数多く のプロトコルカリ用されています。プロトコルの言に理 言勺な本処か必要なのはもちろんですが、とくにインター ネット技術では、イ様策定の過程で実際に重川させながら イ兼をみなおしていくことも重視されます。柤接続イベ ントでは、仕様書にもとづいてプロトコルを実装したべン ダーや研究組織などが各自の実装を持ち寄り、相互に通信 できることを確認することで仕様を実証します。 今回、 KAME プロジェクトとしては Connectathon に参加しませんでしたが、プロジェクトのコアメンバーの 1 人が、自社の製品テストの合間に KAME MobiIe IPv6 の相互接続性を検証してきました。現在、 MobiIe IPv6 は ID (lnternet Draft) 21 が公開されている段階です。 ただし、 ID 21 の公開が Connectathon の開催直前だ ったため、相互接続テストは ID 20 にもとづいて実施さ れました。複数の実装者との相互接続テストをおこない、 KAME プロジェクトの実装が他の実装と相圧接続可能で あることか不忍されています。 現在、 Mobile IPv6 はイ兼の最終検言寸段階にあります。 Mobile IPv6 の言 1 者、イ十様の編集者、実装者にとって、 今回の相互接続イベントは重要な意味をもっていました。 こで大きな欠点がみつかれば、 MobiIe IPv6 そのもの の存読に景グをケえかねなかったからです。さいわい、致 命的な信の欠点が発見されることもなく、各実装者とも 良好な結果を得られたようです。 MobiIe IPv6 の研究者 の 1 人として、今回の大きな前進を嬉しく思います。 1 http://www.connectathon.org/ 1235 66 UNIX MAGAZINE 2003.5
連載 / IPv6 の実装ー⑩ 図 2 反復攻撃を防ぐための情報の更新 0 & & sav—>replay) { if ( (sav—>flags & SADB—X-EXT-OLD) 910 911 913 914 if (ipsec-updatereplay(ntohl( ((struct newah *)ah)—>ah-seq) , goto fail ; sav) ) { 915 } 類できます。 1 つは個々のノードが 1 対 1 で IP セキュリ ティの機能を利用する場合で、トランスポート・モードと 呼はれます。もう 1 つは、おもにネットワーク同士を安 全に接続するために利用される場合て、、トンネルモードと 呼はれます。トンネルモードでは、 2 つのネットワークの 境界ルータ間でのみ IP セキュリティの処理をおこない、 それぞれのネットワーク内のノードは通常どおり通信しま す。境界ルータは、バケットを対向ネットワークに向け トンネル技術を使って IP'NP ケットの外 て中幻医する際に、 側に別の IP ヘッダを追加し、そのヘッダに対して IP セ キュリティの処理を実行します。 942 943 945 946 947 } m = m—pullup(), sizeof(*ip6) ) ; goto fail; 918 920 921 923 924 if (sav—>flags & SADB—X-EXT-OLD) stripSIZ } else { stripsiz sizeof (struct SiZ1; sizeof (struct SiZ1; newah) + 948 ip6 = mtod(), struct ip6—hdr * ) ; 935 ~ 948 行目で外側の IP ヘッダを削除しています。 935 行目で flowinfo の値を保存している理由は、 ECN (Explicit Congestion Notification) [ 2 ] 関里の処理のた めです。 936 行目で、入力した IP バケットの先頭から 認証ヘッダの末尾までを切り詰めます。 937 ~ 947 行目で は、 mbuf がすくなくとも IP ヘッダぶんの長さを連続 したメモリ領域にイ尉寺していることを確認しています。さ もなければ、 948 行目で設定するポインタ変数 ip6 を経 由して内側の IP バケットの内部にアクセスできないか らです。 IP ヘッダの長さに満たない場合は、すくなくと も IP ヘッダに相当する部分が麪頁の mbuf に入るように m-pullup() を呼び出します ( 942 行目 ) 。 if ( ! ip6—ecn—egress(ip6—ipsec—ecn, 950 トンネルモードを使って通信する場合、認証ヘッダの 後ろに内側の IP バケットか読きます。まず、 918 ~ 924 行目で外側の IP バケットの認証ヘッダの長さを言 T 算し ます。 if (ipsec6—tunne1—va1idate(m, 0ff + 925 stripsiz, nxt , sav) ) { 925 行目の ipsec6-tunnel-validate() は、入力したパ ケットがトンネルモードで通信されているバケットかど うかを返します。トンネルモードで送信されたバケットな ら、外側の IP ヘッダを削除し、内側にオ内されている IP バケットを入力処理ルーチンに渡さなけれはなりませ ん。 ipsec6-tunnel-validate() についてはあとで解説し 952 &flowinfo, &ip6—>ip6—f10w) ) { goto fail; ます。 935 936 937 70 トンネルモードの処理は 1 , 004 行目まで続きます。 flowinfo ip6—>ip6—fIow; m—adj (), off + stripsiz) ; if (m—>m—len く sizeof (*ip6) ) { 953 } ip6-ecn-egress() は、外側の IP バケットを削除する 際の ECN 処理を実行します。田は省きますが、基本的 には、外側のバケットカ斗畠輳を検出していたら、内側のパ ケットにい獅奏を通知する情報を設定する処理です。 図 3 の key-checktunnelsanity() は、外側の IP ヘッ ダと内側の IP ヘッダの整合を石忍するための関数です が、現点では何も実行しない空の関数です。 969 m—>m—flags & = -M—AUTHIPHDR; 970 m—>m—flags & = -M—AUTHIPDGM ; 外側の IP バケットは認証ヘッダによって言正か完了し ていますが、内側のバケットについては何も処理していま せん。トンネルモードで通信する際、外側の IP ヘッダと UNIX MAGAZINE 2003.5
ワークステーションのおと一 たら送れたというような感しです。 So-net の Web ペー うまくいったり、再送してもダメだったのに、翌日になっ と接続できないことがありました。送信解像度を落とすと 分かりません。ただ、 FAX に関しては、相手の FAX 機 電話として使っているかぎりは、普通の電話との違いは にしました。 が、とりあえす角絲勺せすに商用サービスを使ってみること 紹介しました。料金がお得かどうか、判断に迷ったのです 前回、 So-net の提供する商用 VoIP サービスの概要を IP 電話関連で いだときも間題はありません。 て軽くできるでしようし、外部に液品ディスプレイをつな ・。これなら、おそらく SXGA 十よりも安く、そし 1 , 280 >< 1 , 024 (SXGA) モデルがあれはいいのです ルは高価という間題もあります。 ツールもあるようですか ) 。それ以外に、 SXGA 十のモデ か嘆俺点です ( 解像度に応してアイコンの位置を指定できる うが、デスクトッフ上のアイコンの位置カ話し L てしまうの 一方で通話しながら、もう一方で FAX を送ったり、あ ・加入電話と VoIP 電話の 2 回線を同時に使いたい VoIP サービスへの要望をいくっか挙げてみましよ、 ちょっと残念です。 前なのかもしれませんが、たいていはうまく送れるだけに ジには、、 FAX が使える " とは書かれていないので、 つ。 当り ・複数の VoIP 電話に加入して複数の電話番号がもてれ られると便利です。 るいは、かかってきた回線によって着信する電話を変え は嬉しい 140 か。これがあ川ま、電話回線より高速に FAX を送れます。 メールで送ってくれる面な FAX 機はないものでしよう ーク・インターフェイスを備え、読み込んだ原稿を電子 VoIP サービスと直接の関係はありませんが、ネットワ さらに便利ですね ) 。 確認できたら便利です ( 通常の電話からも確認できると インターネットから、 Web 経由で留守番電話の内容が あれば嬉しい ・ VoIP 機能付き TA に、デジタルでの留守番電話機能が SOHO などでの業務用にいいかもしれません。 醯 1 ATOK16 の省入力・描則変換 し、し、 Wi nd&.•s XP のコンソール ターミナルエミュレーションとが多いのです。 確ーー町付ない 、力候油 コンソールではなくて、 ygwin 上で動く「 xvt という竑末工ミュレータの上で b ョ引 1 を動かしています。 ( 、た一 " と入力したところで、、ターミナルエミュレーション " という候補 が表示されています ) これは、、インターネット FAX" と呼はれる機能で、対応 製品も市販されています。ところが、私か調べた観月では 価格が 30 ~ 40 万円とかなり高く、個人では買えそうにあ りません 2 。ぜひ、個人にも手の届く価格の製品を出して ほしいものです。 Windows をすこ凵更利に使う去を 2 つ紹介します。 ATOK16 2002 年 4 月号で、ジャストシステムの日本語 IME で ある ATOK15 を紹介しました。その関西弁モードはたい へんイ叫リで、いまでは手放せません。 月も広この ATOK かンヾージョンアップされて ATOK 16 になりました。 ATOK15 にもあった省入力・推測変換 はなかなか便利です。これは、入力の途中で以前に入力し た文字列や辞書にあ引甫のなかから最適と思われるもの を推測して表示し、選べるようにするものです ( 画面 1 ) 。 Windows をすこし便利に ・エリクソン製の携帯電話などで使われている 200 などか : このような機能を備えているようです。 2 リコーの RIFAX CL15DU-IPLINK や松ード電器の Panafax SP- べースの OS としては一番よくできているように思いま Windows XP は、これまでに使ってきた Windows リケーションは必需品なのです。 ん。仕事で出かけることが多い私にとって、これらのアプ ロアトラスや MapFan など ) には代わるものがありませ フトウェア ( 駅すばあとや乗換案内など ) や電子地図 ( プ 品がなく、あきらめました。たとえは、駅間の糸幇架索ソ たのですが、よく使ういくっかのアプリケーションに ( 率 dows XP です。 UNIX べースの OS にしようかとも考え 私がふだん使っている ThinkPad T22 の OS は Win- POBox に似た感じで、慣れるとたいへん重宝します。 UNIX MAGAZINE 2003.5
連載 /UNIX Communication Notes— 図 4 htpasswd による / くスワードの生成 # htpasswd —c tmpfile suguru New password: ノヾスワードの入力 Re—type new password: ノヾスワードの再入力 Adding password for user suguru # cat tmpfile suguru : s6CViisRLn6hg cat コマンドとシェルのリダイレクトを用いてファイルの内容 ぐ意味でも、図 4 の例のようにローカルにファイルを作成し、 オプションク月旨定は慎重におこなうべきである。トラブルを防 名のパスワード・ファイルがある場合は一 E 書きされるので、 -c と、パスワード・ファイルが、新たに " 生成される。すでに同 htpasswd コマンドに—c オプションを付けて実行する 注意 1 コマンドを実行する。 ルがある場合は、 -c オプションを付けすに htpasswd レクトリに移動すればよい。すでにパスワード・ファイ 成されるので、内容を石忍してから Apache の設疋ディ とローカル・ディレクトリにパスワード・ファイルか生 htpasswd では、この図のようにファイル名を指定する 暗号化してファイルに書き出す。 される。両方のパスワードかン一。。一致すれは、その文字列を る。通常の passwd コマンドと同じように再入力が促 力を求められるので、、、適切な文字列 " を選んで入力す る。 htpasswd コマンドを起重丿けると、パスワードの入 ru のために新たなパスワード・ファイルを作成してい 図 4 では、—c オフションを指定してユーサー sugu- ューザー名 : 暗号化されたパスワード ものである。 成する。このファイルの形式は、次のようにごく簡単な passwd. protected # cat tmpfile > > /usr/10ca1/apache2/conf/=> user suguru ることを表している。ューサーを限定したいときは、 しいパスワードの入力によってアクセスできるようにす パスワード・ファイルに登録されているユーサーが、正 ・ require valid-user を連結したほうか安全である。 60 クテイプで次のように指定する。 ルーフとして扱いたい場合は、 AuthGroupFile ディレ のように記述すれはよい。複数のユーサーを 1 つのグ AuthGroupFi1e /usr/10ca1/apache2/conf/=> group ・ protected そして、上記のファイル /usr/local/apache2/conf/ group ・ protected のなかに geeks : suguru masa moley のように言当主しておく。 require ディレクテイプでは、 require group geeks のように指定すると、グループ geeks に含まれる複数 のユーサーのアクセスが可能になる。 パスワード・ファイルを 1 つだけ用意してグループ単位で 制笹けるガ去と、複数のパスワード・ファイルを用意するガ去の どちらを利用するかは、けっきよくは管理者のスタイルしだい ともいえる。私自身は、 WWW サーバーにアクセスするユー サーの数に応じて処理を変えればよいと考えている。すなわち、 ューサーが少ないあいだはパスワード・ファイルか複数あった ところで、管理の手間はそれはどかからない。しかし、数多く のユーサーがアクセスするようになるとかなり面倒になってく るので、グループファイルを用意してグルーフ。単位で管理する ほうか効率がよい。 このガ去の場合は、必要な設定をすべて httpd.conf で おこなわなければならない。それには、 httpd.conf フ ァイルへの書込み権限を、パスワード認証を設定したい すべてのユーサーにケえる必要がある。これを避けるに は、 . htaccess というファイルを使えばよい。 ー隻すべきコンテンツを含む個々のディレクトリに . ht ー access というファイルを用意し、そこで上記の Auth 関 連ディレクテイプを記述する。この場合は、 httpd.conf のなかで AIIowOverride ディレクテイプを次のように記 述する。 AIIowOverride AuthConfig この場合の設定例を図 5 に示す。 パスワード認証の問題点 パスワード認証の間題点としてよく孑商されるのは、け っきよくのところ、従来の UNIX パスワードをネットワ ーク環境で利用したときと同じ弱点を抱えているというこ とだ。つまり、ネットワーク上で交換される情報 ( ューサ ー名とパスワード ) の一カ坏十分であり、再利用可能な パスワードの弱さが露呈されてしまうのである。そこで、 UNIX MAGAZINE 2003.5
最新スよリミング動向 図 15 NetCache のユーサー認聢 カイを・一・をテトこ入リ響少′、ルプ響 0 要い 0 功 / し 0 ・を 0 3 図 17 NetCache のストリーミング・ユーサー認証の言聢 万イルを・第を子 : 入っ・ワ - ル′、、フ を 0 0 第・ 0 い 物・の朝 ・”地ーい Re “・ 5 1 ! P10 ー こ三一 = 三 ~ 三こ一 三 ~ 三ニをミ三冖 S ⅳ・ 3 ng - General ” m ACX. Authentication ・ Gen A ト・ 0 ・ロ・ nt R “物ー的新 0 ”円 0 地物 : こ . 、“ 4 ェを F ー PR を A•.nhentcae 60 け g 引ー 朝丸飛第 4 、最・れ PR ・中物、ト を : ; A ・第・ 0 な給・町斗 ) 学い 市”。宿価・山 0 既 図 18 、 Vindows Media Player における認証ダイアログ 図 16 NetCache の RADIUS 設定 ? ′イ朝卩・一キあ響ツーへプ ・」靄 1 第 1 ′複第ずソおみユりアを ! 0 : ・ 0 ・を朝 三フレイどェー GD ら ララオ 第ューナー を区 ネット ! トカバスワードの入力 ュ・ - サ、・名とハスワードを人力しだを、 よ、物して ( はす ユーザ - 名 ) 第 ) を 0 飃スワード ロこのワードをハスワードー覧 : する ↓ま物端 は。を準なセを】リライこユーザ、。名とバ ( 三 ) 第 ) の第の→咆 : 第、 - 、 ~ 、め電ーいを・い 0 5 1 ! を 10 ー Authentication ・ RADIUS を ! 0 ッ・・井・・一 R 第一 4 、、 0 、都ぎ 0 ”醺瑁い第第 h ・に第橋 0 い ! 物第、、 0 、 0 を 0 ・第新ま 0 : トー“、新 1 i をよ E つ新誌 : 材日一物墨 : れ ・様を : 事 ( 図 15 ) 。 1. Setup を開いて Authentication → General と選ひ、、 Authenticate CIient Requests Using These Pro- tocols" の、、 Authenticate(MMS and RTSP) Re- quests" をチェックする。 パスワードで認証がおこなえるように設定する方法です。 Authentication Checking Order" において、 RA- 2. CRN フォーラムでもよく利用する Network Appliance DIUS の参照順位を環境に応して上位で参照するよう の NetCache は、 に変更する ( 図 15 では、 1 番目を Appliance User ・ Appliance User Database (NetCache にイ剥 Database に、 2 番目を RADIUS としています ) 。 ・ RADIUS 次に、 RADIUS に関する言置をおこないます ( 図 16 ) 。 ・ LDAP (Lightweight Directory Access Protocol) 3. Authentication → RADIUS で、 RADIUS 認証を ・ NTLM (Windows NT LAN Manager) 有効にする。 の各ューサー認証方式に対応しています。したがって、す 4. 同しく RADIUS の項目で、、、 RADIUS Servers:" の でに RADIUS を用いて会員の ID を管理しているのな ルールに以下の : 書式当する。 ら、すぐに利用できます。導入にあたっては、会員のデー IP アドレス : ポート : パスワード タベースを RADIUS プロトコルから参照できる状態にし 例 : 11.22.33.44 : 1812 : RaDiI ておく必要があります ( 図 14 ) 。 さらに、ストリーミング・プロトコルにおいて、ユー 実際の設正は、 NetCache の GUI 管理画面からおこな サー認証をおこなうかどうかを言置します ( 図 17 ) 。 います。ます、ユーサー言 E に関する設疋をおこないます ト・し第ま、、第 0 p ・物き 135 UNIX MAGAZINE 2003.5
連載 / 旧 v6 の実装ー⑩ 図 1 SAD 工ントリの検索 733 740 739 734 if ( (sav = key—a110csa(AF-INET6 , (caddr-t)&src—sa, IPPROTO_AH , spi) ) goto fail; (caddr-t)&dst-sa, 認証ヘッダの入力処理 684 ah6—input (mp, offp, proto) 683 int 明記していないコードは ah-input. c からの抜粋てす。 されていないかどうかを石忍します。以後ファイル名を 認証ヘッダは、入力した IP バケットか転全中で改竄 685 686 687 { struct mbuf **mp , int *offp, proto; ah6-input() は 3 つの引数をもちます。 mp は入力し た IP?NO ケットかオ褓内された mbuf へのポインタ、 offp は IP'NO ケットのうび頁アドレスから認証ヘッダの : 頁アドレ スまでのオフセットで、 proto には認証ヘッダのプロトコ ル番号である 51 か設定されます。 IP6_EXTHDR_CHECK (), off , sizeof (struct 706 (h) , IPPROTO_DONE) ; 707 ah = (struct ah * ) (mtod(m, caddr—t) + off) ; 706 ~ 707 行目で、ヘッダ処理に必喫な清幸肋ゞ連続した メモリ領域に配置されているかを石忍します。認証ヘッダ のう巨頁を示すポインタ変数 ah 経由で認証ヘッダ内部の 報にアクセスするため、認証ヘッダ全体里続したメモリ 領域に配置されていなけれはなりません。 ip6 = mt0d (m , struct ip6—hdr * ) ; 716 717 nxt = ah—>ah_nxt ; 716 行目で、 IP バケットの情報をポインタ変数 ip6 経 由て参照できるようにします。 nxt には認証ヘッダの次に 続く刻に、ツ久もしくは上位層プロトコルの番号が定 されます。 720 if (ip6-getpktaddrs(m, &src—sa' &dst-sa) ) ip6-getpktaddrs() を呼び出し、スコープ情報付きの始 点 / 終点アドレスを src-sa と dst-sa に取り出します。 SAD の検索 認証ヘッダの処理では、ます受信した認証ヘッダに対応 する SAD (Security Association Database) 工ントリ があるかを石忍します。 724 spi = ah—>ah—spi; SAD 工ントリは、 SPI (Security Parameter lndex) と受信ノードの IP アドレスの組により、ノード内で一 諸、リ、 に識別することができます。 SPI には通信している 2 者間 であらかじめ合意された値カ硬われるので、 SPI をキーに して SAD 工ントリを特定できます。 SPI の値は認証ヘッ ダに含まれています。 724 行目で、認証ヘッダに指定され ている SPI 値 (ah-spi) を取り出します。 if (ntohs (ip6->ip6—p1en) 726 730 731 } goto fail ; 721 goto fail; KAME では、バケットの始点 / 終点アドレスを参照 する際に、 IP バケットに埋め込まれている値を参照しま せん。スコーフ情報が欠けているからです。 720 行目で、 UNIX MAGAZINE 2003.5 726 ~ 731 行目は巨大ペイロード・オプションのチェ ックです。巨大ペイロード・オプションが使われている と、認証ヘッダは利用できません。巨大ペイロード・オプ ションか利用されている場合、 IP バケットのペイロード 長 (ip6-plen) は 0 に設定されています。ペイロード長が 0 であればバケットを破棄します。 733 ~ 740 行目 ( 図 1 ) で、 SAD 工ントリを検索しま す。 key-allocsa() は、引数て指定された条件に適合する SAD 工ントリを検索し、変数 sav にポインタを設定しま す。 sav は secasvar 構造体のポインタ変数です。 733 ~ 734 行目では、 IPv6 の SAD 工ントリ (AF-INET6) で、 始点アドレスと終点アドレスが入力した IP'NO ケットの始 点アドレス (srcsa) と終点アドレス (dstsa) 、 IP セキュ リティの不頁か認証ヘッダ (IPPROTO-AH) 、 SPI 値が 入力した IP バケットで指定されていた値 (spi) であるも 67