麦酒堂
RSS
エントリ一覧
カテゴリ一覧
月別一覧
スープカレー[10 entries]
AH-K3001V[5 entries]
Beer[1115 entries]
Books[11 entries]
Camera[17 entries]
Cygwin[10 entries]
iPhone[2 entries]
Java[9 entries]
JavaScript[8 entries]
Linux[71 entries]
mac[12 entries]
Movabletype[15 entries]
.NET[2 entries]
Photos[24 entries]
PHP[8 entries]
Ruby[7 entries]
Underground[11 entries]
WX310SA[4 entries]
早起きブログ[11 entries]
2011年10月[4 entries]
2011年09月[8 entries]
2011年08月[23 entries]
2011年07月[3 entries]
2011年06月[15 entries]
2011年05月[15 entries]
2011年04月[8 entries]
2011年03月[19 entries]
2011年02月[13 entries]
2011年01月[11 entries]
2010年12月[21 entries]
2010年11月[10 entries]
2010年10月[12 entries]
2010年09月[14 entries]
2010年08月[11 entries]
2010年07月[13 entries]
2010年06月[12 entries]
2010年05月[17 entries]
2010年04月[13 entries]
2010年03月[23 entries]
2010年02月[18 entries]
2010年01月[17 entries]
2009年12月[22 entries]
2009年11月[13 entries]
2009年10月[6 entries]
2009年09月[11 entries]
2009年08月[33 entries]
2009年07月[19 entries]
2009年06月[16 entries]
2009年05月[17 entries]
2009年04月[15 entries]
2009年03月[16 entries]
2009年02月[35 entries]
2009年01月[11 entries]
2008年12月[20 entries]
2008年11月[18 entries]
2008年10月[18 entries]
2008年09月[16 entries]
2008年08月[12 entries]
2008年07月[11 entries]
2008年06月[18 entries]
2008年05月[15 entries]
2008年04月[4 entries]
2008年03月[13 entries]
2008年02月[13 entries]
2008年01月[10 entries]
2007年12月[11 entries]
2007年11月[21 entries]
2007年10月[11 entries]
2007年09月[16 entries]
2007年08月[11 entries]
2007年07月[14 entries]
2007年06月[24 entries]
2007年05月[20 entries]
2007年04月[15 entries]
2007年03月[29 entries]
2007年02月[24 entries]
2007年01月[21 entries]
2006年12月[14 entries]
2006年11月[14 entries]
2006年10月[26 entries]
2006年09月[28 entries]
2006年08月[16 entries]
2006年07月[37 entries]
2006年06月[30 entries]
2006年05月[27 entries]
2006年04月[25 entries]
2006年03月[32 entries]
2006年02月[22 entries]
2006年01月[31 entries]
2005年12月[19 entries]
2005年11月[25 entries]
2005年10月[37 entries]
2005年09月[14 entries]
2005年08月[30 entries]
2005年07月[23 entries]
2005年06月[16 entries]
2005年05月[33 entries]
2005年04月[14 entries]
2005年03月[12 entries]
2005年02月[26 entries]
2005年01月[16 entries]
2004年12月[28 entries]
2004年11月[10 entries]
2004年10月[19 entries]
2004年09月[13 entries]
2004年08月[17 entries]
2004年07月[19 entries]
2004年06月[10 entries]
2004年05月[16 entries]
2004年04月[17 entries]
2004年03月[32 entries]
2004年02月[23 entries]
2004年01月[35 entries]
2003年12月[29 entries]
2003年11月[25 entries]
2003年10月[15 entries]
麦酒堂 TOP > >
<< 前の月
次の月 >>
  • 20041231 000463
    雪道の歩き方
    miz 2004-12-31 14:57
    このエントリーを含むはてなブックマーク はてなブックマーク - 雪道の歩き方

    いやぁ,雪ですねぇ. 嬉しくなって,買い物の帰りに遠回りしてしまいました.

    その際に気付いたのだけれど,足跡にも二種類ありますね. かかとが伸びたものと,そうではないもの. 雪道の歩き方としては恐らく後者が安全でしょうね.

    かかと部分が伸びているということは,斜めから接地したことを示します. 斜めから接地すると力が斜め上からかかり,水平方向に力の成分が現れます. そして,この水平成分が摩擦力を超えると横滑りが始まり,転ぶ原因にもなります. これは危険.

    雪道を歩く一番のコツは,路面を真上から押さえつけるように踏み出すことです. 歩幅も小さいほうが良いでしょう.

    ころびやすそうな足跡
    ころびやすそうな足跡
    ころびにくそうな足跡
    ころびにくそうな足跡

    せっかく積もった雪なので,みなさんも自分の足跡をチェックしてみるのはいかがでしょう.

    [ permalink ] [ 1 comment(s) ]
  • 000462
    CVS のリモート接続
    miz 2004-12-31 13:10
    このエントリーを含むはてなブックマーク はてなブックマーク - CVS のリモート接続

    今までは pserver を使って CVS をリモートから使用していたのだけれど,どうやら SSH 経由でいけるらしいことが判明しました.

    • 2.9.2 Connecting with rsh - Version Management with CVS

    上記が "official" manual for CVS だそうです.

    設定方法
    $ export CVS_RSH=ssh
    $ export CVSROOT=:ext:cvshost:/home/cvsuser

    これで cvs co などを行えば SSH 経由で CVS の操作が可能です. ただ,ポートの変更方法が未だ見つからず.

    [ permalink ] [ 0 comment(s) ]
  • 20041230 000461
    時刻同期の設定 - ntp
    miz 2004-12-30 23:40
    このエントリーを含むはてなブックマーク はてなブックマーク - 時刻同期の設定 - ntp

    PC の時計は案外狂いやすいそうです. しかし,そこはよくしたもので,きちんと正確な時刻を取得するための仕組みも用意されています.

    • NTP: The Network Time Protocol
    • 4. 正確な世界時に同期する - JF

    原子時計等を使用した,かなりの精度で正確な時刻を持ったサーバをルートに据えて,それと時刻を同期させるためにサーバ階層を構築しています. 今回はその階層の末端に自分のドメインのマシンを一つぶら下げる設定を行いました.

    NTP はネットワーク経由で時刻情報をやり取りする関係上,伝送遅延の影響を完全には排除し切れませんが,ターンアラウンドタイムなどを用いてかなりの精度で時刻合わせを行うことができます(我が家では 10 msec オーダー). ただしこの際注意したいのが,同期先のサーバがいかに正確であろうとも,伝送遅延の変動が大きい場合は精度が落ちる点です. 非常に正確 (例えば Stratum1) だけれど遠いサーバにつなぎにゆくよりも,プロバイダなりが提供するような,Stratum3,4 程度だけれど近いサーバのほうが結果的により精度が出る可能性があります. それに,いきなり Stratum1 につなぎにいってしまったのでは,階層構造をもたせている意味もないですしね. まずは,近所の NTP サーバを探してみましょう.

    設定手順
    1. NTP サーバ探し

      プロバイダのページに記述がありました.以下の二つが用意されているようです.

      • ntp1.wakwak.com
      • ntp2.wakwak.com
    2. 設定ファイルの編集

      上記 NTP サーバの設定に加え,本サーバに接続できるクライアントマシンを制限する設定を行います.

      /etc/ntp.conf
      ...
      restrict 192.168.100.0 mask 255.255.255.0 nomodify notrap
      ...
      server ntp1.wakwak.com
      server ntp2.wakwak.com
      ...
    3. ntpd の起動

      設定が終わったら以下のように ntpd を起動します.

      # /etc/rc.d/init.d/ntpd start
    4. 動作確認

      ntpd を起動してしばらく経ったら,以下のように動作を確認します.

      # ntpq -p

      "offset" が同期先サーバと本マシンの時刻のズレ (ms) です.

    設定ファイルの詳細は次のページを参考にしてください.

    • ntpd - Network Time Protocol (NTP) daemon

    一番下に設定ファイルについての説明ページへのリンクがあります.

    [ permalink ] [ 0 comment(s) ]
  • 000460
    MT3.121 移行とパッチ幾つか
    miz 2004-12-30 15:40
    このエントリーを含むはてなブックマーク はてなブックマーク - MT3.121 移行とパッチ幾つか

    OS を Fedora Core 3 に上げたところ,直接の原因は不明ながら MT が文字化けを起こすようになりました.

    DB から取得したデータを ISO-8859-1 で処理しているようで,めちゃめちゃな実体参照だらけです. 多分どこかいじれば直るんだろうけれど,今更 MT2.64 のソースをいじるのもどうかと思ったので,いっそと MT3.121 に移行してしまいました.

    MT の export / import の機能もあるのだけれど,噂ではファイル名が変わってしまうらしいので却下. MT のアップグレード用パッケージで DB スキーマを変更する方針をとりました.

    • Movable Typeのアップグレード手順
    1. データのバックアップ

      念の為,データベースのバックアップを取得します.

      $ pg_dump movabletype > mt.dump
        
    2. アップグレード用パッケージの DL

      パッケージの種類「アップグレード」を選択してダウンロードします.

      • Movable Typeの入手方法について
    3. mt-upgrade*.cgi のコピー

      アーカイブを展開して,mt-upgrade*.cgi を既存の MT のルートディレクトリにコピーします.実行権限があることを確認しましょう.

    4. DB スキーマの更新

      今回は 2.64 がベースなので以下の二つのファイルにアクセスして,DB スキーマを更新します.

      • mt-upgrade30.cgi
      • mt-upgrade31.cgi

      なにやら WARNING がでますが,メッセージを読む限り特に問題なさそうなので無視.これらのスクリプトに現れる SQL,PostgreSQL で実行できる形式に見えないんだけれど,どこかで変換かませてあるのかなぁ.ちょっと不思議ですが,きちんとアップグレードされるようなので良しとします.

    5. その他のファイルのコピー

      /extlib , /lib などなどを上書きコピーします.ぼくは目的別に幾つかのディレクトリに分けているため多少手順が複雑ですが,普通の構成であれば単純なコピーでいけるはずです.

    移行は完了したのですが,案の定幾つかの問題が発生しました. まだ PostgreSQL での recently_commented_on は直ってないんだね. いい加減なんとかしてほしいところです. 以下が今回行った修正になります.

    • PostgreSQL での recently_commented_on

      MT-3.121-full-ja-recently_commented_on.patch

      PostgreSQL で MT を使っている方は気付くんじゃないかと思うのだけれど,最新のコメントが取れない問題を修正するパッチです.かなり泥臭いコードで SQL の実行効率が悪いけれど,MT のお作法とスキーマ設計のせいでイマイチ良い解決法が見つかっていません.

    • コメントのハイパーリンク

      MT-3.121-full-ja-hyperlink.patch

      コメントに "http" からはじまる文字列があると自動的に <a> で囲んでくれますが,これをそのままにすると横幅が大変なことになります.これを "<LINK> で決め打ちにすることで解消するパッチです.

    • <input type="image"> 対応

      MT-3.121-full-ja-image_button.patch

      コメントの投稿ページを type="submit" ではなく type="image" にした場合でも動作するようにするパッチです.

    [ permalink ] [ 0 comment(s) ]
  • 000459
    PostgreSQL 移行手順
    miz 2004-12-30 13:45
    このエントリーを含むはてなブックマーク はてなブックマーク - PostgreSQL 移行手順

    PostgreSQL 7.3.4 から PostgreSQL 7.4.6 にデータを移行しました.

    結論を述べますと,バックアップ / リストア の手順そのままですんなりいきます.

    • PostgreSQL 7.4.6 文書 - 第 22章バックアップとリストア
    • pg_dumpall

    今回ちょっと気になったのがバージョンが変わる点だったのだけれど,まったく問題なく以下の手順でいけました.

    この手順ではラージオブジェクトの移行は行えません.
    pg=# \dl
    として何か結果が返る場合は別の手順をご検討ください.
    1. データ抽出

      7.3.4 付属の pg_dumpall を用いて全データを抽出します.

      $ pg_dumpall > pg_dump.dat

      途中,データベースごとにパスワードを訊き直されました.

    2. データの書き戻し

      7.4.6 を立ち上げてのち,以下の手順です.

      $ pg_sql -f pg_dump.dat template1

      これは,新規データベースクラスタを作成 (initdb) した直後に行うのがシンプルで良さそうです.データベースサーバが起動している必要がある点にご注意.

    [ permalink ] [ 0 comment(s) ]
  • 000458
    PostgreSQL 7.4.6 セットアップ
    miz 2004-12-30 05:33
    このエントリーを含むはてなブックマーク はてなブックマーク - PostgreSQL 7.4.6 セットアップ

    サーバーの OS 入れ替えに伴い,PostgreSQL もバージョンをあげました.

    • PostgreSQL
    • 日本 PostgreSQL ユーザ会

    本当は 8 も試してみたかったのだけれど,今は妙なところで引っかかる事態はできるだけ避けたいので7系最新の 7.4.6 で我慢.

    • PostgreSQL 7.4.6 文書 - 第 14章 インストール手順

    このあたりを参考に作業を行いました.

    1. ユーザーの追加

      PostgreSQL 用のユーザーを作成します.

      # adduser postgresql
    2. ソースの入手

      適当なミラーサイトから postgresql-7.4.6.tar.gz をダウンロードします.

      $ wget http://.../postgresql-7.4.6.tar.gz
    3. ソースの展開

      適当なディレクトリでソースを展開します.

      $ cd /tmp
      $ tar zxvf ~/postgresql-7.4.6.tar.gz
    4. configure の実行

      configure を実行します.インストール先と,スレッド関連のオプションを指定しました.

      $ ./configure \
      > --prefix=/home/pg/7.4.6 \
      > --enable-thread-safety
    5. コンパイルとテスト

      コンパイルには gmake を使います.make ではダメだそうです.

      $ gmake

      インストールが終わったら念の為回帰テストを実施しましょう.

      $ gmake check

      以下のメッセージが出れば O.K. です.

      ======================
       All 93 tests passed.
      ======================
    6. インストール

      ヘッダファイルも含めてインストールします.

      $ gmake install-strip
      $ gmake install-all-headers

    以上でインストールは完了です. 続いてインストール直後の設定を幾つか行います.

    1. データベースクラスタの初期化

      データベースが管理するデータを格納するファイル群を作成します.ここでいう「クラスタ」はサーバを束ねる所謂「クラスタリング」とは別物で,後に作成するデータベースを複数格納するためこの名がついていると思われます.この際デフォルトで,実行したユーザと同名のデータベースユーザが作成されます.

      $ mkdir ~/pgdata
      $ initdb -D ~/pgdata
    2. 追記
      7.4.8 を入れてみたところ,ここで
      $ createdb userName
      としてデータベースを作成する必要がありました.
    3. データベース・サーバの起動

      先ほど作成したデータベースクラスタを指定してデータベース・サーバを起動します.

      $ pg_ctl -D ~/pgdata start
    4. データベースユーザの作成

      デフォルトのデータベースユーザは権限が強すぎるので,作業用のデータベースユーザを作成します.

      $ psql -U postgresql
      postgresql=# create user userName 
      postgresql-# with password 'password';
      
    5. データベースの作成

      データベースを作成します.所有者,エンコーディングを指定することができます.

      postgresql=# create database dbName
      postgresql-# with owner=userName
      postgresql-# encoding 'Unicode';
      
    [ permalink ] [ 0 comment(s) ]
  • 20041227 000457
    probe_partition_for_geom() faild
    miz 2004-12-27 01:38
    このエントリーを含むはてなブックマーク はてなブックマーク - probe_partition_for_geom() faild
    本エントリに現れる手順はパーティションテーブルに変更を加えるものがあります. 最悪の場合データを失う恐れがないとはいえないので,必要なデータはバックアップを取るなど十分にご注意ください. 一応,ぼくの場合は問題は発生しませんでしたが.

    今回の Fedora Core 3 のインストールは,既存のディスクの空きパーティションを使用しました. インストール前のパーティションの状況は以下でした.

    /dev/hde1 /boot
    /dev/hde2 swap
    /dev/hde3 拡張
    /dev/hde5 /
    /dev/hde6 空き
    /dev/hde7 /u01 (雑多なデータ)

    この空いている hde6 に Fedora Core 3 をインストールしようとしました.

    前回述べたようにフロッピーディスクから grub 経由でインストーラーを起動したのですが,以下のようなエラーが発生します.

    Assertion (serectors<=xx) at disk_dos.c:xxx
    in function probe_partition_for_geom () faild.

    Google で検索してみたところ,幾つかそれらしきものがヒット.

    • FC3のインストールが止まります - Fedora JP BBS
    • BUG: Anaconda probe of partitions fails - FedoraForum.org

    原因は Windows パーティションにあるらしいとのこと. 確かに,エラーの発生箇所が "disk_dos.c" となっていますしね. work around は「パーティション切り直す」なのだけれど,今回は既存の環境を残さなければならないのでこの方法は採れません. そこで,以下のようにパーティションタイプの変更で回避できないか試みました.

    # fdisk /dev/hde
    Command (m for help): p
    
    Disk /dev/hde: 255 heads, 63 sectors, 14946 cylinders
    Units = cylinders of 16065 * 512 bytes
    
       Device Boot Start    End    Blocks   Id  System
    /dev/hde1   *      1     33    265041   83  Linux
    /dev/hde2         34    164   1052257+  82  Linux swap
    /dev/hde3        165  14946 118736415    5  Extended
    /dev/hde5        165   1470  10490413+  83  Linux
    /dev/hde6       1471   2776  10490413+  83  Linux
    /dev/hde7       2777  14946  97755493+  83  Linux
    
    Command (m for help): t
    Partition number (1-7): 3
    Hex code (type L to list codes): 85
    
    Command (m for help): w

    「拡張領域」を「Linux 拡張領域」に変更してみたのですが,これでも同じエラーが発生しました.

    他に手はないかと更に調べてみたところ,以下のようなものを発見.

    • Assertion at disk_dos.c:485? when trying to install(update) to Fedora Core 3? - FedoraForum.org
    • Fedora Core 3 Install - Jim O'Halloran's Weblog

    sfdisk というパーティションを切り直すツールを使用して,バッチでパーティションテーブルを書き換える方法です.

    • sfdisk
    # sfdisk -s /dev/hde | sfdisk --no-reread /dev/hde

    前半の "sfdisk -s /dev/dhe" の部分は現在のパーティションのサイズをリストします. 後半の "sfdisk --no-reread /dev/hde" は標準入力から設定を読み込んでパーティションを切り直します. 組み合わせることで,現在のパーティションのサイズ通りにもう一度切り直す(パーティションテーブルを書き直す)操作を行うことになります. 結果として,これでインストーラーが正常に動作するようになりました.

    もし同様の問題が発生した場合は,試してみるのも良いかもしれませんが,at your own risk でよろしくお願いします.最後に sfdisk の manpage より.

    BE EXTREMELY CAREFUL - ONE TYPING MISTAKE AND ALL YOUR DATA IS LOST
    [ permalink ] [ 0 comment(s) ]
  • 20041226 000456
    Fedora Core 3 を HDD からインストールする
    miz 2004-12-26 14:40
    このエントリーを含むはてなブックマーク はてなブックマーク - Fedora Core 3 を HDD からインストールする

    昨晩,とうとう Fedora Core 3 の導入に成功しました.

    世では,カーネルサイズが 1.44 MB を越えているためフロッピーブートで Fedora Core 3 をインストールすることは無理といわれています. となると,ISO イメージを CD-ROM に焼く必要があるのだけれど,他にもこういう方法が紹介されています.

    • FAQ/FC3をHDDからインストールする

    上記ページでは既存の grub を使って HDD 上のインストール用カーネルイメージを叩く方法を紹介していますが,grub が入っていなくても,フロッピーディスクから起動することで Fedora Core 3 をインストールすることができました.

    概要を述べると,grub をフロッピーに入れて,これから HDD 上のインストール用カーネルイメージを叩く,という流れです. たいしたひねりではありませんが,ぼくのようにいまだに lilo を使っている人には役立つ手法です. また,ぼくは試していませんがネットワークインストールも可能な筈なので,CD-ROM ブートもできず,HDD にメディア4枚分も空きがないマシンにインストールする際にも応用できるかと思います.

    参考リンク
    • Fedora Core 3をハードディスクインストールするには
    • GRUB メモ
    前提情報

    今回使用する環境はパーティション /dev/hde1 を /boot 用に切ってあり,ここに起動イメージが置かれています.

    手順
    1. grub 起動ディスクの作成

      フロッピーディスクを一枚用意し,まずはフォーマット.

      # fdformat /dev/fd0
      # mkfs.ext2 /dev/fd0

      続いてgrub のイメージを書き込みます.

      # cd /usr/share/grub/i386-vine
      # dd  if=stage1  of=/dev/fd0  count=1
      # dd  if=stage2  of=/dev/fd0  seek=1

      stage1 , stage2 のパスはお使いのディストリビューションに応じて変更してください.

      # rpm -qa | grep grub
      grub-0.95-3
      $ rpm -ql grub | grep stage

      などとして見つけることも可能です.

    2. インストール用カーネルイメージのコピー

      Fedora の CD イメージに含まれる,以下のファイルを /boot ディレクトリ (/dev/hde1) にコピーします.

      # mkdir /boot/install
      # cd $_
      # mount -o loop -o ro FC3-i386-disc1.iso /mnt/cdrom
      # cp /mnt/cdrom/isolinux/vmlinuz .
      # cp /mnt/cdrom/isolinux/initrd.img .
    3. 起動

      作成した grub 起動ディスクを使用してマシンを起動します.grub のプロンプトが出た時点で以下のように入力してインストール用カーネルイメージから起動します.

      grub> root (hd0,0)
      grub> kernel /install/vmlinuz ramdisk_size=8192
      grub> initrd /install/initrd.img
      grub> boot

      "root" の引数は,BIOS が認識したディスクを順に 0 , 1 , ... と番号を振るのでたとえ /dev/hde でも hd0 (一番最初)となります.二つめの "0" はパーティション番号 (0 origin) です.fdisk のパーティション番号より一つ小さいのでご注意を.

      "kernel" , "initrd" の引数にファイル名を渡す際は,"root" で指定したパーティションがルートディレクトリになっている点にご注意ください.

      ちなみに,このプロンプトは tab による補完が効きます.

    以上の手順で FC3 のインストーラが起動するはずです. 途中,インストール方法を聞かれるのでネットワークなり,ハードドライブなりを選択してください.

    今回は CD-ROM なしでもなんとかいけたけれど,やはり今後 FDD 等々の所謂レガシーは置き去りにされるんでしょうかね・・・. 少々寂しいし,何より不便ですな.

    [ permalink ] [ 0 comment(s) ]
  • 20041225 000455
    NV III を導入しました
    miz 2004-12-25 17:00
    このエントリーを含むはてなブックマーク はてなブックマーク - NV III を導入しました

    先日の夜中に急に思い立って,フレッツ ADSL モア III の申込みを行いました.

    • フレッツ ADSL

    下り最大 47Mbps もさることながら,上り最大 5Mbps もかなり魅力. 自宅サーバーにファイルをアップしておいて,出先でダウンロードすることも多いし,他にも色々サービスを提供している関係上,下りだけではなく上り速度も結構重要です.

    今まで利用していたのが フレッツ ADSL 8M タイプなので,レンタルモデムは ADSL モデム - MN というものなのですが,これは 47Mbps に対応していません(対応規格が ITU-T G.992.1 Annex C,ITU-T G.992.2 Annex C). そこで新たに送られてきてのがこのモデムです.

    • ADSL モデム - NV III

    これはなかなか多機能で,速度アップだけではなく次のようなことも行えます.

    • IP 電話
    • ルーター (w/t NAT , NAPT)
    • 仮想 DMZ の構築
    • 他多数

    最近の ADSL モデムはすごいねぇ. 使っているプロバイダも丁度 IP 電話が無料なので,使ってみようかなぁ,と思っていました.

    しかし,IP 電話ということは ADSL モデムが 第3層 aware なわけですよ. つまりはルーター + NAPT にしなければならない. それをやってしまうと,今までのネットワーク構成ががらりと変わるのでただいま躊躇しております. ひとまず,今のところはブリッジモードを使って2層で Linux サーバーと接続し,そこでルーター,NAPT ,Firewall を実現しています. まぁ,今まで通り.

    でもなぁ.IP 電話って周りに使っている人がいないから特にメリット感じないしなぁ. モデムにルーターやってもらう必要もないし,別に今のままでもいいか.

    このモデムのドキュメントはオンラインで提供されていますが,見つけにくい場所にあります. 「バージョンアップ情報」というリンクを辿ったページの一番下にあります.
    • 詳細取扱説明書
    [ permalink ] [ 0 comment(s) ]
  • 000454
    qmail のセットアップ
    miz 2004-12-25 02:14
    このエントリーを含むはてなブックマーク はてなブックマーク - qmail のセットアップ

    本番運用サーバーを停止している間も,メールサーバーだけは止めたくありません. というわけで,VAIO 505R に qmail をセットアップしました. 本番運用サーバーでは以前に色々と追加の設定を行いましたが,今回はいたってシンプルに以下のオーソドックス三点セットの導入となります.

    • qmail
    • tcpserver
    • checkpassword

    何ゆえ三つも必要なのかと申しますと,qmail はメールを送受信,配信する機能だけを担うシンプルなプログラムで,単体では認証の仕組みなどを持たないためです. qmail は他のツールと組み合わせることで,例えばセキュリティを高めたり,例えば OS ユーザー以外の仮想ユーザーを扱える仕組みを追加したりなど,様々な拡張が可能となります. 今回はそれらの中から,最低限必要と思われる POP3 のユーザー認証,SMTP の不正中継防止機能を追加したいと思います.

    導入手順にはいる前に,qmail と組み合わせて使われるツールに良くある特長を述べておきます. 後ほど起動スクリプトを作成する際に,スクリプトの内容を理解する助けになるかと思います.今回の tcpserver , checkpassword もそうなのですが,実行ファイルへのパスを引数にとるものが多くみられます. これらは,そのツールの中で何らかの処理を行い,何らかの条件に従って環境変数を設定,変更したのちに,引数として与えられたプログラムを exec する,という動きをします. exec ですので,プロセス自体が取って代わられます. 今回を例に挙げると,tcpserver は接続元 IP アドレスに基づいて後続のプログラムの実行を行ったり拒否したり,特定 IP アドレスの場合は環境変数を設定したりします. checkpassword は OS のユーザ認証と同一ロジックでパスワードチェックを行い,正しいパスワードが与えられた場合は後続のプログラムを実行します.
    これらのツール群を使用した起動スクリプトを理解する際は,どれがコマンドで,何処までがそのコマンドが処理する引数で,何処からが次のコマンドなのか,という点に注目する必要があります. パイプがあるわけでも,";" で区切るでもなくコマンドがずらずらと並ぶので,慣れるまでは読みにくいと思うのでご注意ください.

    それでは,以下 qmail の設定手順です. インストールを行うにあたって,次のサイトを参考にしました.

    • qmail
    • MioCity : qmail
    1. ユーザーの作成

      qmail では,メール送受信,配信といった機能ごとにプロセスが分かれており,更にそれらの実効ユーザー ID も異なっています.最初に qmail が使用するユーザーとグループを作成します.

      $ su
      Password:
      # mkdir /var/qmail
      # groupadd nofiles
      # useradd -g nofiles -d /var/qmail/alias \
      > -s /bin/false alias
      # useradd -g nofiles -d /var/qmail -s /bin/false qmaild
      # useradd -g nofiles -d /var/qmail -s /bin/false qmaill
      # useradd -g nofiles -d /var/qmail -s /bin/false qmailp
      # groupadd qmail
      # useradd -g qmail -d /var/qmail/ -s /bin/false qmailq
      # useradd -g qmail -d /var/qmail/ -s /bin/false qmailr
      # useradd -g qmail -d /var/qmail/ -s /bin/false qmails
    2. qmail のインストール

      最初に,qmail をインストールします.ソースを解凍した後に,タイムゾーンに関するパッチを適用します.

      • qmail-date-localtime.patch

      glibc 2.3.1 以降の場合は以下のパッチも必要となります.

      • qmail-1.03.errno.patch
      • qmail-1.03.qmail_local.patch
      $ tar zxvf qmail-1.03.tar.gz
      $ cd qmail-1.03
      $ patch -p1 < ../qmail-date-localtime.patch
      $ patch -p1 < ../qmail-1.03.errno.patch
      $ patch -p1 < ../qmail-1.03.qmail_local.patch
      $ su
      Password:
      # make setup
      # make check
    3. tcpserver のインストール

      glibc 2.3.1 以降の場合は以下のパッチが必要となります.

      • ucspi-tcp-0.88.a_record.patch
      • ucspi-tcp-0.88.errno.patch
      • ucspi-tcp-0.88.nobase.patch
      $ tar zxvf ucspi-tcp-0.88.tar.gz
      $ cd ucspi-tcp-0.88
      $ patch -p1 < ../ucspi-tcp-0.88.errno.patch
      $ patch -p1 < ../ucspi-tcp-0.88.a_record.patch
      $ patch -p1 < ../ucspi-tcp-0.88.nobase.patch
      $ su
      Password:
      # make setup
      # make check
    4. checkpassword のインストール

      glibc 2.3.1 以降の場合は以下のパッチが必要となります.

      • checkpassword-0.90.errno.patch
      $ tar zxvf checkpassword-0.90.tar.gz
      $ cd checkpassword-0.90
      $ patch -p1 < ../checkpassword-0.90.errno.patch
      $ su
      Password:
      # make
      # make setup
      # make check
    5. SMTP サーバーとしての設定

      最初に SMTP サーバーとしての設定を行います. 不正中継を防止するために,以下の挙動が必要となります.

      • 中継を許可されていないホストからの接続の場合
        • 自ドメイン宛であれば受信して配信
        • 他ドメイン宛であれば破棄
      • 中継を許可されているホストからの接続の場合
        • 中継して送信

      以上の挙動を実現するためには,中継を許可されている/いないを判断する必要があることはお判り頂けるかと思いますが,そのために使用するのが tcpserver です. tcpserver で IP アドレスをチェックし,中継を許可されているホストからの接続の場合は環境変数「RELAYCLIENT」を設定した後に qmail-smtpd に exec します. qmail-smtpd は環境変数をチェックし,その有無で中継の挙動を制御します.

      最初に設定ファイルを作成します.192.168.100.0/24 からの接続は中継を許可(RERAYCLIENT を設定)し,それ以外も接続は許可します. 接続を許可するのは,中継不許可の接続であっても自ドメイン宛の場合が考えられるためです. 自ドメインか否かの判断は qmail-smtpd が行います.

      /etc/tcprules/smtp.rules
      192.168.100.:allow,RELAYCLIENT=""
      :allow

      次に設定ファイルを tcpserver が使用する形式に変換します.

      # cd /etc/tcprules
      # /usr/bin/tcprules smtp.cdb smtp.tmp < smtp.rules

      続いて幾つかの設定ファイルを作成します.

      • /var/qmail/control/me
        mizb.net
      • /var/qmail/control/defaultdomain
        mizb.net
      • /var/qmail/control/locals
        localhost
        mizba.net
      • /var/qmail/control/plusdomain
        mizba.net
      • /var/qmail/control/rcpthosts
        localhost
        mizba.net
    6. POP3 サーバーとしての設定

      SMTP ときたら,次は POP サーバとしての設定なのですが,実は特にやることがありません.仮想ドメイン,仮想ユーザーなどを使用する場合は色々と手順が必要となるのですが,今回は実ドメイン,実ユーザーのみなので tcprules の設定のみを行います.

      /etc/tcprules/pop3.rules
      192.168.100.:allow
      :deny
      # cd /etc/tcprules
      # /usr/bin/tcprules pop3.cdb pop3.tmp < pop3.rules
    7. ローカル配信の設定

      qmail は mbox 形式ではなく Maildir 形式を使用します.

      $ cd ~
      $ /var/qmai/bin/maildirmake Maildir
      $ echo "./Maildir/" > .qmail

      当該ドメイン宛のメールをすべて特定のアカウントで受け取りたい場合は以下のように設定します.

      # echo "all@your-domain" > ~alias/.qmail-default
    8. 起動

      以下のように起動スクリプトを準備します.tcprules はデフォルトで auth にリクエストを投げるのですが,それを止めるために -HR をいうオプションを渡しています.

      • The tcpserver program
      #!/bin/sh
      
      exec env - PATH="/var/qmail/bin:$PATH" \
      qmail-start ./Maildir splogger qmail 2 &
      
      #Starting smtpd/tcpserver
      echo "Starting smtpd/tcpserver..."
      /usr/local/bin/tcpserver -HR \
      -x /etc/tcprules/smtp.cdb \
      -u qmaild -g nofiles \
      0 smtp \
      /var/qmail/bin/qmail-smtpd \
      2>&1 | /var/qmail/bin/splogger smtpd 2 &
      
      # Starting pop3d/tcpsrver
      echo "Starting pop3d/tcpserver..."
      /usr/local/bin/tcpserver -HR \
      -x /etc/tcprules/pop3.cdb \
      0 pop3 \
      /var/qmail/bin/qmail-popup mizba.net \
      /bin/checkpassword \
      /var/qmail/bin/qmail-pop3d Maildir \
      2>&1 | /var/qmail/bin/splogger pop3d 2 &

    以上で設定完了です. qmail は非常に堅いアプリケーションで,長い間セキュリティーホールは一つも発見されていませんでした. ただ,現在のところ唯一このようなものがあります. ご注意ください.

    • qmailにバッファオーバーフローの脆弱性
    TIPS - パッチの当て方

    パッチを当てる際に,いちいちパッチのファイルをローカルに保存する必要はありません.

    $ patch -p1

    として patch を実行した状態で,ターミナル画面にパッチの中身をペースト. 標準入力から patch に流れ込みます. ペーストし終えたら,ctrl + D で終了です.

    [ permalink ] [ 0 comment(s) ]
  • 000453
    かっこいいとは,こういうことさ
    miz 2004-12-25 00:37
    このエントリーを含むはてなブックマーク はてなブックマーク - かっこいいとは,こういうことさ
    紅の豚

    民放では同じくジブリ作品の「天空の城 ラピュタ」を放映していたのですが,何をひねくれたか久し振りに「紅の豚」を見てしまいました.

    この映画は公開当時に映画館で観ました. 1992年公開とのことなので,ぼくは小学5,6年生かな. 正直,あまり面白いとは思いませんでしたねぇ. 主人公が豚だし. でも豚のくせに三枚目ではなくに二枚目キャラだし. 小学生にとって「豚は笑えるキーワード」というのは暗黙の了解のはずなのに,それを裏切られてなんとも不完全燃焼なわけです.

    その後も何度かテレビで放映されたものを見たのですが,やはりあまり面白くは感じず.

    で,今回7年ぶりくらいであらためてこの映画を見たのだけれど,初めて良いと思えました. 自分もある程度年を経て,映画中のオトナな会話から,直接は描かれていなかったり,断片的に現れる話の背景がなんとなく判るようになってきました. 昔つるんでいた仲間,戦争,戦争に対する嫌気から人間であることをやめた主人公,ジーナとの関係.

    ストーリーもさることながら,細部のセリフがなんともかっこいい.豚なのに. 逆に,人間だったらキザすぎて笑ってしまうかもしれません. 見た目ブサイクな豚というのが,何とも絶妙なトリックです.

    「飛ばない豚は,ただの豚だ」

    「人間も棄てたもんじゃねぇって,そう思えてくるぜ」

    「ジーナをどうする気だ!俺が代わりに行く!」

    「あなた,もう一人女の子を不幸にする気なの?」(主人公のセリフじゃないけれど)

    この映画,アニメとはいえ小学生が観るものではないのかもしれません. オトナになってこそ,良さのわかる作品ですな.

    [ permalink ] [ 0 comment(s) ]
  • 20041224 000452
    UTF-8 対応 TeraTerm
    miz 2004-12-24 23:14
    このエントリーを含むはてなブックマーク はてなブックマーク - UTF-8 対応 TeraTerm

    FedoraCore 1 のデフォルトエンコーディングは UTF-8 です. 世の趨勢から考えても,これはかなりありがたいことだとは思うのですが,ぼくがいつも使っている TeraTerm は UTF-8 に対応していませんでした. 今後 FedoraCore 3 をメインで使用していくつもりのぼくにとっては,何とも厳しい状況です. しかし,見つけました.

    • UTF-8対応TeraTerm Pro
    • プロジェクト: SSH2対応TTSSH - SourceForge.jp

    UTF-8 対応のみならず,SSH2 にまで対応しているそうです(ポートフォワードは使えないようですが). さっそく乗り換えてみたところ,まだ多少不安定な動きをする場面も見られます. ChangeLog を見ると,今まさに開発がすすめられているさなかのようなので,今後のバージョンアップの動きに注目してゆきたいと思います.

    [ permalink ] [ 4 comment(s) ]
  • 000451
    Namazu for Win32
    miz 2004-12-24 02:16
    このエントリーを含むはてなブックマーク はてなブックマーク - Namazu for Win32

    過去のメールを引っ張り出すときには,今までぼくは電信八号の検索機能を使っていました. これはヘッダ部分とボディ部分を分けて検索したり,正規表現が使えたりとなかなか多機能です. しかし,以下のような欠点も.

    • リアルタイムにメールを走査するので遅い
    • 複数フォルダを横断する検索が弱い
    • 添付ファイルの中身は対象外

    そこで,メール検索に Namazu を導入してみました. 電信八号は 1-mail 1-file で保存してくれるので Namazu との相性も良いはずです.

    • 全文検索システム Namazu for Win32

    セットアップ後に調べてみたところ,現在のところ添付ファイルの中身は Namazu でも検索対象外でした. 最新のソース (namazu/filter/mailnews.pl v.1.36) には添付ファイル対応と思しきロジックが追加されていますので,将来のバージョンでは恐らく添付ファイルも検索対象となるでしょう.

    • v1.27.4.2 と v 1.36 のdiff

    使用したのは 2004-12-24 時点で最新の Namazu 2.0.14 for Win32 です. β版だけれどまぁいいさ. 他にも幾つか Namazu を動かすために必要となるものがあります.

    まず Perl. Namazu のインデクシングは Perl で書かれています. 今回は Windows にインストールするので Active Perl を使用します.

    続いて KAKASI. これは日本語を分割(分かち書き)するツールで,検索対象の文章を細かく区切ってインデックス作成に用います.

    • ActivePerl - ActiveState
    • KAKASI

    ActivePerl は 5.8.6.811,KAKASI は 2.3.4 をそれぞれ使用しました.

    1. KAKASI のインストール

      kakasi-2.3.4.zip をダウンロード,解凍し,適当な場所に移動します.ぼくは c:\cygwin\usr\local\kakasi-2.3.4 に置きました.

    2. ActivePerl のインストール

      ダウンロードしたインストーラを実行します.特に何も考えず,フルインストールしてみました.

    3. Namazu のインストール

      Namazu のインストーラを実行します.途中いろいろと設定項目がありますが,KAKASI の場所さえきちんと指定すれば他はデフォルトでいけます.

    4. インデックスの作成

      インデックスの保存先ディレクトリと検索対象のファイルを指定して mknmz.bat を実行します.

      > mknmz.bat -O c:\namazu\...\index c:\Maildir
    5. 検索の実行

      作成したインデックスを指定して検索を行います.

      > namazu "単語" c:\namazu\...\index

    以上で検索は行えるのですが,いちいちコマンドプロンプトから検索を行うのはさすがにちょっとありえないので,GUI を備えたクライアントを導入しました.

    • search-s for Namazu

    インデックスの作成も GUI で行えます.

    [ permalink ] [ 0 comment(s) ]
  • 000450
    日本測地系,世界測地系
    miz 2004-12-24 00:45
    このエントリーを含むはてなブックマーク はてなブックマーク - 日本測地系,世界測地系

    先日,お仕事の中で測地系に絡む話が出ました. 「測地系とは緯度経度の決定方法」くらいの認識はもっていたのですが,あまり正確には理解できていなかったので調べてみました.

    • 測地系 - WIkipedia

    なるほど.

    • 地球のモデルである準拠楕円体
    • 緯度経度の基準となる測地座標系
    • 標高の基準となるジオイド面

    測地系とはこの三要素からなるそうです. では,日本測地系と世界測地系の違いは何?

    • 世界測地系移行の概要 - 国土地理院

    準拠楕円体と測地座標系が異なるようです.

    上記の国土地理院のページによると,日本測地系は100年も前の測量結果に基づいて決定されていたんですね. 絶対的な基準となる一点(経緯度原点)を決め,そこからの相対位置で他の点(基準点)の位置を求めて,日本全国を三角メッシュで覆いました. その三角形の辺の長さですが,当時は長さの基準になる尺を使って測定していたそうです. 恐らく,30cm 定規で 1m を測るときのあのイメージでしょうね. 当てて,端に鉛筆で印をつけて,ずらして,また印をつけて・・・. 明治時代の人,頑張った. 頑張ったのですが,やはり測定誤差はあるようです. そこで,測定精度や準拠楕円体の精度に優れた世界測地系に移行することになったようです.

    ここで「三角メッシュ」が引っかかりました. これって三角点のことでは?

    • 経緯度原点 - 日本のおヘソ
    • 三角点の探訪

    やはり. 測地系の三要素の一つ「測地座標系」とは三角点からなるんですね. ということは,全国の三角点は世界測地系に移行し終えたら用済みかと心配になったのですが,三角点自体はそのまま残して,対応する緯度経度が改訂されるだけのようです.

    測地系という言葉を GIS の文脈でしか聞いた事がなかったのですが,案外アナログで歴史あるものだったのですね.

    [ permalink ] [ 0 comment(s) ]
  • 20041223 000447
    Fedora その後の各種作業
    miz 2004-12-23 22:57
    このエントリーを含むはてなブックマーク はてなブックマーク - Fedora その後の各種作業

    諸事情で作業のペースをあげます. 細かな記録は整形せずにテキスト化します. 精度は,一月以内ならば自分がそのテキストを見ながら同じ作業を行える程度. このエントリには,その項目と概略のみを記します. 詳細は今後余裕を見てアップ予定.

    最初に,作業の目的から. 本番運用サーバーを Fedora Core 3 に移行するにあたり,そのセットアップ作業中に最低限のサービスを確保するために VAIO 505R を仮サーバーとして運用する準備です.

    • 静的 IP に変更

      現在,本番運用サーバーから DHCP で各種ネットワーク設定を取得していますが,移行作業中は自前でネットワーク設定を行わなければなりません.

      • /etc/sysconfig/network-scripts/ifcfg-eth0
      • /etc/resolv.conf
    • DHCP サーバーとして設定

      移行作業中は VAIO 505R からネットワーク設定を取得します.

      • /etc/dhcpd.conf
    • DNS サーバーとして設定

      移行作業中は VAIO 505R が DNS サーバーとして稼動します.

      • /etc/named.conf
      • /etc/named/*
    • qmail のセットアップ

      移行作業中は一時的に VAIO 505R にメールを貯めます.

    • Apache のセットアップ

      お詫びページを表示しておくために使用します.

    [ permalink ] [ 0 comment(s) ]
  • 000449
    Firefox の設定変更
    miz 2004-12-23 16:16
    このエントリーを含むはてなブックマーク はてなブックマーク - Firefox の設定変更

    Firefox の設定ダイアログは,よく言えばシンプル,悪く言えば貧弱です. 判り易くて良いのですが,さすがにこれだけでは少々物足りない部分もあります.

    そういう場合のために,もちろん細かな設定を行う方法も用意されています. 以下二つほどご紹介.

    about:config
    • about:config (Mozilla , Firefox のみ.IE お断り)

    Firefox の様々な設定値を表示,変更することができます. とはいえ,いじるとまずい項目も恐らくあると思うのでご注意ください. また,Mozilla 時代からそのまま引き継がれてはいるものの,既に意味をなさない項目もあります. 設定した内容は prefs.js" というファイルに保存されます.

    設定ファイル
    • 便利な使い方
    • 設定ファイルの編集

    Firefox の設定ファイルを直接編集する方法です. とはいえ,ユーザ設定は別ファイルに分けられているのでその点は安心です. 単純に設定値を変えられるだけではなく,見栄えを CSS で指定したり,動作を JavaScript で制御したり,かなりのことが行えます. 設定ファイルの変更には ChromEdit という Extension が便利です.

    [ permalink ] [ 0 comment(s) ]
  • 000448
    Firefox 1.0 導入しました
    miz 2004-12-23 15:24
    このエントリーを含むはてなブックマーク はてなブックマーク - Firefox 1.0 導入しました

    遅れ馳せながら,Firefox 1.0 を導入しました.

    • Firefox - Rediscover the web

    素の Firefox だけでは色々と足りなく感じる機能も多いので,そういった部分は Extension で補完します. 画面右側の「Resources and Links > Get Extensions and Themes」から辿れる以下のページで Extension を一覧できます.(他にも非公式なものも多数あるので検索してみてください).

    • Mozilla Update

    ぼくがセットアップした Extension は以下の通りです.

    操作性関連
    • Mouse Gesture

      マウスの動き(ジェスチャ)で Firefox を操作します.一度慣れると手放せません.

    • Tabbrowser Extensions

      非公式 Extension です.Firefox 開発チームとしては非公式どころか「非推奨」とのことで,使わないことを強くすすめています.ご注意.ただ,かなり便利なのでぼくは構わず使いますけどね.

    • IE View

      閲覧中のページを InternetExploerer で開き直すことができます.世にまだ多い IE 専用を謳う怠惰なサイト対策.

    • Auto Copy

      Firefox 上で選択した文字列が自動的にクリップボードにコピーされます.TeraTerm でよくやる操作なのであると便利.

    開発関連
    • JavaScript Debugger

      JavaScript 用のデバッガです.今までの JavaScript 開発の状況と較べると,開発生産性を半端じゃなく向上させられるツールです.素晴らしい.

    • Web Developer

      Web アプリ関連には欠かせない Extension.HTML のデザイン周りから,Session Cookie のハンドリングなどページ間のロジックに関わる部分まで面倒を見る多機能ツールです.

    • Live HTTP Headers

      FIrefox がやりとりしている HTTP の request/response header を表示するツールです.このツールの良い点は HTTPS でもきちんとヘッダを取得できる点.これは Ethereal には真似できません.

    Firefox 設定関連
    • ChromEdit

      詳細は後ほど別エントリで書こうと思っていますが,通常の設定以外のカスタマイズを行う際にいじるべきファイルを編集するためのツールです.

    Bookmark 関連
    • SyncMarks

      Bookmarks を複数マシンで共有するためのツールです.Sidebar の独自カスタマイズができなかったので,今後は Bookmark を使っていこうと考えています.

    [ permalink ] [ 0 comment(s) ]
  • 20041219 000446
    カラオケ店と危機管理
    miz 2004-12-19 23:35
    このエントリーを含むはてなブックマーク はてなブックマーク - カラオケ店と危機管理

    昨晩,忘年会で新宿歌舞伎町のカラオケ店(店名失念)に行き,何とも考えさせられる出来事に遭遇しました.

    朝 4:00 くらいに,みんな疲れて歌う気力を失い話し込んでいたところ,突然警報が鳴り響きました. 鳴り響いたといっても,何とも頼りない電子音で「ピコンピコン」ってな具合. そして「火災が発生しました.落ち着いて避難してください」と続いたので部屋内一気に騒然. ぼくの脳裏をよぎったのは「新宿歌舞伎町雑居ビル火災○○人死亡」の見出しと,中学時代によくあった警報機を鳴らすいたずらです.

    周りも同じような感じだったらしく「いたずらかもしれないけれど,本当だったら危ないからひとまず避難しよう」となり避難開始.その間数秒. 普段酔っ払うと大騒ぎばかりしているメンバーなんだけれど,意思決定の速さと落ち着き振りはやはりさすがオトナです.

    避難を開始すると他の部屋の人たちもぞろぞろと出てきて階段へ向かっている様子です. しかし,気付いているのかいないのか,普通に歌いつづけている部屋もあります. 声をかけようか否かを一瞬迷ったのだけれど,我が身かわいさでひとまず避難しました.

    で,一階のフロントまで降りるとフロントのおっさんが呑気にも
    「お帰りですか~?ありがとうございます」
    いや,それどころじゃないから!
    警報が鳴っている旨を伝えても
    「一階で警報が鳴っていないので大丈夫です.火事ではありません.」
    「火事だったら全館に警報が鳴ります.」
    いや,だからぼくらのフロアでは警報が鳴っていたんだってば・・・. 重ねてその旨を伝えても,そして他に避難してきた客が同じことを言っても,やはり状況を確認する気はないようでぼくらを説得するのに必死です. どうやらぼくらが金を払わずに帰ることを心配している風です.

    そうこうしているうちに徐々に他の部屋でも警報に気付いたのか,フロントの電話がじゃんじゃん鳴り始めました. そしておっさん慌てて電話に出て曰く
    「大丈夫です.火災ではありませんから!」
    根拠は何だよ!根拠は!!

    しばらくして,様子を見に行っていたらしき店員が階段を降りてきて.
    「ブレーカーが落ちたので警報機が鳴ったようです」
    ・・・関連性がよくわからん・・・.

    一応,火災はなく誤報だったようなので良かったのですが,最悪の事態を想像すると結構ぞっとします.

    設備の問題点

    • 歌っていると気付かない可能性もあるくらい警報音の音量が小さい
    • 警報が各階連動していない?
    • ブレーカーが落ちると警報器が作動するというスペック

    店員の問題点

    • 根拠のない対応
    • 安全な側へ対応するという意識の欠如
    • システムへの過信

    客の問題点

    • 警報に気付いたのなら逃げる.電話で問い合わせない.

    今の時期,忘年会シーズン真っ盛りなのでカラオケに行く機会もあると思います. 全部のお店が危機管理ができていないわけではないと思いますが,中にはこういうお店もあります. くれぐれも,自分たちでできる範囲は気を付けましょう. ぼくも今後,非常口の確認くらいは心がけようかと本気で思っています.

    [ permalink ] [ 0 comment(s) ]
  • 20041218 000445
    iptables -m limit のアルゴリズム
    miz 2004-12-18 13:30
    このエントリーを含むはてなブックマーク はてなブックマーク - iptables -m limit のアルゴリズム

    iptables の設定を行っていて,limit モジュールに与えるオプションの意味がわからなくなってきたので Linux Kernel のソースを読んでみました.

    以下のドキュメントにも limit モジュールの詳細が載っています.

    • Linux 2.4 Packet Filtering HOWTO 7.3 フィルタリングの仕様

    まず,limit モジュールに与えるオプションがコード内で持つ意味を示します.

    include/linux/netfilter_ipv4/ipt_limit.h
    --limit平均パケット到着間隔.要するに --limit の逆数.--limit は内部で逆数として扱われる.
    --limit-burst瞬間最大パケット数

    チェーンにルールを追加する際の初期化は次のように行われます.

    net/ipv4/netfilter/ipt_limit.c
    持ち点 = 平均パケット到着間隔 * 瞬間最大パケット数
    持ち点の上限 = 平均パケット到着間隔 * 瞬間最大パケット数
    減点幅 = 平均パケット到着間隔

    パケットが到着するごとに以下の計算が行われます.

    net/ipv4/netfilter/ipt_limit.c
    持ち点 += 前回のパケット到着からの経過時間
    if ( 持ち点 > 持ち点の上限 ) 持ち点 = 持ち点の上限
    if ( 持ち点 >= 減点幅 ) {
      持ち点 -= 減点幅
      パケット許可
    }
    パケット拒否

    これを,平均パケット到着間隔で正規化するとロジックがわかりやすくなります.

    持ち点 = 瞬間最大パケット数
    持ち点の上限 = 瞬間最大パケット数
              前回のパケット到着からの経過時間
    持ち点 += -------------------------------
                    平均パケット到着間隔
    if ( 持ち点 > 持ち点の上限 ) 持ち点 = 持ち点の上限
    if ( 持ち点 >= 1 ) {
      持ち点 -= 1
      パケット許可
    }
    パケット拒否

    パケット到着ごとに一点減点され,時間の経過とともに徐々に点数が回復していく,という挙動です. 減点されて持ち点が一点を下回ると,一点以上に回復するまではパケットを拒否します. 瞬間最大パケット数 (--limit-burst) は初期持ち点(かつ最大持ち点)を表し,平均パケット到着間隔 (--limit の逆数) は回復するレートを表します.

    実際の Linux Kernel ソースコードでは,これらに underflow 防止のロジックや各種補正計算がくっついているため多少追いにくくなっていますが,基本的な考え方を押さえておけば理解しやすいかと思います.

    以下に,--limit-burst 4 の場合の模式図を示します. 赤掛けの部分がパケットが拒否される期間です. 右肩上がりの線分の傾きは --limit により変化します.

    最後に,このエントリで使用した用語とソースコード内の変数名との対応を載せておきます. ご自身でソースを読み解く際のご参考までに.

    credit持ち点
    credit_cap持ち点の上限
    avg平均パケット到着間隔
    burst瞬間最大パケット数
    cost減点幅
    [ permalink ] [ 0 comment(s) ]
  • 000444
    Fedora Core 1 で Firewall 構築
    miz 2004-12-18 10:44
    このエントリーを含むはてなブックマーク はてなブックマーク - Fedora Core 1 で Firewall 構築

    続いて,Firewall としての設定を行います.

    現在契約しているプロバイダはグローバル IP を一つしかもらえないので,IP Masquerade を使用して複数のクライアントがインターネットにアクセスできるよう設定します. さらに,iptables でパケットフィルタリングの設定を行い,接続可能なホスト,使用可能なサービスを制限します.

    • Linux 2.4 Packet Filtering HOWTO
    • Linux IP Masquerade HOWTO(November 14, 2000.ちょっと古めです.)
    • JM : iptables

    今回は,Linux Box で提供するサービスはローカル向きの SSH だけとします. また,IP Masquerade はローカル --> グローバル のみを許可します.

    この設定を順に実行する過程で,一時的にセキュリティーが低下するステップがあります. 下記を step-by-step で実行する際は十分に注意してください. なるべく,下記設定を理解した上でスクリプト化するなどして,セキュリティーが低下している時間をなくすよう対策を行ってください.
    1. IP packet forwarding の設定

      最初に,複数 NIC 間でのパケットのやりとりを有効に設定します.

      # echo 1 > /proc/sys/net/ipv4/ip_forward

      ただし,上記設定は再起動を行うと元に戻ってしまいます.そこで /etc/sysctl.conf の以下の行を "1" に変更します.

      # Controls IP packet forwarding
      net.ipv4.ip_forward = 1
    2. 幾つかの iptables 以外の設定

      Linux Box をネットワークに接続するにあたって,セキュリティの観点から幾つかの設定項目を変更します.

      # cd /proc/sys/net/ipv4
      # echo 1 > icmp_echo_ignore_broadcasts
      # for i in conf/*/accept_source_route; do
      > echo 0 > $i
      > done
      # for i in conf/*/accept_redirects; do
      > echo 0 > $i
      > done

      それぞれ以下のような設定です.

      • Broadcast の PING (echo request) を拒否します.Broadcast PING はサブネット内のマシンを検出する目的で使われることがあります.
      • IP のソースルートオプションを無視します.ソースルートは IP パケットが経由すべきネットワークノードを明示的に指定するものです.これを使用すると man-in-the-middle 攻撃も可能となる場合があります.
      • IP のリダイレクトオプションを無視します.これは,何だっけな・・・.
    3. SSH のみの提供

      最初に,グローバル向きのインタフェースからのパケットをすべて破棄します.

      # iptables -A INPUT -i ppp0 -j DROP

      続いてローカル向きインタフェースへの SSH (22 番ポート) を許可します.

      # iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
      # iptables -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT

      最後に,上記にマッチしなかった場合の処理を定義します.

      # iptables -P INPUT DROP
      # iptables -P OUTPUT DROP
    4. IP Masquerade の設定

      ppp0 から出てゆくパケットは IP Masquerade の対象とします.

      # iptables -t nat -P POSTROUTING ACCEPT
      # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
      # iptables -t nat -P PREROUTING ACCEPT
    5. 保存

      以上の設定は,再起動すると消えてしまします.設定を保存しておきましょう.

      # /etc/rc.d/init.d/iptables save

    簡単な設定の手順は以上です. 以下,更に詳細なルールを設定するにあたっての参考に.

    • TCP, UDP は大抵の場合 in と out の双方のパケットがあってはじめて意味をなします.どちらか一方のみを許可し,もう一方を拒否している場合は正常な通信が行えません.
    • TCP の 3 way handshake を理解しましょう.--syn で SYN パケットを引っ掛けることができるので,自分がクライアントなのかサーバーなのかで異なるルールを設定することができます.ポートによる振り分けの際にはどちらなのかを意識しましょう.
    [ permalink ] [ 0 comment(s) ]
  • 20041212 000443
    EveryDNS.net で Dynamic DNS
    miz 2004-12-12 22:17
    このエントリーを含むはてなブックマーク はてなブックマーク - EveryDNS.net で Dynamic DNS

    ADSL 接続ができるようになったので,次は Dynamic DNS の設定を行います. Dynamic DNS というのは,固定 IP アドレスを取得できないかわいそうな人たちのために,ホスト名に対応する IP アドレスを動的に変更することができる仕組みです.

    • RFC2136 : Dynamic Updates in the Domain Name System (DNS UPDATE)

    とはいえ,DNS サーバーが勝手にホストの状態を監視して設定を変更してくれるわけではなく,クライアント側から IP アドレスの変更を通知しなければなりません. ぼくは EveryDNS.net というサービスを利用しているので,通知のためのツールとして eDNS.pl というものを使用します.

    • EveryDNS.net
    • eDNS.pl
    1. ダウンロード

      eDNS.pl.txt をダウンロードし,適当な場所に "eDNS.pl" として保存します.

      $ wget http://www.everydns.net/eDNS.pl.txt
      $ mv eDNS.pl.txt eDNS.pl
      $ chmod +x eDNS.pl
    2. パッチの適用

      オリジナルの eDNS.pl は引数として IP アドレスを渡す必要があったり,色々あるので少し改変しました.パッチを以下のロケーションにおいてあります.

      • eDNS.pl.patch
      $ patch < eDNS.pl.patch
    3. 設定

      eDNS.pl に EveryDNS.net のユーザー名,パスワードなどを書き込みます.

    4. 定期実行

      以下のように crontab の設定を行います.実行間隔は適当に調整してください.IP アドレスが変更にならないと変更要求が飛ばないので,間隔を短くしても EveryDNS.net のサーバーに迷惑をかけることはありません.

      $ crontab -e
      */3 * * * * /usr/local/bin/eDNS.pl
    [ permalink ] [ 2 comment(s) ]
  • 000442
    rp-pppoe で ADSL 接続
    miz 2004-12-12 17:43
    このエントリーを含むはてなブックマーク はてなブックマーク - rp-pppoe で ADSL 接続

    ぼくが使っているフレッツ ADSL は,交換局と加入者宅間の通信に PPP over Ethernet (PPPoE) というプロトコルを使用しています.

    • フレッツ公式ホームページ
    • PPP over Ethernet

    今回,Fedora Core 1 がインストールされいるマシンで,ADSL 接続の設定を行います. Fedora Core 1 にはデフォルトの PPPoE クライアントとして rp-pppoe が入っています.

    • Roaring Penguin 社
    • rp-pppoe
    1. 設定ファイルの準備

      /usr/share/doc/rp-pppoe-3.5/configs/pppoe.conf に雛形が用意されていたのでこれを使用します.

      # cd /etc/ppp
      # cp /usr/share/doc/rp-pppoe-3.5/configs/pppoe.conf .

      雛形が上記ロケーションにない場合は以下のように探してみてください.

       # rpm -ql rp-pppoe | grep pppoe.conf
    2. 設定ファイルの編集

      ADSL モデムに接続されている NIC ,接続に使用するユーザー名を設定します.

      # Ethernet card connected to ADSL modem
      ETH=eth0
      ...
      USER=guest@flets
    3. 認証情報の設定

      パスワードをファイルに書き込みます.編集するファイルは以下の二つです.

      • chap-secrets
      • pap-secrets
      "guest@flets"   *       "guest"
      PAP , CHAP というのは認証の方式です. PAP は認証情報が平文で流れますが,CHAP は Challenge Response 方式なので比較的安全です.
    4. 接続 / 切断

      以下のコマンドで接続します.

      # /usr/sbin/adsl-start

      以下のコマンドで接続状態を確認します.

      # /usr/sbin/adsl-status

      以下のコマンドで切断します.

      # /usr/sbin/adsl-stop
    5. 接続スクリプト

      VineLinux には次のようなスクリプトが付属されていました.なかなか便利です.

      • /etc/rc.d/init.d/adsl
    [ permalink ] [ 0 comment(s) ]
  • 20041210 000441
    電信八号 フォルダ階層の並び順
    miz 2004-12-10 01:52
    このエントリーを含むはてなブックマーク はてなブックマーク - 電信八号 フォルダ階層の並び順

    電信八号はメニューの [表示] -> [フォルダ階層] で,メールフォルダの一覧を表示させられます. まぁ,メールフォルダといいましても,電信八号のメールフォルダはファイルシステム上のディレクトリそのものです. 要は「フォルダ階層」はほぼエクスプローラーの表示を思い浮かべていただければ間違いありません.

    この階層のルートとなるフォルダは,設定ファイルの DirTree セクションの RootFolder という設定項目で指定できるのだけれど,これを使うと最上位階層のフォルダの並び順がめちゃめちゃになります. 正確には,作成日時順になります. ソースコードを見てみると,RootFolder を指定せずにドライブが最上位階層に来た場合を想定して,最上位階層はソート処理を行わない方針になっているようです. とはいえ,並び順めちゃめちゃはさすがに使いにくいので,なんとかできるのならばしたほうが良いでしょう.

    対処方法は以下です.

    1. 新規フォルダを適当な位置に作成(メールフォルダと同じドライブに作成するのが良いでしょう)
    2. ルート直下のメールフォルダをすべて新規フォルダに移動します
    3. 新規フォルダからメールフォルダをルートへ戻します

    移動を行うことで作成日時を変えるわけです. 単純な対処方法だけれど,案外何処にも書いていないので明文化しておきます.

    [ permalink ] [ 0 comment(s) ]
  • 000440
    電信八号 V32.1.5.1 一般公開
    miz 2004-12-10 01:29
    このエントリーを含むはてなブックマーク はてなブックマーク - 電信八号 V32.1.5.1 一般公開

    愛用している MUA,電信八号 の新しいバージョンが公開されました.

    • インターネットメーラー電信八号オフィシャルサイト
    • 電信八号のダウンロード
    • Updates.txt

    一番目立つ機能追加は,設定ダイアログでしょうか. 以前に較べてかなり使いやすくなっていますし,ダイアログから設定できる項目が格段に増えました. 今までは,ヘルプや Google 頼りに直接 *.ini をいじっていましたからね. 他にも,フォルダ定義(振り分け設定)の階層化が可能になっているなどの,地味といったら失礼だけれど細かいながら便利な機能追加や,安定度を増すための改良が施されています. 移行の手順も拍子抜けするほど簡単なので,是非お試し下され.

    V32.1.4.3 からの移行手順

    1. Den8_32.1.5.1_All.lzh を入手する
    2. 解凍する
    3. 旧バージョンから DENSHIN8.ini をコピーしてくる
    4. 起動する

    以上で基本はいけるはずです. あとは必要に応じてフォルダ定義ファイルやテンプレートを移動したり,それに併せて設定を変更したりといった感じです. ぼくは電信八号の実行に必要な最低限のファイル群とそれ以外を完全に分けて別ディレクトリで管理しているため,本当に上記の 4 steps で移行完了です. 電信八号のディレクトリには

    • *.exe
    • *.ini
    • *.dll
    • *.manifest
    • Denshin8.chm
    • Pkzip
    • Mainfrm.cpp

    以上のファイルのみを残し,

    • *.cmp (テンプレート)
    • *.def (フォルダ定義)
    • *.sig (署名)

    これらは別ディレクトリでメールと一緒に管理しています. 一度は設定ファイルに絶対パスで指定しなければならないという一手間はあるけれど,補ってあまりある便利さがこの構成にはあると感じています. さらに RootFolder という設定項目の併用もオススメです. 電信八号をお使いの方はお試しくだされ.

    [ permalink ] [ 0 comment(s) ]
  • 20041206 000439
    apache 2.0.52 + php 5.0.2
    miz 2004-12-06 01:32
    このエントリーを含むはてなブックマーク はてなブックマーク - apache 2.0.52 + php 5.0.2

    PHP5 がなかなか面白げなので,麦酒堂を今後 PHP5 化してゆこうかと考えています.

    その第一弾として,既存環境の PHP4 を置き換えようとしたのですが apache が worker thread で構築されていて失敗. 仕方がないので apache を prefork で構築しなおすことにし,ついでに最新バージョンにあげました.

    • Apache 2.0.52 のインストール手順ログ
    • PHP 5.0.2 のインストール手順ログ

    今のところ,これまでの PHP4 系で書かれたスクリプトもきちんと動作しているようです. ただ,Vine の libxml2 が古くて,libxml2 関連の機能が動作しない状態です. これではせっかくの PHP5 の機能が活かせないので,OS から入れ直しを検討中です. それまでは,中途半端ながらこの環境で PHP5 でのプログラミングを試してゆきます.

    [ permalink ] [ 2 comment(s) ]
  • 20041205 000438
    Oracle Database 10g 30日間トライアル版
    miz 2004-12-05 20:24
    このエントリーを含むはてなブックマーク はてなブックマーク - Oracle Database 10g 30日間トライアル版

    ちょいと試してみようと思い,Oracle Database 10g の30日間トライアル版をインストールしました.

    • Oracle Database 10g のインストール手順ログ

    念の為書きますと,これはあくまでもぼくの個人的活動の範囲で行ったインストールの記録です. 参考にする場合がありましたら,どうぞ at your own risk でお願いします.

    [ permalink ] [ 0 comment(s) ]
  • 000437
    飲みました - KIRIN Wite Ale
    miz 2004-12-05 12:38
    このエントリーを含むはてなブックマーク はてなブックマーク - 飲みました - KIRIN Wite Ale

    ちょっと遅れましたが,飲んでみました.

    • White Ale
    • White Ale - ニュースリリース
    • White Ale - 商品概要

    KIRIN のチルドビールの第四弾です. 「香りへのこだわり」という割には香りはそれほどではない印象です. ヴァイツェンを期待していたのだけれど,そういうわけではないようです. ちょっとインパクトが弱めかな. とはいえ,大手がそれなりの規模で流通させるビールとしては,なかなかおいしいと思います.

    [ permalink ] [ 0 comment(s) ]
  • 20041202 000436
    四つめの本生 - アサヒ本生ゴールド
    miz 2004-12-02 00:45
    このエントリーを含むはてなブックマーク はてなブックマーク - 四つめの本生 - アサヒ本生ゴールド

    アサヒの発泡酒「本生」シリーズにもう一品加わるようです.

    • アサヒ本生ゴールド
    • ニュースリリース

    これまで,アクアブルーは糖質オフ,オフタイムは苦味カット. でも今回のゴールドは何かを削るのではなく,きちんと「のみごたえ」を追求するそうです. いいですねぇ. ファインアロマホップも使用.

    でもなぁ,何でこれを発泡酒でやるんだろう・・・. 中途半端なものになるリスクが非常に高いと思うのだけれどな. ともあれ,方向性は共感できるので,期待して待ちます.

    2005年02月23日 発売予定.

    [ permalink ] [ 0 comment(s) ]
<< 前の月
次の月 >>
最近のコメント
  • new Linux box の HDD を 320GB -> 2TB に移行した顛末 : その零 [2]
    last comment : miz : 01/08 23:39
  • new JavaScript で測地系の変換 - Geodetic Datum Transformation [1]
    last comment : shige : 01/06 13:34
  • new 03/02 出張三日目 : Sydney [4]
    last comment : miz : 03/04 21:31
  • new 01/04 出張一日目 : 東京 - Dublin [3]
    last comment : miz : 01/08 15:08
  • new 2009年 冬 青春18きっぷの旅 五日目 [2]
    last comment : miz : 12/15 18:00
  • new 2009年 冬 青春18きっぷの旅 四日目 [2]
    last comment : miz : 12/14 20:13
  • new 祝 パクチー初収穫 [2]
    last comment : miz : 12/03 20:40
  • new Windows Mobile (Advanced W-ZERO3 [es]) から iPhone へ電話帳データを移行 [2]
    last comment : miz : 12/03 20:39
  • new 裁判員制度スタートということで傍聴に行ってきた [2]
    last comment : miz : 10/25 23:41
  • new 時間軸上で発生するイベント同士がとりえる関係についての考察 [2]
    last comment : miz : 08/31 21:04
最近のエントリ
  • 本日のビール - 09/28
  • 本日のビール - 09/26
  • 本日のビール - 09/25
  • 本日のビール - 09/24
  • 本日のビール - 09/18
  • 本日のビール - 09/17
  • 本日のビール - 09/09
  • 本日のビール - 09/07
  • 本日のビール - 09/03
  • 本日のビール - 09/02
  • and more ...
<<2004年12月>>
    1. .
    2. .
    3. .
    4. 01
    5. 02
    6. 03
    7. 04
    1. 05
    2. 06
    3. 07
    4. 08
    5. 09
    6. 10
    7. 11
    1. 12
    2. 13
    3. 14
    4. 15
    5. 16
    6. 17
    7. 18
    1. 19
    2. 20
    3. 21
    4. 22
    5. 23
    6. 24
    7. 25
    1. 26
    2. 27
    3. 28
    4. 29
    5. 30
    6. 31
    7. .

月間ランキング
1.定期代[7122pv]
2.姓名のローマ字表記[1148pv]
3.水曜どうでしょう[1139pv]
4.みなとみらい線[911pv]
5.ロックしてやる!![774pv]
6.DoCoMo もパケット料金定額[758pv]
7.スープカレー[486pv]
8.発泡酒の消費減?[443pv]
9.スーパーブルー - サントリー[396pv]
10.ひさびさに日曜大工[328pv]
このページの被検索語(最新20件)
  • ジオイド面 perl
  • コマンドプロンプト オラクル username password SQL パスワード @ ユーザ バッチ
  • pppoe centos rp-pppoe-gui-3.5
  • bit commet 設定
  • ORACLE IPアドレス変更
  • dovecot 実ユーザ 仮想アカウント
  • ORACLE10g パッチ 適用 時間
  • t
  • FedoraCore php-5.1.6-3.i386.rpmの入れ方
  • php 4.3.11 patchの当て方
  • centos kernel ヘッダファイル 場所
  • t
  • fedoracore rsh
  • Bit Commet
  • Bit Comet 速度
  • テンプレートを移動 docomo
  • ホストのIPアドレスが判断 oracle
  • ISOファイル バッファオーバーフロー fedora core3
  • bit comet 使い方
  • モデムnv-3
(C) Copyright 2003-2011 miz

Some rights reserved.
You can copy the contents in this page (including text and photographs, except program code) and/or redistribute it under the terms of the Creative Commons Attribution-ShareAlike 2.5 License.
(C) Copyright 2003-2011 miz