連載 / UN Ⅸ便利帖ー 0 リスト 1 validator-httpd.conf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 く Virtua1Host 192. 168. 174.82 > DocumentR00t /usr/local/validator/htdocs/ ScriptA1ias SetEnv ServerName ErrorLog CustomLog /check /usr/local/validator/httpd/cgi—bin/check W3C_VALIDATOR_CFG /usr/local/validator/htdocs/config/validator. conf validator. kyoto—wu ・ ac ・ jp /var/log/validator—error—log /var/log/validator—access—log combined く /VirtuaIHost> く Directory /usr/local/validator/htdocs> Options ExecCGI Inc1udesNOEXEC lndexes Mu1tiViews A110wOverride None AddHand1er server—parsed . html AddChar s et utf—8 く /Directory> . html 表 1 要な Perl モジュール モジュー丿レ CGI. pm Config-General libwww-perl Net-IP Set-Intspan Text-Iconv port ティレクトリ (/usr/ports 以下 ) www/p5-CGI.pm devel/p5-Config-General www/p5-libwww net-mgmt/p5-Net-IP math/p5-Set-IntSpan converters/p5-Text-Iconv ここに挙げたもの以外に HTML-Parser と URI という 2 つのモジュールも必要になりますが、これらは libwww- perl モジュールをインストールすると、依存関係から自動 的に導入されます (ports システムにはいつもお世話にな っていますが、このように依存関係のあるものをインスト ールするときにはとくに便利です ) 。 これで、 Markup Validator をインストールする準備が 整いました。 本体のインストール 最初に、 Markup Validator をインストールするディレ クトリを用意します。これはどこでもかまいませんが、今 回はインストール・ガイドに従って /usr/local/validator とします。 % sudo mkdir /usr/local/validator さきほど *. tar. gz ファイルを取得したのなら、このディ レクトリにそれらを展開し、 CVS を利用した場合はソース UNIX MAGAZINE 2004.8 % sudo tar xzf sgml—lib. tar ・ gz % sudO tar xzf validator. tar. gz % cd /tmp ・ *. tar. gz ファイルを取得した場合 ファイルをそのままコピーします。 % sud0 cp —R . /va1idator—O . 6.6 / * \ /usr/local/validator ・ CVS を利用した場合 % cd CVS リポジトリを展開したディレクトリ % cd validator % sudO cp —R . /usr/local/validator これでインストール作業は終了です。なお、インストー ル・ガイドには、℃ VS を利用すると、 sgml-lib ディレクト リが htdocs ディレクトリの下に作成されるカ墹題はない " と書かれていますが、 *. tar. gz ファイルを展開してもそう なるようです。どちらにしても問題はなさそうなので、と くに気にしなくもてよいでしよう。 httpd の言又疋 Markup Validator を動かすための httpd の設疋ファ イルの雛形として、 /usr/local/validator/httpd/conf/ httpd.conf が用意されています。ますは、これを適当な 名前のファイルにコピーして編集します。 % cd /usr/local/validator/httpd/conf % sudo cp httpd. conf validator-httpd. conf このファイルには、 Markup Validator を動かすための 設疋だけが書かれています。したがって、このファイルを httpd の設疋ファイルにマージして利用します。 編集後の validator-httpd.conf の内容は、リスト 1 のようになりました ( 行頭の数字は行番号です ) 。今回 は Apache httpd のバーチャルホスト機能を使うので、 Markup Validator に関する設疋は VirtualHost ディ レクテイプで囲まれた部分に書かれています ( 1 ~ 8 行目 ) 。 1 行目の 192.168.174.82 というのはこのホストの IP ア 105
連載 / UN Ⅸ便利帖ー 0 リスト 2 httpd.conf の末尾に追加した部分 1 2 3 く Virtua1Host 192 . 168 . 174.82 > black. kyoto-wu. ac . JP ServerName く /VirtuaIHost> 4 lnclude /usr/local/validator/httpd/conf/validator—httpd.conf ドレスで、この IP アドレスに対して DNS 上で valida- tor. kyoto-wu. ac. jp というホスト名が別名として付けら れています。また、 Markup Validator について説明し たページや CGI プログラムのための入力フォームなどは /usr/local/validator/htdocs に格納されているので、 のディレクトリを DocumentRoot とし ( 2 行目 ) 、この ディレクトリのための設疋を 10 ~ 15 行目に言当していま す ( この部分は雛形のままです ) 。 リスト 1 の 3 行目にある ScriptAlias では、 Markup VaIidator の本体部分にあたる CGI プログラムの場所を 定義しています。 4 行目の SetEnv では W3C-VALIDA- TOR-CFG という環境変数を設定しています。これは、 CGI プログラム用の設定ファイル ( 後述 ) の場所を指定す るために利用しています。 httpd の設疋ファイルは、 /usr/local/etc/apache2/ httpd.conf にあります 6 。リスト 1 の設疋ファイルをマー ジするために、 httpd.conf の末尾にリスト 2 を追加しま す。 4 行目で validator-httpd.conf をマージすることを 指定しています。また、今回はバーチャルホスト機能を利 用して Markup VaIidator サービスを提供するので、そ れ以外のサービスはもとのサーバー名で継続しなければな りません。リスト 2 の 1 ~ 3 行目は、そのための言定です (black. kyoto-wu. ac. jp というのは、このホストの本来の 名前です ) 。 以上の作業カ繁ったら、 /usr/local/etc/rc. d/apache2 . sh をリロードし、 httpd に言定を反映しておきます。 validator. conf インストール作業の最後は、 Markup Validator の本体 である CGI プログラム (check) のための設定です。雛形 となるファイルが /usr/local/validator/htdocs/config /validator. conf にあるので、以下のようにしてオリジナ ルを保存してから編集します。 6 これは、 port でインストールしたバージョン 2 系列の httpd の場合のデ フォルトです。 106 % cd /usr/local/validator/htdocs/config % sudO mv validator. conf validator. conf . orig % sud0 cp validator. conf . orig validator. conf このファイルは 80 行近くあるので、変更点だけを説明 します。 Maintainer このサービスの管理者のメールアドレスに変更します。 ・ Home page このサービスのトップページを示す URL に変更しま す。今回の例では http://validator.kyoto-wu.ac ・ jp/ になります。 ・ Msg FAQ URI FAQ を掲載する WWW ページの URL に変更しま す。今回の例では http://validator.kyoto-wu ・ ac ・ jp /docs/errors. html になります。 ・ SGML Parser SGML パーサを指定します。今回は port からインス トールした OpenSP を利用するので、 /usr/local/bin /onsgmls となります。 ・ llow Private IPs チェックする WWW ページの URL として、プライ べート IP アドレスを用いたものを許すかどうかを指定 します。雛形では、、 0 " ( 許可しない ) になっていますが、 今回は学内のイントラネットを対象にしているので 1 ( 許可する ) に変更します。 これですべての定が終了しました。適当な WWW プ ラウザで http://validator.kyoto-wu.ac.jp/にアクセス してみると、図 3 のように表示されました。 ( 図 1 とまっ たく同じようにみえます ) 。 ためしに、図 3 の中刻寸近にあるフォームに適当な URL を入れてみたところ、図 4 のような結果が表示されまし た。この WWW ページは文法的に正しく書けていたよう です。正しく言当されていたページには、図 4 の左中央に UN 工 X MAGAZ 工 NE 2004.8
catman の齦 catman を使えば、自分でインストールしたコマンドなどの マニュアルページも参照できるようになります。しかし、インス トールした catman の変換対象は /usr/share/man と /usr/ local/man の 2 カ所のみで、 /usr/XIIR6/man すら含まれ ていません。 これでは X の多くのアプリケーションをはじめ、 Apache などの独自のパス ( とくに指定していない場合は / usr / 1 。 cal/ apache/man) にマニュアルページをインストールするものは、 たとえ MANPATH カ芍商切に設疋されていても、 catman 形式 ではないために man コマンドで参照できません。 そこで catman コマンドを改良し、これらのマニュアルページ も奐されるようにしましよう。 やり方としては、 catman スクリプトに幻寸象のパスをハー ドコードする方法や、コマンドラインから指定する方法が思い浮か ・ catman の修正箇所 # ! /bin/bash びます。しかし、ハードコードでは対象が増減するたびにスクリ プトを修正しなければならす、スマートではありません。コマン ドラインでの指定も、、 catman" と入力するだけですんだ作業を すこし不便にしてしまいます。 それではどうすればよいのかと考えたところ、いい方法があり ました。 man コマンドがマニュアルページを検索する際は、工竟 変数 MANPATH の指定に従います。 catman もこの変数に 従って奐をおこなえば、もれなくマニュアルページを奐するこ とができます ( もちろん MANPATH が適切に誌定されていな ければなりませんが 以 - E の方針に沿って変更すると、下記のようになります ( 変更部 分を才卆。下線部カ竣更した箇所 ) 。 MANPATH が未定義の場 合は、従来どおり /usr/share/man と /usr/local/man を対 象に奐をおこないます。 # $Header: /V/src/catman/RCS/catman . sh,v 1 . 5 2002 / 08 / 22 06 : 45 : 16 rodney Exp $ target=${MANPATH : —/usr/share/man : /Usr/10ca1/man} ech0 "Running ・ for a in ${target//:/ } do echo "checking $a for new additions" 図 11 catman の実彳ヨ列 (autoconf. 1 を変換 ) $ catman Running ・ checking /usr/share/man for new additions checking /usr/local/man for new additions creating cat ) 1 ) file for "/usr/local/man /catl/autoconf . 1" . Done catman はシェル・スクリプトなので、ソースや Make- file はありません。 TooIWarehouse から catman-l. 11ー bin. tar. gz か catman-l. ll-binjpn. tar. gz を取得し、展 開してください。 $ gzip —cd -/catman-l . ll-binjpn. tar. gz ー \ ()d / ; tar xf ー ) / に展開される LICENCE 、 README というファイ ルは不要なので、一読したら消してください。 catman を実行すると、 /usr/share/man および /usr/ local/man の下を検索し、未変換のマニュアルページがあ UNIX MAGAZINE 2004.8 れば nroff コマンドを呼び出して変換します。 nroff コマ ンドは groff に含まれているので、さきに groff をインス トールしておいてください。 catman の実行の様子は図 11 のようになります。 ng 標準で付いてくるⅵは日本語の入力ができず、ちょっ とした作業にも不自由します。 TooI Warehouse に vim 6.2 があるのですが、 POSIX. EXE ( コンソール ) 上では日 本語を正しく表示できません。 Emacs は、 SFU の libc が スタートアップ ( crt0. o ) に複雑に依存しているためにダン プできす、ビルドをおこなえません。これに対し、 ng はバ ージョン 1.5b に SFU パッチが堤供されており、簡単にビ ルドできます。もちろん日本語にも対応しています。「 Ng サポートページ」 4 から、 ng 1.5beta1 と SFU 3. x 用パッ チを取得してください。 4 http://tt.sakura ・ ne ・ jp/-amura/ng/ 125
■ SFU の活用 [ 01 ] 図 10 alias も検索させるための which の言 (a) bash の場合 alias which='alias ー /usr/local/bin/which ——tty—only (b) csh 系のシェルの場合 (alias which の後ろに がない ) alias which ' alias ー /usr/local/bin/which ——tty—only 表 2 configure で禾できるおもな王見竟変数 —read—alias —read—alias —show —ShOW -dot -dot —show—tilde' —show—tilde' CC CXX LD CXXFLAGS LDFLAGS LIBS C コンパイラの指定 C 十十コンパイラの孑彳定 リンカの孑定 C 十十のコンパイル・オプション リンカのコマンドライン・オプション リンクするライプラリ くは、かならずしも POSIX 準拠の機能だけを利用してい るわけではないので、このような指定が必要になるのです。 複数のオプションを指定するときなど、 CFLAGS の値 に空白が含まれる場合は、 CFLAGS="—D-ALL-SOURCE -l/usr/local/include" のようにダブルクオートで囲みましよう。 CFLAGS のほかには、表 2 のような環境変数カ用で きます ( 上述のとおり、実際に利用できるかはスクリプト に f 衣存します ) 。 さて、 which コマンドは PATH を調べて最初にヒット したコマンドを返しますが、そのままでは bash の alias の内容までは調べてくれません。 alias で異なる動作を指 定したコマンドがある場合、これが表示されないと which は実用的といえません (alias のほうが優先順位が高いの で、 which で表示されたものとは異なるコマンドが実行さ れるからです ) 。 tcsh のビルトイン・コマンドの which は alias を検索してくれますが、 GNU which コマンドに同様 のことをさせるにはひと工夫必要です。その方法は、アー カイプを展開したディレクトリにある EXAMPLES とい うファイルに書いてあります。具体的には、図 10 のよう な alias を作成します。 この設疋を、 . bashrc などに言当しておくとよいでしょ う ( 図 7 の . bashrc にはこの alias が含まれています ) 。 tcsh でも同様に alias を指定しておくと、ビルトインの which ではなくこちらの which を利用できますはく使 われている Red Hat 系の Linux ディストリビューショ ンは、 /etc/profile. d/which-2. {sh,csh} で同様の定を おこなっています。 Linux の場合は、コマンド・プロンプ 124 トから alias あるいは which which と入力すると、 which のエントリが表示されるはすです ) 。 m4 や tar カ誤定外の動作をする場合は、 which を使っ て正しいコマンドが実行されているかを確認してください。 $ which tar /usr/local/bin/tar bzip2 、 groff 、 GNU tar 基本的には bash や which と同じく、展開して config- ure 、 make 、 make install を実行するだけです。ただし、 groff は TooI Warehouse から取得した SFU 向けのパッ ケージでも、次のように環境変数 CXXFLAGS に -D- ALL-SOURCE を指定して configure を実行しないと、 ビルドに失敗するので注意してください ( パッケージング catman のまま make 、 make install を実行してください。 なお、 bzip2 には configure スクリプトはないので、そ $ make install $ make $ CXXFLAGS= ) -D_ALL_SOURCE ' . /configure の不具合なのでしようか ) 。 UN 工 X MAGAZINE 2004.8 3 、 ? " はセクションを示しています。 ページを catman 形式に変換してくれます。 catman コマンドは、 こうした ro 仼形式のマニュアル フトウェアのマニュアルページはほとんど参照できません。 このため、標準の状態では、自分でインストールしたソ 式のファイルが帑内されています ) 。 下には catman 形式のファイルが、 man ? の下には ro 仕形 (/usr/share/man や /usr/local/man にある cat?3 の 形前の ro 仕形式のマニュアルページをインストールします トールしたコマンドを含め、ほとんどのソフトウェアは整 ページしか表示できません。ところが、これまでにインス コマンドは整形済みのいわゆる catman 形式のマニュアル nroff が標準で用意されていないためか、 SFU の man
図 6 . bash-login 窈列 # ! /bin/bash PATH=/usr/10ca1/bin: /opt/gcc. 3.3/bin: /usr/bin: /usr/X11R6/bin: /usr/contrib/bin: - /usr/contrib/win32/bin:/common: /usr/local/sbin: /usr/sbin: ${PATH} export PATH LD_LIBRARY_PATH=/usr/1ib : /usr/X11R6/1ib : /usr/local/lib export LD—LIBRARY—PATH MANPATH=/usr/10ca1/man : /usr/share/man export MANPATH TERM=${TERM : —interix} TERM=${TERM/dumb/interix} export TERM 図 7 . bashrc 窈列 # ! /bin/bash LANG=j a—JP. SJIS export LANG case " $ ー In export PSI esac alias which= ' alias ー /usr/local/bin/which 図 8 SFU 版 which. exe の出力例 $ which which C : \SFU\common\which . exe ( 誌面の都合上、で折り返しています。以下同様 ) 在させると、想定外のコマンドが起動して問題カ起きるこ とがあります。 which コマンドは、そのようなときに威力を発揮します。 SFU では、上記のコマンドカそれぞれ / usr / b ⅲと /usr/ local/bin にインストールされることカ畛しくないので、 のコマンドはかなり便利かつ重要です。 tcsh (csh) を使用している場合は、 which がシェルのビ ルトイン・コマンドとして提供されているので、とくにイ ンストールする必要はありません。 bash と ksh の場合は、 別途インストールする必要があります。 /common (C:* SFU*common) には、、ⅲ 32 環境用の which. exe コ マンドがあり、 SFU 側からも呼び出せるようになっていま す。しかし、表示されるパスが Win32 の形式なのでいま ひとっ実用的ではありません ( 図 8 ) 。 which にはいくつかの実装カ在しますが、 GNU which を使用することにします。 FTP サイト 2 か ら which-2.16. tar. gz を取得し、展開してください。 インストール作業は、 configure を実行してビルドする 2 ftp://ftp.gnu ・ org/gnu/which/which-2.16.tar.gz こでは UNIX MAGAZINE 2004.8 —show—dot ——show—tilde ' —tty—only ——read—alias 図 9 configure スクリプトの実行とヒルド (a) bash の場合 $ CFLAGS=—D_ALL_SOURCE . /conf igure $ make & & make install (b) csh 系のシェルの場合 % env CFLAGS=-D-ALL—SOURCE . /configure % make & & make install だけです。ビルドはとくに問題なく進行するはずです。 のとき、図 9 のように環境変数 CFLAGS に—D-ALL -SOURCE を設定して configure を呼び出します。これ により、 configure スクリプトカ誤定していない環境に適 合する Makefile を、 configure スクリプトを修正するこ となく生成できます。すべての configure スクリプトがこ の機能をサポートしているわけではありませんが、大半の もので利用できるので、 wget などの SFU に対応していな いパッケージをビルドするときに使えます。 CFLAGS は C コンパイラに渡すオプションを指定する もので、 -D-ALL-SOURCE は BSD 由来などの非 PO- SIX の機能も利用することを指示します。 SFU では、 PO- SIX 互換ではない関数、定数マクロ、型宣言や構造体定義 などは、明示的に指示されなければプリプロセッサによっ て除外されてしまいます。一方、既存のソフトウェアの多 123
■ SFU の活用 [ 01 ] 図 3 /usr/local へのインストールを避ける場合 % . /configure -—prefix=/ ——mandir=/usr/share/man 図 4 /etc/shells の変更下線部が〕ロ箇所 ) 図 5 bash のショートカットのプロバティ —infodir=/usr/share/info # This is a list of valid login shells (single rooted) . # Ftpd must see one of these shells as a user's login shell to connect . /bin/sh /bin/ksh /bin/csh /bin/tcsh /bin/bash bash のプロバティ (/usr/local/bin にインストールした場合は /usr/local/bin/bash とする ) を一区ー bash のプ 0 バティ 全般 リンり先 作業フォルダ 。ョトカット 実行時 大きさ ( 3 コメント 0 ) ・ 種類 : ショートカット systemQ ア列ケーション 亙換性 わション セキュリティ フォントレイアウト 地の色 イカーソルのサイズ 〇小 ) 0 中 0 穴 コマンドの履歴 バッフアサイズ旧 ) : ハッファ数 : ショート加ト 現在のコードベージ 0 ロ重複する古い履歴を破棄 0 オプション ②区 セキュリティ レイアウト 〇ウインめ表示 表示オプション 曰挿入モード 曰簡易編集モード 0 編集オプション 0 全画面表示 (U) 4COWSVsystemQPOSD{EXE ん /c ⅵん ash - C:*%NDOVvS*System32* なし 通帝のウインドウ hterix bash シ 1 ルを実行します 9 (ANSVOEM - 日本語新 i J 旧 ) ーⅡーⅡこ一コ ンストールされます。 % make insta11 % make です。 c 。Ⅱ figure が完了したら、あとはビルドとインストール とは csh のショートカットをコピーし、 bash が起動する さい。 bash のプロンプトカ観れたら導入は成功です。あ のように、かなら $rehash を入力してから実行してくだ bash—2.05b $ % bash % rehash をしている場合はハッシュの再構築が必要なので、 確かめるため、 bash を実行してみましよう。 csh 上で作業 こまで済んだら、正しくインストールできているかを / etc / shells にもエントリを追加しておきましよう ( 図 4 ) 。 これで、 bash が使えるようになります。念のために 122 ように変更してメニューに入れておくと便利でしよう。こ のとき、必要に応じてスクロール・バッフアの量や簡易編 集の定も変更しておくとよいでしよう ( 図 5 ) 。 なお、 bash の設定は用意されていないので、 ~/. bash- login や ~/. bashrc で必要な設定をするようにしてくださ い ( 図 6 ~ 7 ) 。最低限必要になる設定は、 PATH 、 LD-LI- BRARY-PATH 、 MANPATH 、 TERM などになりま す。 ~/. bash 」 ogin と ~/. bashrc の違いは、前者がログイ ン時 (SFU の場合は bash —login のように起動された場 合 ) にのみ読み込まれるのに対して、後者は bash が起動 されるたびに呼び出される点です。 which tar と GNU tar 、 make と GNU make 、 m4 と GNU m4 などのコマンドは名前カ叫ていますが、動作は異なり ます。これらを異なるディレクトリにインストールして混 UNIX MAGAZINE 2004.8
図 12 DDNS の言綻 ダイナミック DNS ダイナミック D アカウントの自更新設定を行います。 バックアップト取 [ れ DN 望 ) み利用可 ] ん 0 ホスト名防 nD のみ利用可 ] ワイルドカード⑩ yno 橋のみ利用可 ] 登鉧する炉アドレス ホスト名 [ D 川 D のみ利用可 ] ダイナミックおパスワード ダイナミックおユーザ名 I 用サービス ダイナミック 0 アカうン臼 WA 川薊 p アドレス [ 道常接読 / PPPoE プライマリセクション ] あり、ある利用者が myhome ・ dynamic-domain ・ jp を自 宅のインターネット接続のためのドメインとして使うとし よっ。この場合、 myhome. dynamic-domain. jp からそ の利用者のインターネット接続の IP アドレスが分かる。 したがって、外部から自宅に SSH 接続するには、コマン ド行で次のようにすればよい。 ssh myhome . dynamic—domain ・ JP プロードバンド・ルータの多くは DDNS にも対応して いる。図 12 はその設疋例である。 ルータが DDNS に対応していなくても、大きな問題では ない。 DDNS サービスの多くは、決まった本にの HTTP リクエストを受けると登録を更新するため、そのようなリ クエストを一定時間ごとに Cygwin の wget コマンド で送ればよい。一定時間ごとにコマンドを起動するには、 これも Cygwin の cronl を使う。たとえば、 Dynamic DO!. jp2 を使っていて、ドメイン名が unixmag. ddo. jp で あり、更新のためのパスワードが、、 qwerty" だとする。 の場合、以下のコマンド行で更新が実行される ( 誌面の都 合上、で折り返しています。以下同様 ) 。 wget "http : //ddo. jp/dnsupdate. php?dn=unixmag=> &pw=qwerty' これを、たとえば毎時 7 分に実行させるには、図 13 の 工ントリを crontab コマンドで挿入すればよい。 1 cron はデフォルトではインストールされない。 setup. exe の実行時に cron も尺すると、 cron デーモンのほかに crontab コマンドも使える ようになる。 2 http://ddo.jp/ UNIX MAGAZ 工 NE 2004.8 リモート・テスクトップ接続 のコマンド行で以下のように入力すれば、自宅の Home こまでの説明どおりに設疋していれば、 Remote PC ◆ SSH の基本操作 操作について説明する。 クトッフ鮟続の準備カった ーからは、接続のための 以上で、自宅への SSH を使った安全なリモート・デス リモート・デスクトップ接続の操作の詳細 設疋ファイルを指定することができる。 使い分ける。 ssh コマンドでは、 -F オプションで使用する configl 、 config2 などの設疋ファイルを用意し、これらを 複数の環境からアクセスする場合には、 ~/. ssh の下に -S socks . remote—place . jp: 1080 %h %p ProxyCommand /usr/local/bin/connect —R 10Ca1 - 部についても名前解決ができるのなら、以下のようにする。 ていることがある。そのような場合は、 Remote PC で外 稀に、 SOCKS サーバーが名前解決をしない設定になっ -S socks . remote—place . jp: 1080 %h %p ProxyCommand /usr/local/bin/connect - の 1 行を ~/. ssh/config に書き加えればよい。 が socks. remote-place. jp で動いているとすると、以下 config でおこなう。標準的な設疋の SOCKS5 サーバー 続いて、 ssh で connect を使うための設定を ~ /. ssh / どに保存しておく。 そして、生成された connect. exe を /usr/local/bin な gcc connect . C ー 0 connect 下のようにしてコンパイルする。 こから connect. c をダウンロードし、 Cygwin で以 connect. html ・ http://www.imasy.or ・ jp/-gotoh/ssh/ というプログラムを使うとよい。 カ材くヨ - ・分なので、以下の URL で紹介されている connect きないことも多い。 OpenSSH 自体は SOCKS への対応 きるのなら簡単だが、 SOCKS を経由しないとアクセスで Remote PC からインターネットに透過的にアクセスで ◆ SOCKS 経由で SSH クライアントを使う PC に SSH による接続ができるはすである。 163
連載 / UN Ⅸ便利帖ー 0 図 2 ソースコードの入手 % cvs get —r vaIidator—0—6—6—reIease validator CVS password : anonymous" と入力 (Logging in t0 anonymous@dev.w3.org/ % cvs login % setenv CVSROOT :pserver : anonymous@dev.w3.org//sources/public (b) CVS リポジトリの不 % fetch http://validator.w3.org/sgml-lib.tar ・ gz % fetch http://validator.w3. org/validator.tar ・ gz % cd /tmp (a) * ・ tar ・ gz ファイルのダウンロード インストールの前に それでは Markup Validator をインストール、 いきたいところですが、本体をインストールする前に次の 2 つを揃えておく必要があります。 ・ OpenSP (SGML パーサ ) ・ Perl のモシュール といっても、 FreeBSD には豊富な ports がありますか ら、これらの作業にたいした手間はかかりません。 OpenSP は /usr/ports/textproc/opensp を利用し ます。この port のバージョンは 1.5 で、さいわいにも Markup Validator が必要とするバージョンと同じです。 % cd /usr/ports/textproc/opensp % sudO make install これで、 SGML パーサ onsgmls が /usr/local/bin に インストールされます ( 上の例で実行している sudo コマ ンドは一時的に管理者権限を利用するためのもので、これ も port を使って /usr/ports/security/sudo からイン ストールできます ) 。 次は、 perl のモジュールのインストールです。その前 に、 perl のバージョンをチェックしましよう。 今回利用した FreeBSD 4. IO-RELEASE では、 OS 標 準の perl が /usr/bin/perl としてインストールされてい ます (FreeBSD の current と呼ばれる最新版では、 OS 標準の perl はインストールされないようです ) 。この Perl のバージョンは 5.005 ー 03 でした。 Markup VaIidator を 利用するには、すくなくともバージョン 5.6.0 が必要なの で、まずは Perl そのものを ports からインストールし ます。以下ではバージョン 5.8 系列の最新版をインストー ルしていますが、 /usr/ports/Iang/per15 にバージョン 104 5.6.1 のための p 。 rt があるので、こちらを利用してもかま いません。 % cd /usr/ports/1ang/per15.8 % sudO make install このインストール作業が終了しても /usr/bin/perl は 自動的には置き換えられす、標準で利用される Perl はま だ 5.005 ー 03 のままです。これを、いまインストールした ものに変更するには次のようにします。 % sud0 use . perl port こうすると、 / usr / b ⅲ / perl からいまインストールした /usr/local/bin/perl ヘリンクカ胙られ、標準で利用され る perl がバージョン 5.8.4 になります ( これをもとに戻 す ( リンクをやめる ) には、、、 sudo use. perl system" と します ) 。 続いて、 perl のモジュールをインストールします。 Markup Validator はいくつものモジュールを必要と し、各モジュール間に依存関係があります。そのため、必 要なモジュールを簡単にインストールする仕組みとして Bundle-W3C-VaIidator5 が用意されています。 インストール・ガイドには、これが、、 easy and strongly recommended way" であると書かれていますが、残念な がら FreeBSD の場合はそのままではうまくいきません。 さいわい、インストール・ガイドには Markup VaIidator で必要となるモジュールが具体的に書かれているので、今 回はこれらを 1 っすっ p 。 rts からインストールしました。 FreeBSD では、こちらの方法が、、 easy and strongly rec- ommended" だと思います。 ports からインストールしたモジュールは表 1 のとおり です ( 右欄では頁の、、 /usr/ports/" を省略しています ) 。 5 http://search.cpan ・ org/dist/BundIe-W3C-Validator/ UNIX MAGAZ 工 NE 2004.8
・・インストール この特集では SOCKS については説明しませんが、必 ・ http://www.oberhumer.com/opensource/lzo/ ドする必要はありません ) 。 BSD では ports に含まれているため、ここからダウンロー . tar. (z) を下記の URL からダウンロードします (Free- 次に、 LZO ライプラリのソースパッケージ ( レ 0 ー 1.08 お勧めしません。 することも可能ですが、通信内容の暗号北ができないので しておきましよう。 OpenSSL を組み込まずにコンパイル テムにこれらが入っていない場合は、事前にインストール リとインクルード・ファイルが必要です。使っているシス OpenVPN のコンパイルには、 OpenSSL のライプラ ンロードしたものを使います。 ンが旧い ( 1.4 ) ので、この特集では Web ページからダウ は ports からコンパイルすることもできますが、バージョ のソースパッケージをダウンロードします。 FreeBSD で ョンの、、 . tar. gz " のリンクをクリックし、 OpenVPN 1.6 まず、図 21 のページの左側にある、、 Dow ⅲ oad " セクシ Red Hat Linux と FreeBSD ます。 xp に OpenVPN 1.6 をインストールする方法を紹介し 以下では、 Red Hat Linux と FreeBSD 、 Windows コンパイルは、次のようにたいへん簡単です。 要であれば適切なライプラリを用意します。 Red Hat Linux の場合 # tar xvzf 1Z0 ー 1 .08. tar ・ gz PPTP プログラムと OpenVPN ・・ # cd どこか # tar xvzf openvpn—l . 6 . 0 . tar ・ gz # cd openvpn—l . 6.0 . /configure ——prefix=/usr \ —with—lzo—lib=/usr/local/lib \ —with—lzo—headers=/usr/local/include # make # make install ・ Red Hat Linux の場合 ジュールがロードできるかを確認します。 て構築されています。そこで、次のコマンドを実行してモ では、 TUN/TAP デバイスはカーネル・モジュールとし う。 Red Hat Linux と FreeBSD のデフォルトの構成 が正しくカーネルにロードされるかを確認しておきましよ また、 OpenVPN を動かす前に、 TUN/TAP デバイス する両端のホストでおこないます。 いうまでもありませんが、これらの作業は VPN を構築 # chkconf ig ——add openvpn /etc/init . d/openvpn # cp sample¯scripts/openvpn ・ init \ ンストールします。 Red Hat Linux の場合は、さらに init スクリプトもイ # modprobe tun # lsmod ロ心、 # cd 120 ー 1 .08 . /conf igure # make # make insta11 # cd どこか # tar xvzf openvpn¯l . 6 # cd openvpn—l . 6 . 0 . /configure —¯prefix # make # make instaII ・ FreeBSD の場合 . 0 . tar =/usr —enable —pthread # cd /usr/ports/archivers/lzo # make # make install UNIX MAGAZ 工 NE 2004.8 # ls /dev/net/tun ←確認 /dev/net/tun がなかったら以下を実行 # mknod /dev/net/tun c 10 200 ・ FreeBSD の場合 # kldload if_tun # k1d10ad if—tap # kldstat モジュールのロードに失敗した場合は、そっと胸に手を 当てて、過去に自分でカーネルを再コンパイルしたことが ないかを思い出してみましよう。もしかすると、そのとき に TUN/TAP デバイスを外してしまったのかもしれませ ん。 Windows XP 同じく図 21 のページの左側にある、、 Download" セク ションの self-install. exe のリンクをクリックして、イン ストール・パッケージをダウンロードします。 ダウンロードしたら、ファイルを開いてインストーラを 起動します。あとは、 [Next] や [ 続行 ] をひたすらクリッ クするだけでインストールは完了です。インストールの途 47
VPN ツールの使い方… 2 図 15 /etc/ppp/options ・ pptp の言列 (Linux) lock nobsdcomp no aut h noipdefault refuse—mschap nomppe—40 require-mppe—128 図 18 /etc/ppp/iP-UP. local の言列 (Linux) 図 16 クライアント用 /etc/ppp/chap-secrets の言諚例 (Linux) # account server password aa867544b0 p anda 工 P addr 図 17 /etc/ppp/peers/unilnag の言列 (Linux) user panda file /etc/ppp/options ・ pptp # ! /bin/sh # Check if link is a PPTP if [ "echo $ 2 ー cut —f ー 3 —d/' " # $ 1 : device name # $ 4 : 10Ca1 addr # $ 5 : remote addr " /dev/pts" ] ; then route add -net 192 .168.1.0 netmask 255 . 255.255.0 gw $ 5 しかし、サーバー側ホストを再起動するたびに上記のコ マンドをいちいち実行するのはひどく面倒です。 Red Hat Linux の場合は、 /etc/rc. d/rc. local に言当しておくとよ いでしよう。 FreeBSD の場合は、 /etc/rc. conf に gate- way-enable= ” YES ”を追加します。 ・・ PPTP Client 次に、 Red Hat Linux や FreeBSD からも PPTP 接 続できるように、 PPTP のクライアント・ソフトウェアで ある PPTP Client をインストールします。 PPTP Client は、、、そのまんまやん " と突っ込みたく なるほど名前どおりの PPTP クライアント・プログラム です。 Poptop と同じく、 PPP トンネルの処理にシステ ムに付属する PPP プログラムを利用するため、 Red Hat Linux では pppd プログラム・ファイルの入替えとカーネ ル・モジュールのコンパイルが必要になります。作業手順 については、前述の Poptop のインストール作業のところ を参照してください。 PPTP Client のソースパッケージは、図 2 の PPTP Client の Web ページからダウンロードしてください。 FreeBSD では ports からコンパイルすることもできま すが、バージョンがすこし旧い ( 1.1.0 ) ので、この特集で は Web ページからダウンロードしたものを使います。 このインストール作業で面倒なところは、 pppd の入替 えとカーネル・モジュールのインストールだけで、 PPTP Client 自体のコンパイルは次のようにたいへん簡単です。 f i 44 図 19 /etc/ppp/PPP ・ conf への〕劬列 (FreeBSD) ただし、 FreeBSD でコンパイルする場合は、 Makefile # make install # make cd pptp—linux-l . 4.0 # tar xfvz pptp—linux—l . 4 . 0. tar . gz add 192.168.1.0 / 24 HISADDR set ifaddr 0 0 set timeout 0 set authkey aa867544b0 set authname panda ↓ PPPD = /usr/sbin/ppp PPPD = /usr/sbin/pppd の以下の 2 カ所を下線部のように書き換えてください。 CFLAGS CFLAGS -Wa11 -Wa11 ↓ $ ( 工 NCLUDE) $ (INCLUDE) -DUSER_PPP PPTP C ⅱ ent を使ってみる PPTP Client を実行するには、以下の設疋ファイルを 用意します。 ・ Red Hat Linux の場合 /etc/ppp/options ・ pptp /etc/ppp/chap-secrets /etc/ppp/peers/ コネクション名 ・ FreeBSD の場合 UNIX MAGAZ 工 NE 2004.8