Mimori's Algorithms Diary

Last Modified : 02/01 17:53
Access :
tds mode : [static,site,cache:on]

2003/01/01 (Wed)

#1 あけましておめでとうございます

新年は吉祥寺にて迎えたのだった。初詣したのも久々かも。

#2 9814歩

2003/01/04 (Sat)

#1 指環の謎 プレイ

やはり面白いゲームだ〜

#2 11305歩

2003/01/05 (Sun)

#1 ゼルダ 風のタクト

ネタバレサイトを見ながらやっても正月中に終わりませんですた。

#2 4753歩

2003/01/06 (Mon)

#1 Bflets トラブル

新年早々 ONU の電源が入らないトラブル発生。別に何をした訳でもないのだが…2回線引いていたので生きている方に両方つないで復旧完了。 このへんは回線とプロバイダが分離していて便利だ。

ただし1回線あたり2セッションのためフレッツスクウェアへの接続が止まっている。せっかく両面接続にしていたのに。

@ 交換に来た

推察通りONUの交換で終了。今週のガンダムは総集編であった。

#2 今風の mkisofs でバックアップ

mkisofs はデフォルトだと指定したディレクトリをCDROMのルートとして扱おうとするので、-graft-points を付けた上でバックアップしたい各ディレクトリを = の両側に記述したものを pathspec として指定する。

mkisofs -v -d -D -N -R -T -V "BACKUP20030102" -o /home/tmp/all.iso \
	-graft-points \
	-x /home/tmp \
	var/qmail/control=/var/qmail/control \
	etc=/etc \
	home=/home \
	usr/local=/usr/local \
	var/local=/var/local \
	BACKUP=/BACKUP

単純なバックアップ目的だったらTRANS.TBLを作る -T はウザいかも。

#3 IBM Deskstar 180GXP

7200回転だが60GB以下のモデルはアイドル時電力が5Wと今までの5400回転モデルと同じぐらいでちょっぴり地球に優しい。

#4 「.org」ドメインが非営利団体PIRの管理下に〜1月25日までに完全移行

mimori.org のVerisignアカウントがどーにも分からない *1 ため困ってたけど、これでまた管理方法が変わるのかな。とりあえず今月は放置だ。しかしNICハンドルとかの扱いってどうなるんじゃろ。


*1:パスワードの郵便が来てたはずなのだが、住所移転により返送された可能性大(汗)

#5 キッチン

大晦日ライブで聴いてよかった *1 のでAmazonで注文してみた。最近Amazonを見に行くとVPN関係の本を勧められまくるのだが、他にこのCDを買った人が出てきたらやっぱりVPN関係の本を勧められるのであろうか?


*1: その時CDは本人をとっつかまえて買って下さい方式だったがつかまえられなかった

#6 FreeBSDでBBルータを作ろう互助会

リンク元はここじゃったか。mpdと戦ってる丁度その時期に話が進んでたんやね。 ngctl shutdown fxp0: が収穫。あとここ由来のマルチセッション用パッチが公式に採用される模様。 すっかりNetBSDな気分なのでもはやどーでもいいが。

#7 9231歩

2003/01/07 (Tue)

#1 [NetBSD] FreeBSDマシンにNetBSDをインストール失敗

インストーラの1周目は空のHDDのようにパーティション/スライス設定させられるのに、途中で突然FreeBSDの スライスパーティションを認識して「古いpartitionIDだぞゴラ」というメッセージ。 その状態からパーティションIDを変更しようとしてもいまいちうまくいかない。

CDROMなしフロッピー起動なため、LiveCDによるシステム起動ともいかずそのまま断念して、シェルから自分でfdisk,disklabelをたたくための調査をしてみる。

@ スライスとパーティション

なんとなくSolaris育ちなためか、fdiskパーティションを「パーティション」、その先の細切れを「スライス」と呼んでいたが FreeBSD用語では逆 らしい。確かにSolarisだとディスクデバイスは c0t0d0s1 とスライス番号が最後 *1 になっているが、FreeBSDは ad0s1a とスライスはパーティション記号の前だ。


*1: Solarisの場合4つの基本パーティションとは別にSolaris専用パーティションを確保する。このあたりは基本パーティションの中を切るBSDと異なる。

#2 [FreeBSD] FreeBSD-4.7R-p3

20030106:       p3      FreeBSD-SA-02:44.filedesc
        Correct a reference counting bug in fpathconf(2).

最近出回っている pine 関係由来のパッチらしい。こんなシステムコール初めて見たので他にどういうアプリケーションが使ってるのかは不明。

#3 [NetBSD] altq.conf.samples

帯域制限するにはここのサンプルを参考にした /etc/altq.conf を書いて、rc.conf に altqd=YES 1行足すだけらしい。

hfscが LinuxでやったHTB みたいな奴だけど、階層名に数字だけじゃなくてシンボルが使えて管理が楽そげ。何よりNetBSD1.6デフォルトの状態で使えるのがいい。 FreeBSD+ipfilter+dummynetが恐ろしかったことやLinuxであれこれ収集していたのを考えるとすごく楽。FreeBSDでもoption ALTQというのを見た記憶あったけど、あれって3.x時代のkameパッチか…

@ altq.conf マニュアルの印刷

NetBSD の man には -t オプションがない。 manの印刷の仕方をすこし探したけど見つからずroff系コマンドを直接叩いた。troff -Tps -mdoc /usr/share/man/man5/altq.conf.5 | grops でPSファイルを作成。

@ ちょっと実験

デバイスファイルがなかったので cd /dev; ./MAKEDEV altq が必要。

@ ALTQ Tips

カーネルオプションに以下のものを追加。ほとんどは config コマンドをすると作られる opt_altq.h ファイルの中に書いてあるのをパクった。

# ALTQ
options ALTQ
options ALTQ_DEBUG
options ALTQ_NOPCC
options ALTQ_PRIQ
options ALTQ_CDNR
options ALTQ_HFSC
options ALTQ_LOCALQ
options ALTQ_RIO
options ALTQ_FLOWVALVE
options ALTQ_BLUE
options ALTQ_RED
options ALTQ_FIFOQ
options ALTQ_WFQ
options ALTQ_CBQ

options ALTQ_IPSEC

ALTQ_IPSECはドキュメントを読む限りは関係なさそうな気もする。まだ成功してない。

#4 停電の準備

マシンが1台あれば、停電しないところのBfletsにぶらさげて、停電するところのIDで接続してやれば同じIPでサービス続行のはず。 運用中のBSDマシンでグローバルアドレス2セッションに挑戦の方が面白いけど、他の会社のマシンでやるのはちょっと…

#5 ゲームボーイアドバンスSP

ここまで別の製品にしてくるとは思わなんだ。買いだー

#6 SSLクライアント証明書の更新

本日19時にとあるクライアント証明書が失効。

以下のようなMakefileを利用。make clientcsrを実行するとCSRが出来るのでそれをCAに送って、出来上がったCERを make pkcs12 に食わせるとブラウザがインポート可能な形式になる。

CLIENT=www.mimori.org-client-2003

clientcsr::
        openssl req -new -nodes -newkey rsa:1024 -sha1 -keyform PEM -keyout ${CLIENT}.key -outform PEM -out ${CLIENT}.csr
        chmod 600 ${CLIENT}.key

pkcs12::
        openssl pkcs12 -export -noiter -nomaciter -inkey ${CLIENT}.key -in ${CLIENT}.cer -out ${CLIENT}.p12 -name ${CLIENT}

…はずなのだが実は次のような問題により結局使わなかった。OpenSSLなCAの場合は役に立つはず。未確認。

@ Windows2000Serverの証明書サービスの場合

テンプレートをWebサービスにするとIEのクライアント認証として使えないし、 ユーザや管理者として送信すると元のCSRの中身を無視してIEのログインユーザに書き換えられてしまう。 どーにもこーにも。

拡張属性を指定したテンプレートを作成して CertReq.exe にCSRを食わせればよさげなのだが、昨年はこんなに苦労してないはずだよなあと調べたら、 証明書発行専用のユーザがActiveDirectory内に作ってあった。がっくし。 *1

Netscapeより *2 http://証明書サーバ/certsrv/ にアクセスして、Basic認証のID/パスワードとして証明書発行専用のユーザを指定する。あとは普通のユーザとして証明書を発行した。

しかしPKCS#7形式から更新することが可能なようなフォームがあるのに、IEがエクスポートしたPKCS#7ファイルはバイナリのため古いキーの更新が出来ないってどうよ。 IISの事しか考えてないのかと思ってIISで更新作業をしようとしたら普通にCSRが出てきただけだった。


*1:kerberosと遊んでいた直後で証明書専用ユーザ作りを気軽にやっていた頃だ。
*2: IEだと勝手にドメインユーザでログインしてしまう。ドメインに参加していないマシンだったらIEでもよし。

#7 BフレッツIPv6サービス実験

いつの間にこんなものが。しかも無料。

本実験にご参加いただくことにより、地域IP網内(閉域)においてIPv6アドレスを利用した通信が可能となります。

グローバルIPv6ではないのだが、今度こそ無料VPNトンネルを IPv4overIPv6といういつもと逆のスタックで形成できる予感。ただ対応OSがWindowsXP SP1限定で専用の接続ツールなところに一抹の不安が。

@ BフレッツIPv6セットアップツール

44KBしかないツールでダウンロード失敗したかと一瞬思った。 ipv6 install; ipv6 -p gpu UseAnonymousAddress no を実行するだけ。しかも説明書によるとその後の接続は フツーにインターネットまたは「フレッツスクウェア」に接続するだけなので勝手にデュアルスタックで接続するらしい。ちなみにIPv4なフレッツスクウェアのDNSサーバに向かって flets.net のアドレスを聞くと2001:c90:0:1::1:1 と返してくる。 なんかBSDからでも接続できそうだぞ。

@ IPV6CP

NetBSDもpppdならサポートしてるんだが、pppoeはどうなっとるんだろ。 NetBSD Problem Report #19303 のログを見ると ifconfig pppoe0 debug とやるとデバッグメッセージに現れるようだ。

うちでやった結果、一応IPV6CPを送っているようだが接続しない…

Jan  8 00:04:29 asahifw /netbsd: pppoe1: pap success
Jan  8 00:04:29 asahifw /netbsd: pppoe1: phase network
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipcp open(initial)
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipv6cp open(closed)
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipv6cp output <conf-req id=0x11 len=14 xx-xx-xx-xx-xx-xx>
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipcp up(starting)
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipcp output <conf-req id=0xa len=10 xx-xx-xx-xx-xx-xx>
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipcp input(req-sent): <conf-req id=0x1 len=10 xx-xx-xx-...
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipcp parse opts: address
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipcp parse opt values:  address 0.0.0.1 [ack] send conf-ack
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipcp output <conf-ack id=0x1 len=10 xx-xx-xx-xx-xx-xx>
Jan  8 00:04:29 asahifw /netbsd: pppoe1: lcp input(opened): <proto-rej id=0x1 len=20 xx-xx-xx-...
Jan  8 00:04:29 asahifw /netbsd: pppoe1: lcp: RXJ+ (proto-rej) for proto 0x8057 (ipv6cp/req-sent)
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipv6cp close(req-sent)
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipv6cp output <term-req id=0x12 len=4>
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipcp input(ack-sent): <conf-nak id=0xa len=10 xx-xx-xx-...
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipcp nak opts: address [wantaddr 172.26.181.xx] [agree]
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipcp output <conf-req id=0xb len=10 xx-xx-xx-xx-xx-xx>
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipcp input(ack-sent): <conf-ack id=0xb len=10 xx-xx-xx-...
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipcp tlu
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipv6cp TO(closing) rst_counter = 2
Jan  8 00:04:29 asahifw /netbsd: pppoe1: ipv6cp output <term-req id=0x13 len=4>
Jan  8 00:04:30 asahifw /netbsd: pppoe1: ipv6cp TO(closing) rst_counter = 1
Jan  8 00:04:30 asahifw /netbsd: pppoe1: ipv6cp output <term-req id=0x14 len=4>

XPでの接続の様子をキャプチャせんと分からんな。

#8 フレッツ・グループアクセス

VPNみたいな機能をそもそも用意してたんだな。都道府県を越える必要がないならものすごくお得。どっかで使ってみたいな。 フレッツ・グループアクセス ライトでIPを指定できないのは別にかまわんが、範囲ぐらい教えてくれてもいいような…

グループアクセス プロの注意書きに「10.128.0.0 〜 10.145.255.255 は利用できません」とあるので、この領域をライトに割り当ててある可能性大。

#9 4228歩

2003/01/08 (Wed)

#1 BフレッツIPv6サービス実験 続き

WindowsXPの設定がほとんど何もないつーことは router advertisement で飛んでくる *1 んじゃないかと風呂に入っていて思い浮かんだので、rtsold(8) の引数にBフレッツのつながってるインターフェースを追加した。 2001:c90:2881:0: なアドレスが付いた。 2001:c90::/32 ぐらいでルーティングしてやればよさげ。IPv4なpppセッションはそのまんま作業してすぐにアドレスが付いたので、pppは全く関係なかったようだ。 XPでの接続実験はしていない。こういうのはゼルダの謎解きみたいなもんだよなー

zebra.confへのルーティング追加。ipv6 route 2001:c90::/32 fxp1 …ではうまくいかない。point-to-pointじゃないんだから当たり前か。 ipv6 route 2001:c90::/32 fe80::20a:xxxx:xxxx:xxxx%fxp1 でもうまくいかない。 結局普通のrouteコマンドで追加した。

route add -inet6 -net 2001:c90:: -prefixlen 32 fe80::20a:xxxx:xxxx:xxxx%fxp1

rtsol -d

このコマンドを実行するには sysctl -w net.inet6.ip6.forwarding=0 をやっておく必要がある。IPv6ルータになっているマシンだとちと不都合。

@ もう一回線で開通

2001:c90:2881:1: なアドレスが付いた。

申し込みをするとBflets回線に対して/64なネットワークアドレスが割り振られるようだ。しかもHUBを介して複数台直接ぶらさげてよい。(ホストIDの発行は5台まで) フレッツ網側がIPv6ルータ機能を持ってくれている訳で、自力でトンネル掘って云々に比べるとかなり簡単でいいすな。これなら普通のユーザでも使えるかも。

あ、PPPoEじゃないからMTUは1500のまんまだ。IPsecする時もちょっとお得。


*1:IPv4で言うところのDHCP

#2 ゲームボーイアドバンス・デザイン座談会

GBAが横型になった話の中で、LRボタンの位置について

「モニター下とか(笑)」「それいいじゃない!」

ここにGBASPのスタートが見えたような。確かにモニター下にLRボタンがあるとプレイ中もコンパクトになっていい感じ。

#3 PowerBook G4 (17インチ)

やっとFireWire 800 になったか。Windows陣営はUSB2.0にいっちゃったからこいつの普及はちと厳しそうだなあ。下位モデルには付いてないし。

#4 .Mac iDisk

ただのWebDAVらしい。.MacはiDiskだけだと値段に見合わないが、IMAP4なメールサーバとかウィルススキャンも含めると悪くない値段設定かも。 ちょっと余裕できたらフリートライアルしてみやう。OSXのライセンス数x60日はフリーで過ごせるんかな(笑)

200MB以上とか容量が必要だったら インターネットディスク だろう。

#5 [NetBSD] IPv6な /etc/hosts.allow

リンクローカルからのアクセスを許可する設定。インターフェースを指定しても無視してしまう雰囲気。

ALL : [fe80::/10] : allow

FreeBSDでは以下のように書いていたので prefixlen を角カッコの中にするというのが分かるまで時間がかかってしまった。

ALL : [fe80::%fxp0]/10 : allow
ALL : [fe80::%fxp1]/10 : deny
ALL : [fe80::%fxp2]/10 : allow
ALL : [fe80::]/10 : deny

#6 「エンドユーザーの著作物使用から見える近代著作権法の問題点」〜利用権中心主義の提言〜

通勤途中の読み物に最適!

#7 8082歩

1月9日現在 累計999日目と表示されている。

2003/01/09 (Thu)

#1 skywalker

正月休み電池切れのままほおっておいた後、電源を入れた直後に少しメールを受けたらそれからメールが届かなくなってしまった。 電源入れるのと前後して大量の監視エラーメール(200通ぐらい?)がskywalker宛てに送られてしまったのが一因だと思われるが…

サポートにメールを出して復旧。

#2 BフレッツIPv6サービス実験 モア

外向けv6ルータになってるFreeBSDマシンにも接続。rtsolが文句言うので手でアドレスを付けた。2回線分確保したので相互にping6が通るのを確認。

@ ホストID機能

要するに正引きDNSにIPv6アドレスを登録する機能で、 グローバルな世界からも検索可能。DNSがIPv6経由で引けない影響と思われる。「インターネットまたはフレッツスクウェアに接続して使え」ってそういうことなんだな。

あとホストID機能に登録するとWebDAVな雰囲気のディスクスペースをもらえるのだが、 1GBまで無料とは太っ腹! *1 しかしWindowsXPからのWebDAVへのアクセス(Webフォルダー)はプロキシを無視してつなごうとする。IPv6アドレスの時に無視するような仕様なのかもしれん。 apacheプロキシのProxyPassかなんかで中継してやらんとダメかな。


*1:100MBと1GBをサービスメニューで切り替えるようになってるので正式サービス時は1GBが有料化されると思われる

#3 [FreeBSD-users-jp 72831] Re: PPPoE のスループットについて

mpd化してないのが1台残っていたのでやってみた。起動中のpppプロセスに対して行うには rtprio 5 -`head -1 /var/run/tun0.pid` 。 nice(1) とどういう関係にあるんだろとtopを起動して調べたら、NICE値が -47 になっていた。 nice(1)では-20 *1 までしか指定できないのでそれより優先順位を上げたい時に rtprio ということか。


*1:-20を指定するとtopで見た時のNICE値は-21になっている

#4 NEC PK-AX10

ネットワーク設定にデフォルトルートを書くところがないので直接接続しているマシンからしかつなげないのかと悩む。 DHCPにしたら外に出れるようになった。

制御用ポートを指定することになるが *1 、ストリーム通信用のポートは動的に割り当てられる *2 ためNATする場合はftpみたいにプロトコル内部を解析しないとだめそげ。 NATよりはスループット10Mbps以上のVPNを構成だ〜こんなもん通信路は暗号化せんでもいいけど。


*1:デフォルトは6000番
*2:1024番あたりから

#5 6832歩

累計1000日目に突入。日数は4桁以上であることが確認できた。表示場所的にはもう1桁いけそうだけど…

2003/01/10 (Fri)

#1 [FreeBSD] fxp(4) on FreeBSD

ifconfig fxp1 link0した。

fxp1: Microcode loaded, int_delay: 1000 usec bundle_max: 6

と出てくる。sysctl -a で調べると hw.fxp0.int_delay, hw.fxp0.bundle_max といったカーネル変数にこれらの値が入っているのが確認できた。

FreeBSD-3.5.1Rの時点では実装されていない。

#2 [NetBSD] fxp(4) on NetBSD

man fxp より引用。こっちのが詳しい。細かいパケットがばかすか飛んでくるような環境で割り込み回数を減らす効果があるということかな。

     Certain versions of the i8255x support loading microcode which implements
     a receive interrupt mitigation function, known as ``CPUSaver''.  Use of
     this option can improve performance in some situations by reducing inter-
     rupt load on the host.  This option is available on the following chip
     versions:

     o   i82558 step A4 (rev 4)
     o   i82558 step B0 (rev 5)
     o   i82559 step A0 (rev 8)
     o   i82559S step A (rev 9)
     o   i82550 (rev 12)
     o   i82550 step C (rev 13)

     This option is enabled by setting the ``link0'' option with ifconfig(8).

NetBSDの方に先に実装された雰囲気濃厚。

#3 MR104DV IPsecトンネル

12月24日の状態そのままで通信できるようになってた。great!

MR104DVから複数地点へのトンネル作成はできない模様だが、3万円なんだからそこまで要求するのは酷だ。スループットの計測はこれから。 置いてあるのが自分とこじゃないので最初の試験としては不便だ…

#4 10499歩

2003/01/11 (Sat)

#1 Deskstar 仕様

IC35L040AVVNの仕様を調べるのにAKIBAWatchからIBMに飛んだら「Hitachiに統合されたぜよ」というツレナイページに。

#2 [NetBSD] FreeBSDの入っていたマシンにNetBSD

FAQにパーティションidを165から169にしろ、とは書いてあるがインストールの時点での作業については書いていない。

@ FDISK (MS-DOS) パーティションの作成・変更

Warning:'DOS' is reserved. DOS パーティションテーブルを消すには、ディスクの先頭セクターを消去します dd if=/dev/zero of=/dev/wd0d bs=512 count=1

を実行してまっさらなところからはじめないとどうにもならなかった。インストーラからshに落ちるとddコマンドが使える。

#3 maginet

香港のホテルに備え付けの高速インターネット接続。途中のNATに仕掛けがあって認証しないと外に出れないシステム。240kbps だった。 HUBで接続したマシンも別途認証が必要だったが、sshでhttp/pop3/smtpトンネルを作って1台で済ませた。

@ iPass

当初は昔のようにiPassで接続しようと思ってたんだけど、 iPass 接続用ソフトウェア を日本でダウンロードし忘れていてどうしたもんかと飛行機の中で悩んでいたのだった。

#4 22213歩

2003/01/12 (Sun)

#1 31548歩

2003/01/13 (Mon)

#1 茶芸楽園

いつもの銅羅湾店に行ってみると店がなくなっていた! 尖沙咀店に行ってみると日本人が3グループぐらいいて狭い店内が混みあっている。 それほど高くない鉄観音とプーアルを調達した。

#2 17298歩

2003/01/14 (Tue)

#1 [NetBSD] PPPoEの自動再接続

ドキュメントやmanによると自動再接続することになっているのだが、突然接続が落ちてそのまんまになることがある。 以下のようなスクリプトを5分ごとに起動するようにしてみた。

#!/bin/sh
PATH=/sbin:/usr/bin:/bin:/usr/sbin

iface=pppoe0
ifconfig $iface | fgrep -q 'inet 0.0.0.0'
case $? in
0)
        ifconfig $iface down
        ifconfig $iface up
        ;;
esac

#2 8920歩

2003/01/15 (Wed)

#1 Wirehub! Internet DynaBlock

いわゆるブラックリストでメールを遮断する仕組みらしいのだがやたら範囲が広いつーかダイアルアップ回線は全部ダメ〜みたいな。エラーメールに含まれるのは以下の通り。

rcpt to: <xxxxxx@xxxxxxxx.co.jp>
553 Dynamic IP range listed by Wirehub! Internet DynaBlock - http://dynablock.wirehub.net/errors.html

日本のサイトに関してはかなり大雑把に登録しているようで指定されると届かないサイト多数かと…

@ 削除メールへの返事

but a typo in the zonefile got it blocked anyway. Solved now.

NSレコードの片割れがdjbdnsキャッシュ移行の時に返事しなくなってた。 修正しつつ、そもそも削除すべきネームサーバーアドレスだったのでJPNICに申請…しようと思ったけどもはやJPNICそんなのしてないね。回線業者に頼むしかないんか。

@ dnsを使って参照できるspam対策用ブラックリスト(dnsbl)

SpamCopが有料になっとる。ぬぬー

#2 Transmeta、「Crusoe TM5800」にセキュリティ機能を内蔵

VLIWに最適化された暗号化ルーチン搭載できたら結構いいかも。これでNetBSDベースのOpenBlocksみたいな奴作ってくれないかしらん。

#3 [NetBSD] FreeBSDマシンへのインストールその後

dd if=/dev/zero of=/dev/wd0d bs=512 count=1 してからのインストールでインストール作業自体は完了したのにブートしない問題でずーっと悩む。 自力で fdiskやら cd /usr/mdec; ./installboot -f biosboot.sym /dev/rwd0a やらを使ってブートコードの書き込みをしても直らず。

BIOS起動画面をよく見るとPrimaryHDDが CHSモード、SecondaryHDDが LBAモードで認識されている。どっちも設定はautoなのだが BIOS設定画面からLBA固定に指定したら動いた。 ある意味BIOS画面をロゴ表示にしていたのが敗因。

@ ブートとハードディスクのすべて

BSDに触れられていないのは残念だが情報は豊富で便利。

@ GNU Parted の使い方

BSDのパーティションも切れる…と書いてあるがよー分からん。LinuxはDOSパーティションと不可分なだけにLinuxのパーティションツールが一番進化している模様。

#4 [NetBSD] RAIDFrame (失敗なので数値は参考にしないこと)

あいかわらずfdiskは分からなかったので、最初のディスクのMBRをそのままコピー。dd if=/dev/wd0d of=/dev/wd1d bs=512 count=1

さらに最初のディスクのディスクラベルを取り出して sudo disklabel wd0 > wd1.label 、cパーティションと同じ数値の aパーティションを作って *1 c,dのみ残して書き込み。

 a:  80418177        63     RAID        0     0         # (Cyl.    0*- 79779)
 c:  80418177        63     unused      0     0         # (Cyl.    0*- 79779)
 d:  80418240         0     unused      0     0         # (Cyl.    0 - 79779)

raidctl -C raid0.conf raid0; raidctl -I YYYYMMDD raid0; raidctl -iv raid0 はドキュメント通り。最後の初期化のところでは raid0: Error re-writing parity! という エラーメッセージが出てくるが気にしない。

raid0 に対して以下のように書き込みたかったが、どういうわけか disklabel -R による復旧モードではうまくいかず disklabel -i raid0 で対話的に作成した。

 a:    523264      1024     4.2BSD   1024  8192    86
 b:    524288    524288     swap        0     0     0
 c:  80417985        63     unused      0     0     0
 d:  80418048         0     unused      0     0     0
 e:   6291456   1048576     4.2BSD   2048 16384    86
 f:   4194304   7340032     4.2BSD   2048 16384    86
 h:  68883712  11534336     4.2BSD   2048 16384    86

newfs -b 16384 -f 2048 /dev/raid0e; newfs -b 16384 -f 2048 /dev/raid0f; newfs -b 16384 -f 2048 /dev/raid0h

移行用のコピーをするためにマウントする時には mount -o softdep を忘れずに。

fstabを編集するところは、 raid側のfstab、すなわち /mnt/etc/fstab を編集しないといけない。/etc/fstab を編集してしまってどはまり。 *2 raidctl -A no raid0 を実行して再起動するとraidは無効になっているので、raidctl -c raid0.conf raid0 でRAIDframeを起動する。

wd0 をraidの片割れにするには元々 wd1 用に利用した disklabelのテンプレートがあるのでそれを利用する。disklabel -R -r wd0 ./wd1.label; raidctl -a /dev/wd0a raid0。 この時点で raidctl -s raid0 を実行すると以下のような表示でスペアとして wd0a が登録され、 wd9a が component1 という名前になっているのが分かる。 *3

Components:
           /dev/wd1a: optimal
          component1: failed
Spares:
           /dev/wd0a: spare
Component label for /dev/wd1a:
   Row: 0, Column: 0, Num Rows: 1, Num Columns: 2
   Version: 2, Serial Number: 20030115, Mod Counter: 171
   Clean: No, Status: 0
   sectPerSU: 128, SUsPerPU: 1, SUsPerRU: 1
   Queue size: 100, blocksize: 512, numBlocks: 80418048
   RAID Level: 1
   Autoconfig: Yes
   Root partition: Yes
   Last configured as: raid0
component1 status is: failed.  Skipping label.
/dev/wd0a status is: spare.  Skipping label.
Parity status: DIRTY
Reconstruction is 100% complete.
Parity Re-write is 100% complete.
Copyback is 100% complete.

とここまでやって再起動したら カーネルが読み込めずブートしない。RAIDパーティションを設定するときにオフセットを1008にするというところにヒミツがあるんかー?

Re: Installing onto raid1 を改めて読むと disklabel -I を確実にやれというようなことが書いてあるのでインストールCDROMで起動してやってみたけど復旧せず。最初からやりなおしか?

@ mbrlabel

MBRに書き込まれているfdiskパーティションを disklabel の形式で出力するツール。 NetBSDにおけるfdiskパーティションは BIOSからのブートの時にのみ利用していて、disklabelとは独立している。関連はかなり薄い。disklabel -i -I wd0d とかやってdisklabelを作成した後、 ルートパーティションの位置を fdisk パーティションに書けばブートしてくれる。fdiskで書き込まれているパーティションサイズはほとんど関係がない。 LBAモードで起動する限りはシリンダの境界にこだわる必要もあんまりないかも。(DOSと共存するときはいろいろ考えないといけないけど)ということらしい。

@ RAIDframe時のブート

fdiskの設定でRAIDの設定の書いてあるセクター分を足してあげないといけないのかなーと調べてみたら /usr/src/sys/arch/i386/stand/lib/biosdisk.c にこんなのが書いてある。

                if (lp->d_partitions[partition].p_fstype == FS_RAID)
                        d->boff += RF_PROTECTED_SECTORS;

少なくともRAIDの先頭に a パーティションを作っておけば、BIOS的にはRAIDパーティションを指定してブートしてくれる模様。


*1:計算しなくて済む
*2:raidctl -A no raid0 を実行した後、シングルユーザモードで起動して手動で /usr,/var をマウント・/etc/fstab を復旧して元に戻した。
*3:実は初期の時点で raidctl -f /dev/wd9a raid0 を行っていたために failed という表示だったのかもしれない。

#5 KDDI社長会見「NTT東西の地域IP網県間接続には断固反対」

フレッツグループアクセスが都道府県越えられたら確かに商売上がったりだよなあ。 距離に応じた課金のシステムがないというのはそれはそれで悩ましい。

#6 7097歩

2003/01/16 (Thu)

#1 [NetBSD] installboot

/usr/mdec/installboot -b 16 /usr/mdec/biosboot.sym /dev/rwd1d

の意味するところは、第16セクターにブートプログラムを配置して fdiskも書き換えてしまう。fdiskパーティションサイズはかなり変だが、他のOSとの共存を考えないのであればブートするようにはなるはず。

disklabelも書き換えてしまうらしい。特にcパーティションの開始セクターが重要。wd0c等の場合のデフォルトの開始セクターは63だが、 RAIDframe化した場合のwd0cの開始セクターは0でないとダメ。disklabel -r wd0d で何度も確認する。 *1


*1:installbootが書き換えるのはディスクの中のみで、in-coreは書き換えないため disklabel wd0d だと正しそうに見える。かなりハマリポイント。

#2 [NetBSD] swap on RAIDframe

再起動すると必ずParityがDIRTYになる原因はミラー化されたボリュームにswapパーティションのせいではないかと推察。

ミラー化されたボリュームにswapパーティションがあるのも無駄なのと、swapパーティションをミラーの外にしておけば ドライブ毎の容量の微妙な差異を吸収できるはず *1 なので、wd0的には RAID+swap の2パーティションで構成することにする。 またディスクの先頭の方が読み書きが速いため、raid0の中は / → /var → /home → /usr の順でパーティションを切った方がちょっとだけいいような気がする。

この構成でParityがDIRTYになる問題は解決した。

@ savecore

起動時に savecore が raid0b がdumpデバイスに指定されてるけどそんなんないぞ、と文句を言う。

swapctl -D /dev/wd0b とやると一時的に設定されるようだが保存してくれない。savecore 実行する前にやらないとダメかな。

@ ディスク故障テスト

primaryHDDにつながっているコネクタをsecondaryHDDに刺して、secondaryなし状態で起動すると無事そのまま立ち上がった。 *2

そのままprimaryHDDにコネクタを戻してsecondaryなし状態で起動しても立ち上がった。

更にsecondryを元に戻すと何事もなかったかのように起動したが、同期が取れてなくてまずいはずなので、 raidctl -R /dev/wd1a raid0 コマンドを実行。これだけで wd1a 側をマスターとして再構築を開始してくれた。 ちなみに40GB弱で16分前後で再構築が完了する。ずいぶん速いなあ。

FreeBSDではできなかったルートパーティション含めてのミラーリングがこれで完了。どっちのディスクが故障してもすぐに復旧できるぞ。素晴らしい。


*1:実際参考にしたサイトでは1.5G容量に差のあるHDDを使っていたわけだし
*2: HDDのジャンパー設定はCableSelectにしてある。ATA66ケーブルだったらCableSelectだね。

#3 どれみ どっか〜ん #49

細田守 演出、香港に行っている間の放映であったか。

手を温めるシーンなんか涙腺直撃ですよ。ぐわー。 みんなで音楽演奏するというストーリーは若干ずるいという印象を持ちながら見てたけど、それを補って余りあるええ話でした。

#4 HV-HD500

価格comで5万円弱。HDTVをiLink経由でデジタル録画するためだけのマシン。アナログVHSには期待できないらしい。SVHSじゃないし。

NBAオールスターの放映までにはなんかHDTV録画できるメディアを調達する予定。とりあえずハードディスクを40GBばかし埋めてもいいんだけどね…

@ HM-DH35000

間もなく後継機種が出る模様。2月上旬に間に合うかどうかは微妙。1週間ぐらい待ってみるか。

#5 D-VHSからのデジタルキャプチャ

うーん危険だ。少し頑張ればRecPotからもホエホエできそーな気がする。

#6 12097歩

2003/01/17 (Fri)

#1 [NetBSD] IPv6からのログインが遅い

ログイン後IP逆引きに失敗するまで待っていた。

IPv6逆引きの設定で ipv6.int → ip6.arpa の移行をしていなかったのが原因だったので named.conf にエントリを追加して完了。 IPv6逆引きのゾーンファイル作成は面倒なことこの上ないので支援ツールが欲しい。

MACアドレスで自動生成される奴は登録しないでサービス用IPだけ書くのがいいような気もするが。それだったら連番にすればいいのか。 ns0.v6.ntt.net は 2001:218::53 とかになっている。

#2 FreeBSD-5.0R

RELEASE_5_0_0 タグが打たれていた。

#3 [NetBSD] fxp2 を認識しない

NICを追加すると、追加したNICがfxp0で、従来のfxp0,fxp1→fxp1,fxp2 とインターフェース名が変わってしまう。これぐらいは以前からあった現象なのでともかく、 どういうわけか内蔵の2つ目fxp2がたまに認識に失敗する。エラーメッセージは NetBSD unable to map device registers

PnP周りくさいのでman pcibios に書いてある通りにカーネルオプションを追加してみた。 BIOS設定画面でPnP OSがYESになっているとそうなるらしいが、このマシンでは選択肢がない。

#4 [NetBSD] CVSup サーバー

日本のサーバからはどーにもひっぱってこれそうにないので、ドイツから取得開始。ローカルにCVSupサーバ上げないといかんなこりゃ。 別にcurrentを追いかける気はないんだけど、セキュリティパッチ出た時にすぐに持ってきて複数マシンに展開する体制が現在の悩みどころ。

#5 NetBSD リリース用語集と図

FTPサイトにある /pub/NetBSD/NetBSD-release-1-6 の下をもってきてそれでインストールすればセキュリティパッチの当たった状態になる。 インストール用tarballならこれを使うのがよさげ。

wget -m ftp://ring.asahi-net.or.jp/pub/NetBSD/NetBSD-release-1-6/ してみたがFTPでファイルをばらばらに持ってくるのはちょっと無駄を感じる。 …って ftp://ring.asahi-net.or.jp/pub/NetBSD/NetBSD-release-1-6/tar_files/src が塊りなんやん。しまったー。 あとは pkgsrc だけだな。

2003/01/18 (Sat)

#1 [NetBSD] Diff for /pkgsrc/pkgtools/pkg_install/Makefile between version 1.68 and 1.69

現在 ring.asahi-net.or.jp に置いてある pkgsrc.tar.gz がこいつ適用前のものらしく以下のようなエラー出しまくり。

make: Unclosed variable specification for PKG_TOOLS_BIN
make: Unknown modifier ''

cvsupもなかなかうまくいかんし、12月のもので作業してしまおう。

#2 ぷらっとほーむの Anonymous CVS Server

NetBSDだとここのが最速。 cvs -d :pserver:anoncvs@cvs.plathome.co.jp:/cvs/netbsd checkout -P pkgsrc でやっと取れた。 *1

pkgsrcのリポジトリを引っこ抜くのだと rsync -vrzt --delete rsync://rsync.plathome.co.jp/pub/NetBSD-cvs/main/pkgsrc/ /var/ncvs/cvsroot/pkgsrc/ かな? pkgsrc.tar.gz がまともならそれでいいんじゃが…


*1:pkgsrcについては真の最新版 (-current) 利用

#3 [NetBSD] pkgchk

pkg_chk -u で、FreeBSDの portupgrade -a と同じような感じ。動作が速いのは単にpkgsrcに収録されているソフトが少ないせいだろうな…

2003/01/19 (Sun)

#1 ARAID99-1000 外付け1394モデル

IDEミラーリングユニット。Macだとブートしたりするのかなー。 ここからダウンロードした User's ManualにはMacOS9でも動作すると書いてあるが、内蔵型と共用のためちと不安。

ただの外付け型 はIDEケーブルを外に出すという強引技。ちなみにHDDデュプリケータとしても動作するらしい。

#2 IMGタグの title 属性

Q:HTML 4.01 において 慣習的に使われている alt 属性による「画像を説明する為のポップアップ」が なぜ Nestcape 7で表示されず、title 属性でテキストを指定するとポップアップで表示されるようになったかを詳細に述べよ。

確かに Phoenix0.5 だと表示されないぞ。

Netscape7以上だったらHTML中にあるすべてのIMGタグのalt属性の文字列をtitle属性に設定する奴でも作ろうかと一瞬JavaScriptのドキュメントを読み始めたが、 うぇぶでざいなー方面にこんなの出回ったらHTML文法オタに刺されそうなので止めた。 *1


*1:つーか俺が若干HTML文法オタなんだけど

#3 妹パソ

ADSLもない田舎に就職するので壊れにくいノーパソでも就職祝いにしようかという話が親からあり価格調査。ThinkPadしか眼中にないけど。

kakaku.comにて A30p 2653-65J の値段が強烈。今買うんだったらこれしかないすな。某所の「ThinkPad R31-1HJお買い上げの先着20名様に、ThinkPad 701Cのプラモデルを進呈中」も捨てがたいが… どーせメール・うぇぶ・Word・Excelマシンと思われるので R31 で十分なんだろうけど液晶がへぼいノートは嫌だしなあ。

2003/01/20 (Mon)

#1 Yosemite (G3 Mac)のファーム

FireWire起動に対応してないという話をどっかで読んだはずなんだけどどこだったかなあ…ググっても見つからず。

一応 加賀電子の製品情報 でFireWire HDDのMacOS起動条件 対応機種を見ると以下のようなリストは得られる。

PowerMac G4(AGPバス搭載モデル),PowerMac G4 Cube, PowerBook G4,PowerBook G3(2000年モデル), iBook(Dual USBモデル以降),iMac DV以降,eMac

Xserveが抜けてるけどサーバーには使って欲しくないのであろう。

#2 FreeBSD/i386 5.0-RELEASE Release Notes

個人的ポイントはこんなところ

IPv6/transport IPsec(認証は証明書)/NFS とssh/rsyncのスループット比較とかしてみたい。

#3 Tips Collection - OpenSSH

ssh_config の Ciphers のところ、最近のOpenSSHは aes128-cbc が最優先になっている。ssh -v すると確かに aes128-cbc hmac-md5 でネゴしてた。知らんうちにAES使いまくってたのかー。 Rijndaelの読み方は「ラインダール」

@ DES に代わる Rijndael (ラインダール)

この記事結構よい。

#4 [FreeBSD] www.mimori.org ハードディスククラッシュ

週末の停電に備えて新しくFreeBSDマシンを立て、/homeの転送を実行…していると突然調子がおかしくなった。ハードディスクからの読み出しに失敗しているような感じで、 vinum ls とやるとこんなだったはず。

var_g.p0.s0   State: up
var_g.p1.s0   State: faulty
home_h.p0.s0  State: crash
home_h.p1.s0  State: faulty

「crash と言ってるんだから home_h.p0.s0 の領域が悪者なんだろう *1 、とりあえずデータの吸い上げしないとな〜」と思って vinum start home_h.p1.s0 *2 したところ、 crashしたディスクを元に修復作業を開始しやがった。なんじゃそらーー。

かくして /home は永遠に失われたのだった。教訓: ミラーの復旧作業において 最初にやるべき作業はクラッシュしたHDDの隔離である。 とにかく抜け。vinumはマニュアル翻訳した経緯もあって愛着があったのだがなんかユーザ数少ないみたいだし、RAIDframe(かハードウェアRAID)への移行もなんとなく決意。

しかし絶大なる信頼をしていたBarracuda ATA IVもついに1台逝ったことになる。

@ rsyncした先

/homeをrsyncで転送した先で ls -l とかやると大体正しいファイルが出来ていそうなのに中身が全部 \0 だったのはショックだったよ…


*1:実際dmesgを見ても ad1s0g からの読み出しに失敗しているようなメッセージ
*2:vinum start home_h.p1 だったかも

#5 TDSから撤退開始

SSI関連でエラー出てるのを追うぐらいならtDiaryに移行するざんす。26日の停電復旧にあわせて新システムに移行じゃー。 ああでも diary/ ディレクトリ復旧の後 make all でスタティックHTMLが全部出来たのにちょっと喜び。

@ cvs

日記のcvsリポジトリは実は失われてしまったのだが、最新版があれば特に問題なかろう。やはり 自分の努力の成果は最低3箇所ぐらいに置けが鉄則。あわてふためいた時に残っている「唯一のバックアップ」というものは壊してしまうものだ。

#6 同一ケーブルに2台HDD

今回クラッシュしたのは最近戦ってるNetBSDと同じ1Uベアボーンなのだが、実はNetBSD側でも以下のようなエラーが頻発している。

pciide0:0:0: lost interrupt
        type: ata tc_bcount: 2048 tc_skip: 0
pciide0:0:0: bus-master DMA error: missing interrupt, status=0x60
pciide0:0:0: device timeout, c_bcount=2048, c_skip0
wd0a: device timeout writing fsbn 57484196 of 57484196-57484199 (wd0 bn 57485204; cn 57028 tn 15 sn 35), retrying
wd0: soft error (corrected)

1Uという狭いところに押し込めた1本のケーブルに2台の高速HDDをぶらさげるのが危険なのかもしれんなあ…転送レートをATA33に落とすオプションとかないんかしら。

というかATA66以上はIDEケーブルのスレーブ端子使わない方がいい気がする。死んだのがマスター側なのが腑に落ちないが。

#7 8128歩

2003/01/21 (Tue)

#1 Mac OS X開発の秘密兵器「AppleScript Studio」

WSH + VBScript は確かに文法のベースがVBではあるけれど。ActiveRubyScriptだったらすごく綺麗に書けると思うぞよ。

#2 人間風車

良くも悪くもTV向きの演劇だったのかもしれない。パルコ劇場に座ったのは初めてで、小さくて舞台の近い劇場だなーと開演前には思っていた、にもかかわらずライブ感の無さに驚いた。

劇団新感線の話にちょっとツマラナイと思うことがあったとしても、 お金を払って足を運ぶなら断然劇団新感線だ。やはりそのへんのこだわりはすごいんだなと改めて感じた。

#3 8091歩

2003/01/22 (Wed)

#1 [NetBSD] FreeRADIUS 0.8.1

utmp/utmpxまわりの処理に失敗してコンパイルできん。

sudo mv /usr/include/utmpx.h /usr/include/utmpx.h.orig で一時的に utmpx を使えなくしたらうまくいった。

#!/bin/sh
sudo mv /usr/include/utmpx.h /usr/include/utmpx.h.orig
env CFLAGS="-O2 -pipe" ./configure --prefix=/local --localstatedir=/var
sudo mv /usr/include/utmpx.h.orig /usr/include/utmpx.h
make

#2 Feature Tool (v1.70)

エラーだしまくるベアボーンに搭載されているHDDの転送レートをATA33(DMA2)に設定。 ついでに Quiet Seek Mode にしてみた。いろんなところが微妙にHitachiと書いてあって気持ち悪い。そのうち慣れるんだろうけど。

rsyncで大量にデータ転送してみたけど、エラーは出なくなった模様。

@ NetBSD RAIDframe化作業

ATA33 40GBだと17分ぐらいだったのが40分ぐらいの見積もりに増加。

@ と思ったら

/usr/src と /usr/pkgsrc を同時進行でrsyncしたらやっぱりエラー出た。うむう…

#3 [NetBSD] mkisofs

/usr/pkgsrc/sysutils/cdrecord からインストールすると入っている。mkisofsで作成したトラックイメージのマウントについてはFreeBSDと同じで vnconfig を利用する。

#4 9948歩

2003/01/23 (Thu)

#1 7743歩

2003/01/24 (Fri)

#1 [NetBSD] IPv6 over IPv4 トンネル

man 4 gif するとちゃんと書いてあったのだが、 gif0自体にトンネルの始点アドレスを振っておくのが重要。そうしておかないと受信パケットを捨ててしまうらしい。(送信はしていた)

gifトンネルがIPv6デフォルトルートの場合の /etc/ifconfig.gif0

create
inet トンネルの始点アドレス netmask 0xffffffff
tunnel トンネルの始点アドレス トンネルの終点アドレス
up
!route add -inet6 :: default -ifp $int

#2 オムロンのVPN対応ルータ2機種に不具合

MR104FHに関してはかなーり叩かれまくってたけど、やっとアップデートすると 発表しましたな。MR104DVも対象だけど、あんまり期待しないで待つことにする。

#3 12010歩

2003/01/25 (Sat)

#1 停電

で会社のサーバが全部止まってる間に韓国でワームの嵐。

セキュリティーパッチはまめに当ててるつもりだけどSQL2000SP3を全マシンに展開する前だったのでちと怖かった。

#2 4371歩

2003/01/27 (Mon)

#1 国税庁、確定申告書のオンライン作成コーナーを開始

去年このサービスがあれば紙に書き込むなんつー無駄な作業せんでよかったのにー。 今年は年末調整で戻ってきてるので確定申告しない予定。

ここで入力されたデータに番号振っといてあとで参照可能とかにしてるのかなあ。

@ 入力した内容は国税庁に記録されるのですか。

A1-2 国税庁のサーバーに記録されません。入力された内容は、一時的にサーバー上に記録されますが、ご利用後に自動的に削除される仕組みとなっています。 したがって、一度操作を終了された場合には、改めて、始めから入力していただくことになります。

まー情報漏えいしたら激しくやばいのは確かだが…

#2 9612歩

2003/01/28 (Tue)

#1 MacとWindowsを繋ごう 遠隔操作ソフトで繋ぐ

ZDNetのApple Remote Desktop記事 を読みつつクライアントソフトもMacだけかーとググって調べてたらここに。さっきIPsecで見たとこやん。

Share My Desktop がすごいよさそうなのに、MacOSX 10.2限定でさびしい気持ちになった。もう10.2買うしかないんかなー。 iMac用の10.2なら別にいいけど、XServeの10.2Serverを買うのはあまりにくやしい。…が、Apple Remote Desktopに3万円払うよりはましか。

Bombich Softwareのソフト一覧 っていちいち濃いソフトばっか。もうちょっとOSXをまじめに使ってたら全部世話になるかも。

#2 IIS 管理スクリプト ユーティリティ (adsutil)

IIS関連の管理はこいつでやるのがいいんか。ファイル名悪すぎ。 内部的にはADSI経由で IIS Admin Objects をいじくっているということらしい。

AdminSamplesディレクトリはインストール直後に抹殺してたので発見に手間取る…

@ アウトプロセス アプリケーションのアンロード

cscript adsutil.vbs ENUM /P W3SVC とやると定義されているWebサイトの列挙(Webサイトは数字で管理されている。)

cscript adsutil.vbs ENUM /P W3SVC/1/Root とやるとWebサイト内に存在するアプリケーションの列挙

cscript adsutil.vbs APPUNLOAD W3SVC/1/Root/hogeapp とやるとアウトプロセスアプリケーションのアンロード

#3 6016歩

2003/01/29 (Wed)

#1 移行

マシンを通常運用環境に移行。細かい設定はいろいろ残ってるが…

#2 mod_rewrite いじり

ほぼ身内用チャットにどういうわけかネットカフェ内のリンク集からリンクが張られていてウザイのを拒否するルール。 チャットのディレクトリにある .htaccess に以下のような奴を記述。

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://www\.tako/.*$  [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://www\.ika/.*$   [NC]
RewriteRule .*$        -                           [F]

とりあえず1つでよかったんだけど複数になるかもしれないのでORの使い方の勉強がてら2行にしてみた。 以前はmod_rewriteが分からなかったのでDirectoryIndexに対してrubyスクリプトをかましていたけど、 *1 汎用になってこっちのが便利。

@ 外部ファイルを参照(未検証)

%N (1<=N<=9) でRewriteCondの後方参照ができるらしいので、 Host拒否 を参考にしてこんなのを考えてみた。

RewriteEngine on
RewriteMap    hosts-deny  txt:/path/to/hosts.deny
RewriteCond   %{HTTP_REFERER} ^http://([^/]+)/.*$  [NC]
RewriteCond   ${hosts-deny:%1|NOT-FOUND} !=NOT-FOUND
RewriteRule   ^/.*  -  [F]

*1:そもそもチャットのためDirectoryIndexがスクリプトを起動する仕様だった

#3 5188歩

2003/01/30 (Thu)

#1 [apache2] mod_ssl で証明機関ベースの認証

CN(CommonName)を "mimori CA" に設定した証明機関で発行した証明書のみ通すディレクトリの設定をするために ssl.confに書いたルール

SSLCACertificateFile /etc/ssl/certs/ca-bundle.crt

SSLVerifyClient require
SSLVerifyDepth  10
<Location "/hoge">
SSLRequire %{SSL_CLIENT_I_DN_CN} eq "mimori CA" \
           or %{REMOTE_ADDR} =~ m/^192\.168\.[0-9]+\.[0-9]+$/
</Location>

SSLVerifyClient require の影響で 相手が 192.168.0.0/16 だったら、ca-bundle.crt *1 に書いてある証明機関で発行した証明書が必要(あんまり意味なし)。

これで証明機関にぎっておけば複数アカウントの管理ができる〜ユーザー証明書のCNかメールアドレスをログに出すとなおよし。

@ WebDAVクライアント/サーバ環境の構築

apache-2.0.44 だったら別に何もしなくてもデフォルト状態でWebDAVが使える。上記 証明書認証とあわせてこんなのを書いた。

# WebDAV
DAVLockDB logs/DAVLock_SSL
DAVMinTimeout 600
Alias /webdav "/home/hoge/webdav"
<Directory "/home/hoge/webdav">
    DAV On
    SSLRequire %{SSL_CLIENT_I_DN_CN} eq "Mimori CA" \
               or %{REMOTE_ADDR} =~ m/^192\.168\.[0-9]+\.[0-9]+$/
    <Limit GET OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <Limit HEAD PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET OPTIONS HEAD PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>

DAVLockDB に指定したファイルを最初に生成するのは httpd で、しかも実際にできるファイルは *.dir, *.pag とdbmなファイル。 なので、httpdの実行ユーザが読み書きできるパーミッションを与えるのは、 /home/hoge/webdav ディレクトリだけでなく DAVLockDB に指定されているディレクトリにも必要だった。 あと Alias の行は Apacheデフォルトについてくる icons の例だと最後に/がついているが、webdavの場合は最後に / がついていると失敗する。

WindowsXPのネットワークプレースの追加から https://hoge/webdav で証明書を要求しつつ読み書きできるのが確認できた。 これで共有ストレージへの暗号化アクセスが楽になったぞ。ユーザ証明書のインストールを除いて。

ちなみにログを確認したらいきなりIPv6経由だった。


*1:ca-bundle.crt には当然 mimori CA の証明書を追加しておく

#2 9868歩

2003/01/31 (Fri)

#1 アクセスカウンタ

Pentium無印-133MHz時代から愛用している自作アクセスカウンタ(apacheの mod_includeにパッチあて)、 apache2.xへの対応が面倒だし、もはやマシンリソースの心配をせんでもいいだろう…と世間のアクセスカウンタをググってみる。

が、ディレクトリのパーミッションを777にしろ、とか書いてあるカウンタは使いたくないなあ、とか悩むよりアクセスカウンタぐらい自作した方が速い気がしてきた。 Ruby/GDの仕様を見てたらPNGの画像連結さくっとできそうだし。Ruby/GD の公式ホームページは現在閉鎖中のようなので ports より作成。

#2 [FreeBSD] subversion + apache2

database/db4, textproc/diffutils, www/neon を portinstall で入れてから以下の configure で作成

#!/bin/sh
apachesrc=../httpd-2.0.44
apachedest=/usr/local/apache2

env CFLAGS='-O2 -pipe -fomit-frame-pointer' ./configure \
        --prefix=$apachedest \
        --with-apxs=$apachedest/bin/apxs \
        --with-apr=$apachesrc/srclib/apr \
        --with-apr-util=$apachesrc/srclib/apr-util \
        --with-berkeley-db=/usr/local/include/db4:/usr/local/lib \
        --with-neon=/usr/local \
        --with-diffutils=/usr/local \

make

とりあえずの利用は大体CVSと同じなんだけど、設定ファイルの書き方 *1 に関するドキュメントが全然見つからないのが辛い。

システム管理に利用するにはインストールまでの道のりが長いかなーと思ったが、最新データ持ってくるだけなら普通のHTTPなので fetch や wget でok。

@ cvsd - a cvs pserver daemon

でも cvs pserver でいいような気がしてきたので chroot 環境での cvs pserver を作る支援ソフト。/usr/ports/devel/cvsd で作ってREADMEの通りにやれば出来そうな雰囲気だ。

/usr/local/sbin/cvsd-buildroot で必要なchroot環境を作ってくれるのが楽。


*1:.cvsignore に相当する部分とか、バイナリファイルとテキストファイルの区別とか

#3 TDSの環境整備

chmod 755 log cache cache_static で777なディレクトリを落としておく。

.htaccess の変更。

Options +Includes +ExecCGI
DirectoryIndex index.html
# AddHandler server-parsed .html
XBitHack full

#4 clockspeed やめ

ファイアウォールをNetBSD化してそこのntpを基準にしようとしたからだろうか、clockspeedでの時計合わせで 時計がどんどん狂う。TAIとUTCの差で悩むのも面倒になってきたのでntpでの時計合わせに戻した。


ジャンプ 検索
年月日 :
カテゴリー :
Title only
Ignore case
コメント
ハンドル : 名前記録
一言 :

[Management] [TdfEditor] [LogAnalyse]
Powered by Tomsoft Diary System 1.6.2
Copyright(C) 2003 by KAMIYA Satosi [Mail] <mimoriso@anet.ne.jp>. All rights reserved. このサイトはリンク上等です。