月曜日, 2月 05, 2007

OpenDNS

フリーのDNSサーバー。
キャッシュの方のサーバーです。

「安全」で「速く」て「賢い」らしいです。

なにが「安全」かというと、既知のフィッシングサイトをブロックしてくれるんですね。
だから、info1ogy.info(lが1)みたいな分かりづらいものも大丈夫なわけです。
UTF-8のURLだと、ますますわかりづらい(というか、判別不可能)になってしまうので、なかなかいいですね。

紹介では、「ローカルのキャッシュサーバーよりも速い」と書いてあります。
ほとんどの人はキャッシュサーバーの設定を最適にしていないかららしいです。
ネットワーク分の遅延はあるけど、サービス全体でみたら速いみたい。
試してみると、たしかに速い。。。屈辱的です。

ほかにも、打ち間違いなんかを勝手に推測してくれたりもします。
微妙ですが、悪くないかも。

ちなみにこれら機能は、オン・オフをWeb上で切り替えることができます。
他にもクエリーの統計なんかもWebから見れます。なんか凝ってるな。


とりあえず、かなり気に入ったのでしばらく使ってみることにします。

水曜日, 1月 31, 2007

LVM を利用したバックアップ

LVMを利用してXenのディスクをバックアップします。

LVMにはスナップショットの機能がついているので、これを利用すればファイルシステムレベルでの不整合は発生しなくなります。
DBのトランザクションなんかはまた別の話なので、そういうときはアプリケーションで用意されたバックアップを使いましょう。

まず、仮想マシンをいったん停止します。
xm pause dns1.infology.info

次にLVMのスナップショットを作成します。
lvcreate -s -L 1G /dev/xm129/dns1.infology.info-disk
-L で指定するサイズはバックアップの間にこのディスクに加えられる変更のサイズよりも大きくないといけません。このあたりは経験するしかないですね。

スナップショットの作成が済んだら、仮想マシンを動かします。
xm unpause dns1.infology.info
スナップショットの作成はとても早いので、ここまでに必要な時間は数秒です。
LVSやheartbeatを使った冗長化が済んでいれば、まず問題にならない程度ですね。

バックアップを作成します。
dd if=/dev/xm129/lvol0 of=/backup/dns1.infology.info.disk
lvol0はスナップショットの名前です。
紛らわしいときは、作成時に -n オプションで自由に名前をつけることができます。

バックアップが終了したら、スナップショットを削除します。
lvremove /dev/xm129/lvol0


ちなみに復元したいときには、
dd if=/backup/dns1.infology.info.disk of=/dev/xm129/dns1.infology.info-disk
とします。

LVM (Logical Volume Manager) と Xen

LVM(Logical Volume Manager)を使います。

というのも、それまでファイルのディスクイメージでXenを使っていました。
間違って電源が落ちたときに、イメージファイルがことごとく壊れたんですね。
やはり、数ギガバイトのファイルというのは無理がありそうです。

DebianではOSのインストール時にLVMの利用を選択できます。
すべて自動で進めていって、最後にサイズだけ変更します。
そのままだとディスク全体がひとつのLV(Logical Volume)になってしまいます。

Xenの仮想マシンにディスクを割り振るのも、ツールを使うと意識せずにできます。
xen-create-image などで仮想マシンを作成すると、LVの作成もやってくれます。

LVMを使うと、ループバックデバイスの設定も必要ありません。
また、Xenのマニュアルによると、パフォーマンスもよいらしいです。
将来、ディスクサイズの変更が必要になった場合もLVMを利用していると簡単に対応できるので、まったくいいこと尽くめです。

火曜日, 12月 19, 2006

Debian GNU/Linux で heartbeat を使う

ldirectord を使って高い可用性と拡張性をもつシステムを作りました。
あれ、でもまだひとつ足りません。
そう、LVS自体がSPOF(Single Point Of Failure、故障すると取替えがきかない部分)になってしまったんですね。
なので、これを冗長化します。

これには heartbeat を使います。
まず、aptitude install heartbeat でインストール。
次に、/usr/share/doc/heartbeat/ にある authkeys、ha.cf.gz、haresources.gz を /etc/ha.d/ にコピーします。
authkeys はパーミッションを0600に変更、残りの2つのファイルは gunzip で解凍します。

ここの設定は、それぞれがローカルネットワーク用のeth0、外部向けのeth1を持っている場合です。ひとつしかなければもっと簡単です。

ha.cf
-------------------------------------------------------------------------------------
keepalive 2
deadtime 10
warntime 10
initdead 10
mcast eth0 225.0.0.1 694 1 0
node xvm249
node xvm250
-------------------------------------------------------------------------------------
↑に書いた行のコメントを外して、値を変更します。
最初の辺りの数字は時間です。デフォルトは長すぎるので。
mcastはマルチキャストの意味。
ブロードキャストでもいいのですが、他にもheartbeatを利用した共有を行うつもりなのでマルチキャストにしました。
node はuname -nで出力される名前。参加するホスト分書きます。

haresources
-------------------------------------------------------------------------------------
xvm249 59.106.42.202/28/eth1
-------------------------------------------------------------------------------------
共有するリソースを書きます。
それぞれ、マスターのホスト名とIP、イーサネットの名前を書きます。

authkeys
-------------------------------------------------------------------------------------
auth 2
2 sha1 KYif6FQMB5XmeQT1I7CuYEEQrbQNGCsF
-------------------------------------------------------------------------------------
上のふたつの行を有効にして、パスワードは適当に決めます。
makepasswd -c 32 なんかで作れます。

IPsecを使えばここはなんでもいいです。
認証や暗号化はIPsecに統一したほうが、全体のコストは安上がりでしょう。

これでheartbeatの設定は終わりです。
でも、共有するリソースをheartbeatに開放しないといけません。
/etc/network/interfaces から59.106.42.202を削除します。
でもそうすると、割り当てるIPがなくなるので、boot時にeth1が起動しません。
iface eth1 ...
の代わりに、
up ifconfig eth1 up
を書いて、起動だけするようにしておきます。
結局IPv6のリンクローカルアドレスが割り当てられます。

さらにLVSの設定が必要です。
というのも、テーブルの内容は静的なので同期を取って置けますが、厳密にはTCPのコネクションの情報なども共有しなければいけないからです。
これには、dpkg-reconfigure ipvsadm を実行して、一方のホストをmaster、もう一方をbackupに設定すればできます。

こうすれば同期を取ることができますが、名前からわかるように双方向ではありません。
双方向のパッチもあります。でも、かなり細かい部分なので、僕は本家にマージされるのをのんびり待ちます。

ここまでやると、夜中にシステムダウンで起こされることもなくなります。

金曜日, 12月 15, 2006

Debian GNU/Linux で ldirectord を使う

ldirectord はバックエンドのサーバー群を監視して、自律的にテーブルを書き換えるLVSの拡張です。
もうちょっと具体的に言うと、バックエンドのサーバーに不具合が起きて停止すると、それを発見してリクエストをそちらに送らなくしたりします。
逆に、それまで停止していたサーバーが復帰するとまたリクエストを送るようにしたりするわけですね。

これって、高可用性の要件を満たすのに、めちゃくちゃ有効です。
しかも、ipvsadmと大して手間は変わりません。

まず、aptitude install ldirectord でインストール。
cp /usr/share/doc/ldirectord/ldirectord.cf.gz /etc/ha.d/
gunzip ldirectord.cf.gz
で設定ファイルをコピーします。

設定はこのファイルのサンプルを参考にすればマニュアル見なくても大体わかります。
とりあえずHTTPの設定はこんな感じです。
-------------------------------------------------------------------------------------
# Global Directives
checktimeout=3
checkinterval=1
fallback=127.0.0.1:80
autoreload=yes
#logfile="/var/log/ldirectord.log"
#logfile="local0"
quiescent=yes

# A sample virual with a fallback that will override the gobal setting
virtual=59.106.42.202:80
real=192.168.0.1:80 gate
real=192.168.0.2:80 gate
fallback=127.0.0.1:80 gate
service=http
#request="index.html"
#receive="Test Page"
#virtualhost=some.domain.com.au
scheduler=rr
#persistent=600
#netmask=255.255.255.255
protocol=tcp
-------------------------------------------------------------------------------------

設定が終わったら、/etc/init.d/ldirectord start で起動します。

これで192.168.0.1と192.168.0.2のサーバーを監視して、動いているサーバーにHTTPリクエストを割り振ることができます。
もちろん、重みをつけたり、分散アルゴリズムを指定することもできます。

最後に dpkg-reconfigure ipvsadm を実行してOSの起動時にipvsadmが実行されないようにします。これはもういりません。

木曜日, 12月 14, 2006

LDAP の複製

LDAPの複製です。
slapd のバージョン2.2までは、slurpdを使ってデータをコピーします。
バージョン2.3からは syncrepl を使います。これが便利!

2つの方法の違いは、データの複製を行うサーバーです。
slurpdはマスターがスレーブに対してデータの送信を行います。
sycreplはスレーブからマスターのデータを取得します。
なので、slurpdの場合はマスターの設定変更が必要になるわけですね。
これは、すでに運用中の場合には結構大きな問題です。
それに対して、syncreplの場合はマスターの設定が必要ないので、すでに運用しているLDAPを拡張するのがとても簡単です。

スレーブ側の設定ファイルに、以下を追加します。

syncrepl rid=123
provider=ldap://ldap0.kumicho.net
type=refreshOnly
interval=00:00:10:00
searchbase="dc=kumicho,dc=net"
scope=sub
attrs="*"
schemachecking=off
bindmethod=simple
binddn="uid=kumicho,dc=kumicho,dc=net"
credentials=password

これだけで複製が行えます。
上の設定を見たら想像つきますが、これは普通の検索です。
なので、データの一部だけを複製することも可能です。
また、データを取得するためのユーザーでバインドする必要があります。

認証の方法は"simple"を利用しているので、IPsecを利用しましょう。
もうTLSなんて時代遅れ。

水曜日, 12月 06, 2006

証明書で認証する IPsec

前回作成したIPsecの設定を、証明書(公開鍵)認証を使うものに変更します。

まず秘密鍵を公開鍵のペアを作成します。詳しく知りたい方はSSLをどうぞ。
秘密鍵は、/etc/ssl/private、公開鍵は、/etc/ssl/certs にあるものとします。

psk.txtを書き換えます。
192.168.172.1 EKVq0c5NzjAY3mfMSN3Y4pw0utefVj7i
を
xm001.kumicho.net
にします。
もう事前秘密鍵は必要ありません。

次に、racoon.confのremoteセクションに、
my_identifier asn1dn;
certificate_type x509 "xm002.crt.pem" "/etc/ssl/private/xm002.key.pem";
peers_identifier asn1dn;
verify_identifier on;
verify_cert on;
を追加します。
互いの認証を証明書で行うように指示します。

さらに、proposalセクションの
authentication_method pre_shared_key;
を
authentication_method rsasig;
に変更します。

これで証明書による認証が行われます。

Debian GNU/Linux で IPsec を使う

IPパケットのレベルで暗号化します。
これって、結構劇的に便利な気がします。

IPsecの機能自体はカーネルに組み込まれているので、鍵交換サーバーのracoonをインストールします。
aptitude install racoon

次に、/etc/ipsec-tools.conf の編集
コメントを外して、以下のようにします。
-----------------------------------------------------
## Flush the SAD and SPD

flush;
spdflush;

## Some sample SPDs for use racoon

spdadd 192.168.172.2 192.168.172.1 any -P out ipsec
esp/transport//require;

spdadd 192.168.172.1 192.168.172.2 any -P in ipsec
esp/transport//require;
------------------------------------------------------
IPsecをどの通信に適用するかのルールを設定します。

今度は、/etc/racoon/racoon.conf を編集します。
---------------------------------------------------------------------
remote anonymous {
exchange_mode main,aggressive;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group modp1024;
}
generate_policy off;
}

sainfo anonymous {
pfs_group modp768;
encryption_algorithm 3des;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
}
-----------------------------------------------------------------------
ここではIPsec通信の内容を設定しています。
すべての通信に同じ強度の暗号化を使うなら、上のようにanonymousにすると楽です。

上の設定ファイルにしたがって、ルート証明書へのパスを設定します。
ln -s /etc/ssl/certs/ /etc/racoon/

最後に、/etc/racoon/psk.txt を編集します。
192.168.172.1 EKVq0c5NzjAY3mfMSN3Y4pw0utefVj7i
てな感じに共通秘密鍵を追加します。

この鍵は、
makepasswd --chars 32
なんて風につくれます。ただし、makepasswdのインストールが必要です。

setkey と racoon を再起動すれば、ホスト間での通信がすべて暗号化されます。
プロトコル毎に暗号化したい場合には、racoon.confをもう少し丁寧に書けばいいです。

IPsecを使うと、これまでサービスごとにSSLを使って暗号化していたやりとりがすさまじく簡単になります。
ここでは使ってないですが、サーバー証明書を使った認証もできます。さらに、個人証明書も使えます。
外部向けのHTTPSなんかは無理ですが、内部で使う分にはものすごくシンプルかつ強力です。

水曜日, 11月 29, 2006

LVS の DR ( Direct Routing )

LVSの2回目です。
以前はNATを使っていましたが、今回はDR(Direct Routing)を使います。

DRを使う利点は、こちらのほうがパフォーマンスが高いことです。
NATでは返答のパケットもLVSを通ることになりますが、DRは直接返事を返すので負荷が低いわけです。
それ以外にも、設定がシンプルになるという利点もあります。
欠点はこのホストをゲートウェイに使用できなくなることです。
まあ、複数のホストがなければLVSを使う利点もないので、これはさほど欠点にもなりませんが。
以前、DRを使うにはARPテーブルを操作しなければいけないと思ったんですが、LVSとゲートウェイを別のホストにすればそれも必要ないです。

NAT用に設定していた場合は、設定を戻します。
DRの場合にはフォワードの設定は必要ありません。
/etc/sysctl.conf の変更を戻します。
net.ipv4.conf.default.forwarding=1
の行をコメントアウトして、sysctl -p を実行します。

iptables のフォワードの設定やNATテーブルの設定も必要ありません。削除します。
------------------------------
#!/bin/sh

vip='50.106.42.193'
localnet='192.168.0.0/16'
bind1='192.168.0.5'
bind2='192.168.0.6'

ipvsadm -C

ipvsadm -A -t $vip:53
ipvsadm -a -t $vip:53 -r $bind1 -g
ipvsadm -a -t $vip:53 -r $bind2 -g
ipvsadm -A -u $vip:53
ipvsadm -a -u $vip:53 -r $bind1 -g
ipvsadm -a -u $vip:53 -r $bind2 -g
-------------------------------------
新しい設定ファイルはこうなります。

でも、もうiptablesと照らし合わせる必要がないので、別の場所に保存します。
dpkg-reconfigure ipvsadm
を実行します。
起動時に保存されたテーブルの復元、終了時に現在の設定を保存するか聞かれるので、yesにします。
上の新しい設定ファイルを一度実行したら、
/etc/init.d/ipvsadm stop
/etc/init.d/ipvsadm start
を実行して、テーブルの情報が保存され、ちゃんと復元されることを確認します。
そしたら設定ファイルは削除してしまいましょう。

最後にVIP(ここでは50.106.42.193)のネットマスクを255.255.255.255にします。
このあたりは少しトリッキーですが、同じIPをもつホストを複数用意するためにこの操作が必要になります。

これでLVS側の設定は終わりです。

バックエンドの実サーバーでも同じような操作が必要になります。
ifconfig lo:0 50.106.42.193 netmask 255.255.255.255 up
を実行してループバックアドレスにLVSのアドレスを割り当てます。
次に、
route add -host 50.106.42.193 dev lo:0
で、このアドレスがループバックアドレスに送られるように設定します。

もし、これらのホストのデフォルトゲートウェイがLVSサーバーだったら、これを別のホストに変更します。

これで設定は完了です。
もしバックエンドの実サーバーが別のネットワークにある場合には、トンネルを利用します。
が、そんなことあんまりしないですよね。。

金曜日, 11月 24, 2006

Xen で 4つ以上の DomainU を起動する

Xen(aptからではなく、公式サイトから取ってきた)は普通に動作させると、4つまでしか仮想マシンが起動しません。

で、この問題について、あちこちでいろいろ書かれてますが、あまりいい方法はありませんでした。

結局のところ、menu.lstの中で、
title Xen 3.0 / XenLinux 2.6
kernel /boot/xen-3.0.3-0.gz console=vga max_loop=64
module /boot/vmlinux-syms-2.6.16.29-xen root=/dev/sda1 ro console=tty0 max_loop=64
module /boot/initrd.img-2.6.16.29-xen
のように、max_loop=をつけて起動します。
これで、カーネルがmax_loop個のループバックデバイスを利用できるようになります。

さらに、/sbin/MAKEDEV を編集して、
loop)
for part in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
do
makedev loop$part b 31 $part $disk
done
;;
の part in 以下の数字をたくさん書いて、loop デバイスを必要な数だけ作ります。
max_loopを64にしたので、63まで書くつもりでしたが、途中で力尽きました。

これで好きなだけ起動できるようになります。

でもこのやり方、aptitudeとの親和性が低いし、エレガントじゃないですね。

Bind の同期

LVSを導入して、Bind が2つになったので同期を取る必要が出てきました。

Bindで同期を取るには、マスター側とスレーブ側に設定が必要です。

まず、マスター側。
/etc/bind/named.conf.options に
allow-transfer { 2002:3b6a:2aca:0:216:3eff:fe5b:e8d9; };
などと設定します。上のはIPv6アドレスなので、普通はスレーブのIPv4アドレスを書けばいいです。

スレーブ側では、まず /etc/bind/db というディレクトリを作成します。
このディレクトリの所有者はbind.bindにしておきます。
次に、/etc/bind/named.conf.local に、zoneの設定を書きます。
zone "infology.info" {
type slave;
masters { 2002:3b6a:2aca:0:216:3eff:fe2e:b289; };
file "/etc/bind/db/infology.info";
};

これで起動すれば、ファイルが /etc/bind/db/infology.info に作られます。

最後に dig を使って確認します。
dig @slave.host infology.info

LVS (Linux Virtual Server)

LVS (Linux Virtual Server)を使ってみました。
LVSは受け取ったパケットを別のホストに転送して処理させることで、負荷分散や可用性の高い運用ができます。

具体的には、ホストごとに重み付けをして転送することによって負荷分散ができます。
ホストを追加したり、不具合の起きたホストを削除したりするのもできます。
しかもユーザーから見ると、なにも変化がないんですね。これは素敵。

僕のように、少ないIPアドレスで運用している場合には、ひとつのIPでLVSを動かして、実際の処理はサービスごとに別のホストで行うって運用もできます。
Xenと組み合わせて使うと、サービスをホスト間で簡単に移動、追加、削除ができるのでとても便利。使わない手はないですね。


で、利用するには、ipvsadmが必要です。
LVS自体はカーネルに組み込まれていますが、それを操作するツールをインストールしないといけないわけです。
aptitude install ipvsadm
でインストールします。

実はこのipvsadm、iptablesと使い方がよく似ています。
あとで書いてますが、設定する場所も同じです。
ipvsadm -L でリストを表示するのも一緒。
他に便利なのものは、
ipvsadm -L -n --stats で、転送したパケットなどが見れます。

で、とりあえず設定例
まず、/etc/sysctl.conf を変更します。
net.ipv4.conf.default.forwarding=1
のコメントを外し、sysctl -p を実行します。
これは今回の転送方法がNAT型だから必要です。

次に、
------------------------------
#!/bin/sh

vip='50.106.42.193'
localnet='192.168.0.0/16'
bind1='192.168.0.5'
bind2='192.168.0.6'

iptables -F
iptables -t nat -F
iptables -X

iptables -P FORWARD DROP
iptables -A FORWARD -i eth0 -o eth1 -s $localnet -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -d $bind1 --protocol tcp --dport 53 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -d $bind1 --protocol udp --dport 53 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -d $bind2 --protocol tcp --dport 53 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -d $bind2 --protocol udp --dport 53 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -s $localnet -d ! $localnet -j SNAT --to-source $vip


ipvsadm -C

ipvsadm -A -t $vip:53
ipvsadm -a -t $vip:53 -r $bind1 -m
ipvsadm -a -t $vip:53 -r $bind2 -m
ipvsadm -A -u $vip:53
ipvsadm -a -u $vip:53 -r $bind1 -m
ipvsadm -a -u $vip:53 -r $bind2 -m
-------------------------------------

これを、/etc/network/if-pre-up.d/ の中に置きます。
もともとの設定があればマージしてください。
名前は適当で構いません。ただし実行可能にしておくこと。
そうすればインターフェイスがupされる時に、テーブルが有効になります。
設定中は直接実行することで、調整も可能です。

今回は3つある転送の方法のうち、NATを利用しました。
DRやTunnelの場合はARPテーブルを操作する必要があるので、また今度。
その代わりに、net.ipv4.conf.default.forwarding=1 の設定が必要でした。

iptablesで普通にNATの設定をした後、実際に処理を行うホストへの転送を許可します。
実は、このNATの設定はLVSには必要ありません。
でも、転送先のホストのデフォルトゲートウェイをこのホストにする必要があるので、普通の通信を行うのに必要です。
ipvsadmでは-Aで転送を行うサービスを指定した後に、-aで転送先を指定します。

これで、2台のホストにDNSの処理が分散されています。
これは相当、簡単で便利です。

水曜日, 11月 22, 2006

Xen DomainU での時刻あわせ

Xenの仮想マシンをいくつもインストールしていると、ちょっと疑問に思います。
「ntpdを仮想マシンごとにインストールする必要あるの?」
でも、不安なのでインストールしてました。

で、結局のところ、ntpdをインストールしても時刻は調整されないようです。
Domain0 の時刻に同期される。
まあ、そのほうがよかったんですが。

どうしても DomainU で個々に時刻を合わせたい場合は、
/proc/sys/xen/independent_wallclock
の値を 1 にしなければいけません。

木曜日, 11月 09, 2006

Debian GNU/Linux で radvd を使う

IPv6にはIPv4でのDHCPのような機能がIPのレイヤーで実装されています。
なので設定がとても楽チンです。

まず、ルーターになるホスト(ここでは6to4トンネルの設定をしたホスト)で、パケットを通過させるようにします。
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

同じホストでこれから設定する radvd による自動設定を無効にします。
echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra

次に radvd のインストール。
aptitude install radvd

/etc/radvd.conf を以下のようにします。
interface eth0
{
AdvSendAdvert on;
prefix 2002:3b6a:2aca::/64 {};
};

意味は、eth0 につながるホストに 2002:3b6a:2aca:0(/64なので) のネットワークアドレスから始まるIPv6アドレスを自動的に割り当てるようにしています。
デフォルトゲートウェイも同時に設定されます。

これで、スイッチで接続されているホストはすべてIPv6による通信が可能になっています。
ping6 www.kame.net
などと打ってみると、外部のホストと通信できているのがわかります。


ついでにWindowsも使ってみます。

Windows XP でIPv6を有効にするには、コマンドプロンプトで、
ipv6 install
を実行します。

これでIPv6が有効になります。
さきほど設定した radvd からアドレスやルーティングの情報を自動的に受信するので、すぐに使えます。
ping 2001:200:0:8000::42
で、www.kame.netと通信できているのがわかります。

さらに、firefoxのアドレスに、
http://[2001:200:0:8000::42]/
と入れると、IPv6でWebページにアクセスできます。

他にも、poderosaでもIPv6が使えます。
Webとシェルが使えれば十分な感じです。

外向けのサービス以外でIPv4を使わなくてもいいですね。

水曜日, 11月 08, 2006

Debian GNU/Linux で IPv6 を使う (6to4 トンネル)

お金も手間もかけないでIPv6を使ってみます。
kernel 2.6 以降であればネイティブでIPv6をサポートしているのでとっても簡単です。

/etc/network/interfaces に以下を追加します。
auto sit0
iface sit0 inet6 static
address 2002:3b6a:2aca::1
netmask 16
gateway ::192.88.99.1

2002:3b6a:2aca は、IPv4アドレスで決まります。
printf "2002:%02x%02x:%02x%02x\n" 59 106 42 202
とすれば計算できます。後ろの数字がv4のIPアドレス。

::192.88.99.1 は、6to4トンネルのために予約されているアドレスで、あなたから一番近い6to4トンネルに割り当てられます。

あとは、
ping6 www.kame.net
なんてpingを打ってみるとIPv6で通信できているのが確認できます。
まあ、公開されている6to4トンネルを使うので、IPv4よりは遅くなりますが。

金曜日, 10月 13, 2006

iptables の保存と復元

iptablesの保存と復元のやりかたです。

iptables-save > /etc/iptables.conf
で保存。

iptables-restore < /etc/iptables.conf
で復元できます。

なかなかスマート。

さらにすすめて、
/etc/network/if-pre-up.d/iptables
に
---------------------------------------
#!/bin/sh

iptables-restore < /etc/iptables.conf
---------------------------------------
を書いておく。
/etc/network/if-post-down.d/iptables
には
---------------------------------------
#!/bin/sh

iptables-save > /etc/iptables.conf
---------------------------------------
と書いておけば完全に自動化されます。

木曜日, 10月 12, 2006

Debian GNU/Linux で Bridge(ブリッジ)を使う

Xenではブリッジを使います。
まあ、インターフェースがひとつだけなら、デフォルトを使うっていう手もなくはないですが。
自分で設定するなら、一体どこに書くのか?

結論からいうと、interfacesに追加すればいいです。
--------------------------------------
auto xenbr0
iface xenbr0 inet static
address 192.168.1.254
netmask 255.255.0.0
gateway 192.168.1.1
bridge_ports eth0
--------------------------------------
こんな風に記述すると、eth0が接続されたブリッジができます。

グローバルなIPをブリッジに割り当てる必要はないと思いますが、ローカルなIPは割り当てましょう。
どっちも割り当てないと、このブリッジの役割をしてるLinuxにアクセスできなくなります。

火曜日, 10月 10, 2006

aptitude と依存関係

とても便利なaptitude。
aptと最も違うところは、インストールのときだけじゃなく、アンインストールのときも依存関係を考慮してくれるところです。

aptでもインストール時に依存しているパッケージを自動でインストールしてくれます。
aptitudeはそのときに依存関係によってインストールされた、と印をつけてくれます。
それで、アンインストールのときにはその印がついたパッケージも一緒に削除されます。
なんか記憶にないけど、このライブラリ、消してもいいのかわからない。そんなことはもうなくなります。

あと、最近知ったのですが、removeではなくpurgeを使うと設定ファイルも消去できます。まあ、これはaptでもできますが。
長いこと使ってるうちに/etcがどんどん大きくなるのを防ぐことができます。
これも便利。

また、パッケージの検索で細かな検索条件を指定できます。
このあたりも使いこなせるようになると、もうaptには戻れません。

chkrootkit でウィルスの検査

chkrootkitはオープンなウィルス検査のアプリケーション。
さすがに商売でやってるわけではないので、市販のものよりもチェックの項目なんかは少ない。
でも、ただですし、気休め程度にインストールしておいてもいいような気がして使ってます。

あちこちにある、不正侵入用のツールくらいには対応しているみたいなので、面白半分にそいうのを使う相手には効果がありそうです。
まあ、どちらにせよ、侵入された後じゃないと気がつかないんですけどね。

日曜日, 10月 01, 2006

Debian GNU/Linux で ユニークなIDの作り方

ユニークなIDが欲しいときがあります。
で、そういうときにはこれ。

uuidgen -t

これでユニークなIDが出力されます。
マニュアルによると、macアドレス(世界でユニーク)とハードウェアクロックを利用して作成しているらしいです。
CPUがひとつなら、同じ時刻というのは存在しないのがわからなくもないですが(精度にもよりますが)、最近のDual CoreなCPUでも保障されてるんでしょうか?
まあ、実用上問題ないのでとりあえず使っています。

金曜日, 9月 29, 2006

Debian GNU/Linux で Xen を使う

やっぱり、世の中は仮想化ですよ。
というわけで、Xenを使ってみました。
使おうとは前から思っていたんですが、何度インストールしてもなかなかうまくいかなかったんですね。

ところが最近DebianのTestingに入ったパッケージで簡単にインストールできました。
aptitude install xen-linux-system-2.6.17-2-xen-686
これで再起動すればXenカーネルで起動できます。今までの苦労はなんだったんだ。

ついでに、xen-toolsやxen-ioemu-3.0-unstable、libc6-xenなんかも入れておきましょう。

次に仮想サーバーのイメージファイルを作ります。
手順は以下の通り。

dd if=/dev/zero of=/home/xen/debian_image bs=1024k count=2048
mkfs.ext3 /home/xen/debian_image
mount -o loop /home/xen/debian_image /mnt/disk
debootstrap --arch i386 etch /mnt/disk http://ftp.jp.debian.org/debian

最初に2GBのからのファイルを作り、次にそのファイルの中にext3ファイルシステムを作ります。
マウントして、必要なシステムをインストールします。

最後は適当な設定ファイル(debian_image.conf など)に設定を書きます。
cp /etc/xen/xmexample1 /home/xen/debian_image.conf

kernel = "/boot/vmlinuz-2.6.17-2-xen-686"
ramdisk = "/boot/initrd.img-2.6.17-2-xen-686"
name = "Domain-1"
vif = [ 'ip=192.168.2.2,bridge=xenbr0' ]
disk = [ 'file:/home/xen/debian_image,hda1,w' ]
netmask="255.255.0.0"
gateway="192.168.2.1"
vmid=1
hostname= "vm%d" % vmid
root = "/dev/hda1 ro"

これくらい書き換えるといいです。
あとは、
xm create /home/xen/debian_image.conf -c
などと起動すればいいです。

木曜日, 9月 28, 2006

Debian GNU/Linux で文字コードの変換

改行の変換に続いて文字コードの変換。
nkfとかありますが、国際化されたiconvを使いましょう。
まあ、どっちも名前しか知りませんでしたが。

iconv [-f 入力のエンコーディング] [-t 出力のエンコーディング] [inputfile ...]
で変換できます。

変換可能な文字コード(の名前)については、-l オプションで見ることができます。
処理も早いし、便利ですね。

Debian GNU/Linux で改行コードの変換

いつもemacsで変換してたので、シェルで変換する方法を知りませんでした。
で、そういうときに使うのがこれ、trコマンド。
perlの中にほぼ同じ機能の関数がありますね。

tr -d '\r' < file.windows > file.linux
こうするとDOSの改行からLinuxの改行にできます。これはCRLFからCRを取り除いてるだけです。
CRLFをLFに変換するほうが正しいですね。
上のやり方が正しいかは文字コードに詳しくないと答えられないです。

他の場面でも使えそうな、便利なコマンドを知りました。

木曜日, 9月 21, 2006

iptables で fiwewall

sshd[x]: Illegal user admin from aa.bb.cc.dd
なんてメッセージが /var/log/auth.log にあふれてます。

なので簡単なファイアーウォールで減らすことにしました。

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

これを以前のportfoward用のファイルに追加して実行するだけです。
最初の行の意味は、22番ポートへのアクセスは履歴に記録しておく。
次は、60秒でその履歴を更新して、4つIPが見つかったら接続を拒否します。

要は、3回以上sshで接続してきたらそれ以上は受け付けないというだけです。
まあ、気休め程度ですが、こういうところから少しずつファイアーウォールを作っていくのもいいかもしれません。

水曜日, 9月 20, 2006

Debian GNU/Linux で Bind (Bind9)

頭のてっぺんからつま先まで独自仕様なdjbdnsがなんとなく嫌でした。
車輪の再発明が嫌だからDNSSecには対応しないとか言ってるくせに、daemontoolsやtcpserverまで書いたりして意味不明です。

というか、実はtinydns、パフォーマンスも悪いらしい。
非公式のパッチをいろいろ当てたりするのも手間ですし。
面倒な上に性能が低いので、これを機会に止めてみました。
それでも、(非公式パッチを当てたとしても、)セキュリティー的にはtinydnsの方が上だとは思っていますが。

で、Bind。
設定ファイルの構成がいいです。
named.confがメインの設定ファイルですが、管理者によるオプションはnamed.conf.optionに記述します。
これでバージョンアップのときにも設定ファイルを使いまわせる(可能性が高い)。
ゾーンの設定もnamed.conf.localに記述します。
こういうところはさすがDebian。
Redhat系にはない、気の利いたやりかたです。

僕はキャッシュサーバーにはpdnsdを使っているので、named.conf.optionに
recursion no;
を追加します。
bindの使うIPを制限するときは、
listen-on {
59.106.42.193;
59.106.42.194;
};
も追加します。

ゾーンの設定はnamed.conf.localに記述します。
zone "infology.info" {
type master;
file "/etc/bind/db.infology.info";
};

もちろん、ゾーンファイルを先に作成しておく必要があります。
-------------------------------------------------------------------
;
; BIND data file for infology.info
;
$TTL 300
@ IN SOA infology.info. hostmaster.infology.info. (
2006082102 ; Serial
300 ; Refresh
300 ; Retry
900 ; Expire
300 ) ; Negative Cache TTL
;
IN NS a.ns.infology.info.
IN NS b.ns.infology.info.
IN MX 0 a.mx.infology.info.
IN MX 0 b.mx.infology.info.
IN A 59.106.42.202
a.ns IN A 59.106.42.193
b.ns IN A 59.106.42.194
a.mx IN A 59.106.42.195
b.mx IN A 59.106.42.196
----------------------------------------------------------------

あとは必要なだけゾーンを追加してやれば、あっさりと動きます。
動かす手間が大違いです。
あと、ゾーンごとにファイルが分かれてるのもいいですね。

メールボックスの名前

標準的なメールボックスの名前が、なんとRFCで定義されています。びっくりですね。
postmasterとかwebmasterあたりはわからないこともないですが、infoだとかmarketingだとかまで定義されているので驚きます。

まあ、無理にあわせる必要もないでしょうけど、迷うくらいならこれに従ったほうがいいですね。

月曜日, 9月 18, 2006

VLC

かなり多くのフォーマットに対応したマルチプレーヤー。とてもいいです。
実際、Realmediaのフォーマット以外はほぼなんでも再生できます。
おまけに軽量。
おまけにWindowsでもLinuxでも使える。
とてもいいです。

ただ、ジュークボックスのような機能はないので、普段音楽を聞くのに使うには向かない感じです。

いろんなフォーマットに対応するために、いろんなコーデックやらプレイヤーやらを入れるのが面倒な人には最適です。
僕は気に入りました。

金曜日, 9月 15, 2006

Picasa Web Album

Picasaは写真の管理や、簡単な編集ができるアプリケーションです。
今まで写真はflickrで管理してたので興味なかったんですね。

ところが、Picasa、使えます。
まず、軽いです。軽快さがよいです。
やっぱり、なんでもWebというのはよくないのかも知れません。
ローカルでの処理は、ローカルのアプリケーションを使うべきですね。

Web上に保存しておけるサイズは250MBを結構少ない。
まあ、その気になればアカウントをいくつもとればいいんだけど、そういうのは面倒ですし。
今までの経験から言うと、携帯のカメラで撮った写真をブログにアップするくらいならこれくらいでも十分です。
この容量が埋まる頃には、サービスも進化してたり、もっといいサービスが出てるかも知れないから気にしなくていいですね。

flickrと比べると、アルバムの数に制限がないところが便利です。
flickr無料版のあの制限は結構苦しい。
AOL Picturesは、アップロードが黙って失敗したりしてひどい目にあいました。
なんか、やっぱりGoogleはえらいです。

木曜日, 9月 14, 2006

aptitude

これまでうちのDebianでは、ずっとaptを使ってパッケージの管理してました。
aptitude、もっといい。

aptを使ってて面倒なことのひとつは、searchやshowを使うときはapt-cache、installやupgradeを使うときはapt-getと使い分けないといけないことですね。
でもaptitudeはどっちもできる。便利だなあ。

あとはsearchの結果がaptitudeのほうが見やすいです。
パッケージの属性、インストール済みとかconfigファイルだけ残っているとかバーチャルなパッケージだとか、そういうのも表示されてわかりやすい。

これからはaptitudeの時代ですね。

水曜日, 9月 13, 2006

プロセスが複数起動するのを防ぐ - start-stop-daemon

というわけで、前回のautosshを使ったポートフォワーディング。
autosshがsshを監視、再起動してくれるのでこのプロセスはひとつでいいわけです。

まあ、その気になればそんなスクリプトはすぐに書けるわけですが、こんな機能ないわけないよ。
ってわけで、start-stop-daemon。
このコマンドを使って管理することができます。

start-stop-daemon --stop --pidfile /var/run/autossh/pop3.pid --signal 0 --quiet || start-stop-daemon --start --pidfile /var/run/autossh/pop3.pid --chuid user1:user1 --background --make-pidfile --exec /usr/bin/autossh -- -M 0 -gN -b 192.168.0.1 -l user1 -i /home/user1/.ssh/id_dsa -L 10110:localhost:110 pop3.kumicho.net

こんな感じ。
これで複数のプロセスが起動することはありません。
ここでは、
1.pop3.pidに書かれたプロセスが存在する場合は起動しない
2.そうでなければ、所有者user1:user1のautosshプロセスを起動して、そのプロセスIDをpop3.pidに書き込む
ということをやっています。

このstart-stop-daemon、他にもchrootの機能なんかもあっておもしろいです。
つーか、これ使ったら、ユーザーの変更やpidファイルおよびプロセスの管理、chrootの機能をプログラムに持たせる必要ないのでは?
多くのプログラムがなんでそういう機能を自前で持っているのか理解に苦しみますね。

火曜日, 9月 12, 2006

pdnsd でローカルの名前解決

プライベートネットワーク内でもDNSを使いたいときがあります。
テストでDNSラウンドロビンをしてみたいときとか。。。

このやり方は大まかに言って2つあります。
・キャッシュサーバーが特定の名前について自分で解決して返答をする
・キャッシュサーバーが特定のドメインについて、特別なサーバーに尋ねる

1番目は解決したい名前が少ないときに便利です。
2番目は解決したい名前が多いときに便利。

djbdnsのdnscacheでは2番目の方法しか使えません。
pdnsdだと1番目の方法も使えます。

で、その方法は、pdnsd.confに
rr {
ttl=120;
name="rr.local.";
a="192.168.0.1";
a="192.168.0.2";
a="192.168.0.3";
}
とか加えてやればOK。
とっても簡単です。

wnpp-alert

このプログラムを使うと、インストールされている、みなしごパッケージを見つけることができます。
まあ、みなしごパッケージを見つけてもどうということはないんですが、「あ、これ今メンテナーがいないんだ。使うのやめよう。」とかできます。
たぶん、正しい発想は「あ、これ今メンテナーいないんだ。僕がメンテナンスしよう。」ですけどね。
devscriptsパッケージに含まれています。

気になる人は気になるかも知れません。

金曜日, 9月 08, 2006

autossh

まあ、要するに、sshの接続が切れたら自動で再接続してくれるっていうものです。
port fowarding している回線が不安定なときに便利。

/usr/bin/autossh -M 21021 -f -gN -b 192.168.0.1 -L 20001:pop3.kumicho.net:110 gateway.kumicho.net
のようにして使います。

-M以外は普通のsshを使ったときのオプションと同じです。
-Mはautosshが接続を確認するために使うだけなので、なくてもいいです。そのときでもsshが停止した場合には再起動されます。
そのときには-Mの引数を0にします。
-M自体を使わないと、デフォルトのポートで接続してしまうので複数のautosshを起動することはできません。

火曜日, 8月 29, 2006

Xname

フリーのDNSです。
Webから登録しておくと、名前解決してくれるんですね。すばらしい。

前々からtinydnsもなんか自分でパッチ当てたりしないといけないので、ちょっと嫌だなあと思ってました。
なので、まあ、誰かがやってくれるならやってもらおうかな、と。

で、さっそく自分のドメインのいくつかを登録してみました。やっぱりちゃんと動いてます。
「世の中便利になったなー。なんでもタダだよ。」
とか思って、本格運用開始。
で、それを機会にNagiosに登録してみると、実はちょくちょく落ちてました。
といっても、数日に一回、2,3分のことなのでたいしたことはないのかもしれません。

でも、「せっかくタダのリソースだし。」と思ってTTLを5分に設定してたので、問題ありです。
調べてみると、Yahoo!なんかもTTLは5分なんですね。
気持ちはとてもよくわかります。
変更が伝播するのに時間がかかるDNSのシステムは、インターネットの欠陥じゃないでしょうか。絶対に変えたほうがいいと思うんですけどねえ。

他にもフリーのDNS代行サービスは結構ありますが、探すのが面倒になってきたのでやめました。

で、BINDの出番になるわけです。

木曜日, 6月 15, 2006

Google Browser Sync

Firefoxのエクステンションです。
ブックマーク、クッキー、パスワード、履歴をネットワーク(Googleのアカウント)を通して共有、保存できます。
4つの項目すべてが同期されるのではなくて、自分で選択できます。
ブックマーク以外はちょっと抵抗がある人でも大丈夫。

基本的にかなり便利です。
以前、Bookmarks Synchronizerを使っていました。
なので、これを作ろうと思った気持ちはよくわかります。
そして、使ってみるとやっぱり便利。
終了時のタブが復活するところもなにげにいいところ。

ただ、便利なんですが、ひとつひっかかるところが。
少しGoogleに依存しすぎだな、と。。
ファンとしては痛し痒しといった感じです。

水曜日, 6月 07, 2006

Google Spreadsheets (Limited Test)

Googleの表計算ソフトが使えるようになりました。
タイトルの通り、まだテスト段階のようです。
申し込みをすると割とすぐに使えるようになりました。

普通に新規に使うこともできますし、.xlsファイルや.csvファイルを読み込むこともできます。
.odsが読み込めないのは意外でした。

軽く使ってみた感じでは、やっぱり操作性はエクセルにはかなわない気がします。
Webを通したアプリケーションの限界でしょうか。

利点はやっぱり、表計算ソフトを持っていなくても使えることや、ネットワーク上にファイルを置いておけること。
いつでもどこでも使えるのは便利ですし、他の人と共有もできます。まあ、共同作業には向かない気もしますが。
ファイルのロックがちゃんとされているのか誰か試して欲しいです。

個人的なリストの管理に使うには結構いいものな気がします。

金曜日, 6月 02, 2006

Google Notebook

名前はノートブックですが、これは汎用的なソーシャルブックマークって感じです。
まあ、IEのブックマークも実際なんでも登録できるので、ノリは同じですね。

ページのURLやそれに対するコメントをノートしておけます。
で、ネットワークのサービスらしく、それを一般に公開するかどうかを選択できます。

ちょっと覚えておきたいページや、本の紹介なんかはブックマークする気にはならないので、これとうまく使い分けるといい感じな気がします。

月曜日, 5月 29, 2006

mixi のバナー表示

バナーの表示回数が Yahoo! についで2位みたいです。
流行っているのは知っていましたが、いつの間にかそんな巨大なメディアになっていたんですね。
Yahoo! よりもユニークなユーザーは少ないが、一人当たりの閲覧数が多いのが特徴でしょうか。

まだポータルに空きがあったってことなんですかね。

木曜日, 5月 11, 2006

pdnsd

以前、djbdnsのdnsキャッシュを使っていました。
でも、思ってたより性能が出てないので止めました。

何度か書いてますが、このページはさくらインターネットでホスティングしています。
で、気がつくとなんの連絡もなしにDNSキャッシュが一台止まっていました。
しばらくして復帰してましたが、まあ、はっきり言って困るのでまた自分で用意することにしました。

djbdnsは更新されないのでやめました。
rootサーバーの一覧が古いままなんですね。
なので自分で更新しないといけません。
こんなことは滅多にないんですが、滅多にないだけに気がつきにくいので、よくない。
頻繁にあっても面倒なのでよくないですが。

てことで、pdnsdを導入することにしました。
理由はDebianのリファレンスで推奨されてたから。

とりあえず、設定ファイル(pdnsd.conf)のglobalセクションで
server_ip="127.0.0.1";
の行のコメントを外したら動きました。
このサーバーは外向けにコンテンツDNSサーバーを動かしてるので、デフォルトではポートが衝突して起動しないんですね。

このままだと、さくらのキャッシュサーバーのキャッシュサーバーに過ぎないので、ルートサーバーから再帰的に検索するように設定します。
これでさくらのキャッシュが汚染されようがストップしようが影響受けません。
で、ここまでやって気がついたんですが、結局pdnsdもルートサーバーの登録は手動でする必要がありました。なんてこったい。

server {
ip="192.33.4.12","128.8.10.90","192.203.230.10","192.5.5.241","192.112.36.4","128.63.2.53","192.36.148.17","192.58.128.30","193.0.14.129","198.32.64.12","202.12.27.33","19
8.41.0.4","192.228.79.201";
root_server=on;
}
最低限必要なのはこれだけ。
ipの取得は、
dig -t ns .
でできます。もちろん、その時点で名前解決できる必要があります。

pdnsdには動的にサービスを設定するpdnsd-ctlというコマンドが付属しています。
なので、digで得たデータを編集してこのコマンドに渡すスクリプトを書けば自動で更新できますね。
エラー時の処理が怖いのでそこまではやりませんが。

最後にresolv.confを127.0.0.1にして終わり。
djbdnsよりは簡単でした。

金曜日, 4月 28, 2006

SketchUp

Googleがまたフリーのソフトを投入してきました。
SketchUp、3Dモデリングツールです。

とりあえずインストールしてみましたが、まあ、そんな分野にかかわったこともないので一瞬で飽きました。

普通のこの手のものと違うところは、Google Earthと連携できるところです。
Google Earthからデータを取り込んで、自分で編集、それをアップロードできるらしい(!)。

Google Earthでみんなの家が見られるようになる日も近い!?

水曜日, 4月 26, 2006

Google Calendar のインポート機能

以前 Google Calendar について書いたときに、インポート機能が日本語に対応していないと書いてました。
でも、もう日本語に対応していました。
無事にSunbirdから移行できました。

日・中、2カ国の祝日表示とか、仕事と遊びを別カレンダーにできるところとか、使いやすいです。
スケジュールごとに公開の設定ができます。これで友達と共有できたりもしますね。
恋人と共有するときには、公開の設定を間違えるとえらいことにもなります。
おっと、もちろん同僚ともできます。たぶんそれが一番普通の使い方。

これは相当便利ですね。
こんなものがただで使えるなんて、いい世の中になったもんだ。

ひとつだけ難点があって、それはスケジュールをカレンダー上でコピーできないこと。
まあ、ブラウザの上で動いてる以上、しょうがない部分かも知れませんが。。。
「ここを掴むと移動」「ここだとコピー」みたいにはできそうですけどね。

月曜日, 4月 17, 2006

Google Calendar BETA

というわけで、楽しみにしてたGoogleのカレンダー(スケジュール管理)サービス。
とりあえず開いてみました。
今までMozilla Sunbirdを使っていたんですが、Ajaxのくせにこっちのほうが使いやすいです。しかも軽い。

ちょっと触った感じ、普通に使えそうだったのでSunbirdから乗り換えることにしました。
CalendarDataFile.icsをインポート、すると文字化け。
ファイルは元々UTF-8だし、Webでいろいろ試した人の話を見る限り、Google Calendarのバグみたいですね。
まあ、まだBETA版。待つしかない。

とりあえずインポートは置いておいて、今後はこれを使ってみます。

複数のカレンダーを登録しておいて、同時に表示したり比較できたりするので、仕事とプライベートの使い分けとかできそうです。
きっと、複数の人間でスケジュール調整しやすくするんでしょうが。
このあたり、結構おもしろいです。

火曜日, 4月 11, 2006

OpenOffice.org

OpenOffice.orgのバージョンが2.0.2になったと聞いたのでそろそろ使ってみました。
マイナーで2回アップデートすればそろそろまともかな、と。

で、これが結構いい。というかすごくいい。
僕が持ってるオフィスのドキュメントはレイアウトが崩れたりしないでちゃんと開けました。
あんまり難しいことはしませんが、したいことはできました。

わざわざお金を払ってMS Office買う意味が見つからないですね。
会社なんかでも、部署で一台くらいMS Office用意して、残りはOpenOffice.orgで十分なんじゃないでしょうか。

あ、でも、テンプレートやフリーな素材がないですね。
素材集のページへのリンクがありますが、今xrea.comがおかしいので試してません。
あまりに貧弱だったら、作成には向かないことになりますね。
とりあえず、しばらく使ってみます。

BlogBurst

BlogBurstを使ってみました。
おもしろいブログを集めて、その記事が欲しいサイトに紹介するサービス?
まだあんまりよくわかってないです。

とりあえず露出が増えたらいいなあ、と思って申し込んでみました。

結果は、、「却下」。
まあ、ニュースって感じでもないですし。

でも、少し残念でした。

金曜日, 3月 24, 2006

snmpd の更新

Debian(Testing)のsnmpdパッケージが更新されました。
インフォメーション画面にも書かれている通り、そのままだとlocalhostにバインドされるので、普通困ります。
ネットワーク越しの監視ができなくなるんですね。

で、解決するには、次の一行を加えます。
agentaddress IPアドレスまたはドメイン名

まあ、ただこれだけの話です。
他にもsmuxがデフォルトで起動しない、という変更もあります。
僕は使ってないんですけどね。

snmpは地味なサービスだけに停止すると痛いので気をつけましょう。

水曜日, 3月 22, 2006

クライアント側の DNS キャッシュを無効にする方法

Windows XP および Windows Server 2003 でクライアント側の DNS キャッシュを無効にする方法です。
普段の使用でこんなことをする必要はまずないですね。
かと言ってテストにも必要だとはあまり思えないんですけど。

DNSラウンドロビンを試したいから、クライアントの設定を教えてくれと言われました。
DNSラウンドロビンってひとつのクライアントが複数のIPを使いまわす機能ではないんだけどなあ。

Windowsのコマンドプロンプトで、
net stop dnscache
を実行すればキャッシュを無効にできます。

こんな機能が用意されてるなんてWindowsも意外とマニアックですね。

火曜日, 3月 21, 2006

Google Page Creator

アクセス過多で予約待ちだったGoogle Page Creator。
やっと使えるようになりました。

ところが。。。!?
作るページがない。
よくよく考えたら自分のページなんて作ったことないぞ。。。

というわけで、せっかく使えるようにはなったけど、使いようがない。
Bloggerで十分でした。

ついでにこれ、公開時にGoogleのアカウント名がURLに含まれてしまうので、非常に厳しい。
個人情報漏れまくりです。
スパムとかいっぱい来るんじゃないかという気がして夜も眠れません。

ただ、アクセスが集中したという割には軽いです。
みんな飽きちゃったのかね。

月曜日, 3月 20, 2006

Poderosa

Windows用の端末エミュレータ。
昔、いくつか試してどれも気に入らなかったので、ずっとXサーバー使ってました。
でも、いちいちLinuxにログインするのも面倒ではあるんですよね。
ちなみにそのとき使っていたのは、AstecX。

ゲートウェイに使っていたLinuxが使えない時期があったので、友達が使っていたPoderosaを使ってみました。
これがいい!

接続ごとにタブで切り替えできます。快適。
配布先のページにも.NET FrameWorkを使うと不安定になると書いてますが、突然終了したりしたことないです。
日本語もちゃんと表示されるし、「なんで今までXなんて使ってたんだ」って気になります。

でも、emacsで日本語の編集ができないんですよね。
なんでだろー?

水曜日, 3月 15, 2006

openntpd

NTPのサーバーです。
たいてい最初にインストールするサーバーですね。

時刻を合わせるなんて、まず必要なのでスタンダードな構成でインストールされてもいいと思うんですが。
きっと、ネットワークにつながってないことを考慮してるんだと思います。(SMTPはネットワークにつながっていなくても有用)
でも、ネットワークにつながない構成のほうがレアですよね。。。

で、OpenBSDのプロジェクトで開発されているのが、このopenntpd。
なんとなく信頼感高いです。ブランド効果。
なんとなくファンですし。
なので、なんとなくインストール。

ちなみに、目標がいいです。
簡素、堅牢、時間の正確さは確保するけど、深追いはしない。
すごく共感できます。
すべてのソフトウェアはこうあってほしいですね。

というわけで、ntpdをopenntpdに変更しました。
なにか変わるってほどのことはないけど、まあ、気分いいです。
デフォルトで外向けにポートを開かないところもちょっとポイントです。

携帯電話とSkype

携帯電話にSkypeが対応したらしいです。
なんとなくうれしいニュース。

携帯電話は大抵キャリアが主導権を握っているので、自分の首を絞めるSkypeを搭載するとは考えにくいですが。
今の携帯電話は料金が高すぎるので、こういうところからどんどん攻めていってもらいたいですね。

木曜日, 3月 09, 2006

identd

echoやchargenといったサービスもデフォルトでオフになってるDebian。
でも、identだけは有効になってます。
というか、標準的なインストール後にデフォルトで有効なIPサービスってこれとSMTPだけか。

そんな不思議なサービスを提供するidentd。
なにかというと、コネクションを利用しているユーザー名をお知らせするサービスです。
あなたのサーバーから接続要求があったときに、「誰ですか?」と聞くと答えてくれる。

Debianのポリシーに書いてあるを見ると、このサービスは”僕ら”のためのサービスだそうです。
よそのサーバーにとっては、接続元のローカルなユーザー名を知ったところで意味がない。
問題が起きたときに、ユーザーを特定するのに役に立つわけです。

ある日、管理者であるあなたはメールを受け取ります。
「あなたのネットワークから不正なパケットが大量に届いて困っている」
そこで、identサービスが有効だと、「ユーザーを教えてください」「A君です」
A君に聞いてみると、ネットワークの実験で生のパケットを作成する実習をしていたことがわかります。

てな感じで、マルチユーザー向けのサービスですね。
Webサービスなんかではいらないようだ。
外向けのサービスで変な接続があれば、ハックされたか、作ったプログラムがバグってるかどっちかですし。
IPでホストを確認すれば、それ以上ユーザーを特定する必要もあまりない。
ハックされてたらユーザー情報なんて意味ないし、プログラムを個々のユーザー権限で動かしたりしないだろうし。

多数の(人間の)ユーザーを管理する時には便利そうです。

水曜日, 3月 08, 2006

blogger で sftp を使う

このブログを始めた当初からの疑問だった、bloggerのsftp。
もうほとんどあきらめていたんですが、今更解決できました。

結論から言うと、sshd_configで
PasswordAuthentication yes
にするだけ。

「パスワード入力してるんだから当たり前だろ!」
とか言われそうですが、認証でPAMを使うようにしてるとパスワード使ってログインできるんですよ。
なので、今まで気がつかなかった。

まあ、昔のことはさておき、これでftpdから開放されました。
さっそくアンインストール。
正直、ftpの運用はかなり嫌だったのですっきりしました。

でも、sftpにしてから公開処理が遅くなったような?
気のせいだといいんですが。

火曜日, 3月 07, 2006

djbdns でローカルドメインの作成

djbdnsを使ってローカルなドメインを利用します。
自分で管理するネットワーク内向けの名前解決というわけですね。

なんで、tinydnsとかdnscacheと書かずにdjbdnsなのかというと、ちょっと気が変わった、からじゃなくて両方使うからです。

とりあえず、ドメイン名を決めないといけません。
そのまんま”.local”なんてドメインにします。
ちなみに現在予約(利用?)されているドメイン名(TLD - Top Level Domain)はICANNのページから確認できます。
で、.localは使われていないから、僕らが使っても問題ないわけですね。

まず、tinydnsがこの.localについての問い合わせに答えるようにします。
つまり、
cd /service/tinydns/root
./add-ns local 59.106.42.193
として、.localのネームサーバであることを登録します。

次に、dnscacheが.localへの問い合わせは上のサーバーに問い合わせるようにします。
cd /service/dnscache
echo 59.106.42.193 > root/servers/local
chmod 644 root/servers/local
svc -t .

後はこのドメインを利用したいPCなりサーバーなりで、今設定したdnscacheを使うようにします。

これで.localを利用できるようになります。
.localのコンピュータ名やサービス名をがしがし登録しましょう。

木曜日, 3月 02, 2006

su

もう半年くらいたってるかも知れません。
suで大きなアップデートがありました。

内容は。。。
ユーザーの変更が失敗したときのメッセージ。
「ごめんなさい」
↓
「申し訳ございません」

すげー、アップグレードしてます。
「ごめんなさい」もかなり好きだったのでうけました。

そのうち「腹切ってお詫び申す」とかになるんかなあ。

MySQL 5.0

DebianのTestingバージョン使ってる方はもうお気づきだと思いますが。
MySQLのバージョンが5.0になりました。

まあ、dist-upgradeしなければ問題は起きない(upgradeだと4系が維持される)ので、安心です。
自分で書いたプログラムやいくつかのMySQLを使うアプリケーションは致命的でなかったので更新してみました。

。。。予想通り何も起きなかったです。
いや、いいことなんですが。

個人的には、5.1の高速なオンラインバックアップの機能に期待してます。
5.0にはさほど興味がなかったり。

木曜日, 2月 23, 2006

iptables で router(ルーター)

ずっと前にiptablesの話を書こうと言っていました。
やっと実現。

といっても、フィルターの部分は次回に。
今回はルーターとしての動作について書きます。
iptables自体はデフォルトで組み込まれているので、インストールとかは問題ないですね。

後は設定ファイルを作ります。といっても、コマンド羅列したスクリプトです。
--------------------------------
#!/bin/sh

trusthost='192.168.2.1'
internal_ip='192.168.0.0/16'

my_internet_ip='xxx.xxx.xxx.129'
my_internal_ip='192.168.1.1'

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

##############
#Flush & Reset
##############
iptables -F
iptables -t nat -F
iptables -X

##############
#Deafult Rule
##############
iptables -P FORWARD DROP
iptables -A FORWARD -i eth0 -o eth1 -s $internal_ip -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 --protocol tcp --dport 80 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#################
#SNAT(masquerade)
#################
iptables -t nat -A POSTROUTING -o eth1 -s $internal_ip -j SNAT --to-source $my_internet_ip

#################
#DNAT(masquerade)
#################
iptables -t nat -A PREROUTING -i eth1 --protocol tcp --dport 80 -j DNAT --to-destination $trusthost
--------------------------------
これを実行すれば、ルーターとして動作します。

最初の部分は変数の定義。自分の2つのIP(内側と外側)や、プライベートネットワークのアドレス、後で出てくるポートフォワード(port foward)先のホストなんかを定義してます。
echoの行はルーターとして動作させるために必要です。これをしないとFORWARDが使えません。

次の部分は、まさに初期化。デフォルトのテーブル以外にNAT用のテーブルも使います。

その次がやっとルール。
ここでは、「すべて拒否」の後、「内から外は許可」、「外から80番ポートへのアクセスはtrusthostに転送」、「コネクションが確立した後のパケットは両方向許可」のルールを作成しています。
まあ、最後のは少し嘘ですが、イメージはそんな感じです。このルールを書かない状態が存在するのか謎です。

最後の二つがSNAT(sourceに基づくアドレス変換)とDNAT(destinationによるアドレス変換)です。
この二つがルーターとしては肝ですかね。まあ、シンプルですけど。
MASQUERADEを使った書き方もありますが、PPP接続のように動的にIPが変わる場合に使うものです。
そうでない場合はSNATやDNATを使います。(と、manに書いてある)

これで、プライベートネットワークからインターネットへの接続が許可されます。
さらに、80番ポートへのアクセスはプライベートネットワーク内のホストの80番に転送されるわけですね。
同じように書いていけば、転送するポートやホストを増やせます。
まあ、そんなルール、書かずに済んだほうが幸せな気もしますが。

daemontools

qmailやdjbdns(tinydnsやdnscache)を動かすにはdaemontoolsが必要です。
これが結構使えます。

以前、tinydnsも使いたくないなんて書いてたくせに、人って結構いい加減。

早い話、D. J. Bernsteinさんのものだけでなく自分の作ったスクリプトにも使おう、という話。
そうすれば、異常終了してしまっても勝手に再起動されるのでいい感じです。
起動や停止に関するツールも流用できるし、ログの処理なんかもおまかせ。
こういうのって自分で作るのは面倒ですからね。

使い方は、
1. 適当なディレクトリを作る
2. そこにrunスクリプトを作成
と、他のソフトをまねます。

runスクリプトの中身も簡単です。
たとえば、特定のportをforwardしたいときには、
--------------------------------
#!/bin/sh
exec 2>&1

ssh -gN -b 192.168.1.1 -l username -i /home/username/.ssh/id_dsa -L 10001:localhost:110 remote.host
--------------------------------
みたいにできます。
ホスト間の接続が不安定で、たまにsshが終了しても、自動で再起動。こりゃ便利だ。

火曜日, 2月 21, 2006

apt-get で GPG のエラー

ちょっといまさら感がありますが、年を越してからapt-getでエラー(ほんとは警告)が出るようになりました。

W: GPG error: http://debian.cn99.com testing Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 010908312D230C5F
W: GPG error: http://security.debian.org testing/updates Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 010908312D230C5F
W: You may want to run apt-get update to correct these problems

こんなエラーです。

これ、Debianのtestingバージョンを使ってる人はでてしまうんですね。
というのも、Debianのtestingバージョンでは毎年GPG鍵の期限が来てしまうので、更新しないといけないんです。
くどくど2回もtestingと書いているのは、これ、stableでは起きないんですね。

で、リンクにもありますが、
wget http://ftp-master.debian.org/ziyi_key_2006.asc
を実行して、新しい2006年用の鍵を取ってきます。

これを、
apt-key add ziyi_key_2006.asc
でインストールすればOK。

これで後は安心してaptが使えるようになります。

木曜日, 2月 16, 2006

Compiz

Novellが開発したウィンドウ・マネージャ。
同じくNovellが開発したXglフレームワークの上で動作します。
もう、デモを見てくれ!という感じ。
ウィンドウがふにゃふにゃ動いてすごい。ちょっと酔いそう。
そうかと思うと、デスクトップ自体がぐるぐる回ったり、どこでもズームできたり。
ビデオを壁紙みたいに使ったりできます。(そのくらい軽い!)
昔、スクリーンセーバーで熱帯魚を飼うソフトがあったけど、デスクトップで飼えます。

VISTAがどれほどのものかは知りませんが、このインパクトにはなかなか勝てないのでは。
LinuxがエンターテイメントOSになりそう。

infology

infomation technologyを略してinfology。
これくらいはひねらないとドメインとれないかな?と思って考えました。
ためしにGoogleで検索したら結構ヒットした。。。
でも、ドメインは取れたから、まあ、いいか。
IT関連はこちらに書きます。

水曜日, 2月 08, 2006

GmailのChat機能

気がついたらGmailが更新されてました。
Google Talkでの会話をGmailのアカウントに保存できます。

試してみると、ちゃんと保存されてました。当たり前か。
どこのパソコンでChatしても会話の記録がばらばらに別れたりしなくていいですね。
MSNなんかだと、パソコンごとに保存されるのでまとめる気にもならないですし。

これで後は、友達を作るだけ。

木曜日, 1月 26, 2006

IPアドレスの計算

時々、「192.168.1.xx~yyって、ようするに、netmaskは、なんなのよ!!」って気分になります。
何を言ってるかわからない人は幸せです。なんとかな人は幸いである、とか書いてあるのは聖書でしたっけ? お酒飲んでる、だったかも。

そんな時にはこれ、ipsc(IP Subnet Calculator)!
ドラえもんのように唱えないといけないのには理由があります。
というのも、ほんとにたまにしか使わないので名前を忘れてしまうんですね。
あちこち探したり、名前を呼んだりしてるうちに安産、おっと、暗算したほうが早かったりします。

まあ、そんなときでも多少不安が残ったりしちゃうので、ちゃんと覚えて使いましょう。
01111011110000000110101010100000と01111011110000000110101011110010の論理積。うへ~。

金曜日, 12月 30, 2005

Debian GNU/Linux でroot証明書を使う

認証局証明書ですか。まあ、言い方はいろいろ。
普通、サーバー用途で使うLinuxなのでroot証明書を持つ必要はさほどないんですけどね。

ちなみにroot証明書ってのは文字通り根っこの証明書。
これを持っていれば、この証明機関で発行された証明書が信頼できるわけです。
IEとかFirefoxなんかのブラウザはVerisignなんかの証明書を持っている(信頼している)から、僕らは高いお金を払ってVerisignから証明書を買うわけですね。

サーバー用途と言っても、時々はクライアントになることもあります。
たとえば、Webの認証にLDAPの情報を使う場合、LDAPクライアントになるわけですね。
こんなときにはroot証明書が必要になります。オレオレ証明書でもいいなら話は別ですが。

まあ、証明書ごときにお金を払ってはいられないので僕はCAcert.orgを利用してます。
最近、Nokiaの携帯かPDAにCAcertのroot証明書が採用されたらしく、もしかしたらほんとに流行ったらうれしいですね。
この人たち自身が言ってるように、こんなのお金を払うほどのものじゃない。

で、なんの話かというと、これまではroot証明書が必要になったらそのたびにコピーしてたわけです。
でも、最近いいものを発見しました。
ca-certificates。
そのまんまな名前です。
これをaptでインストールするとまともな証明機関のroot証明書はすべてインストールされます。まあ、なんて楽なんでしょう。
で、その中にCAcertのものももちろん含まれてます。すもももももももものうち。

ついでにc_rehashコマンドでインデックスを毎回作成する手間も省けます。
これは何かというと、証明書のインデックスを作成するコマンドです。
クライアント側で証明書ディレクトリを指定する場合にはこの作業が必須になります。僕はかつて、これでTLSをやめました。
まあ、そんな過去とももうおさらば。

IEやFirefoxの設定をよく見たらわかるように、root証明書ってのは更新作業が必要なんですね。
でも、そんなの自分でいちいち調べていられません。まさにapt向き!
これでまたひとつ自動化されました。

土曜日, 12月 17, 2005

Google Sitemap

今度はGoogle Sitemapです。
自分のサイトにあるページをGoogleに調べてもらうだけじゃなくて、こっちから教えてあげるサービス(?)。

Sitemapのページにある作成ツールをサーバーにおいて実行。
できたXMLファイルをGoogleのページに登録します。
あとはGoogleがそのファイルを元に僕らのサイト内をクロール、してくれるはずなんですが、いつまでたっても結果にクエリの統計しか表示されない。。。

XMLファイルは1日に1度は取りに来てるし、ステータスもOKってなってるんですけどね。なんでだろ。

サイトの運営者としてはGoogleに登録されてるかは確かに気になるところだけど、ここまで協力的なのもなんか気持ち悪いなあ。

木曜日, 12月 15, 2005

Adsense プレビューツール

広告を表示してがっぽり儲けるためのAdSense。
まあ、僕はちっとも儲かっていないんですが。

そんなAdSenseユーザーのためのツールのひとつ、プレビューツール。
見も蓋もないくらいそのまんまな名前です。

これをインストールするとそのページでどんな広告が表示されるか見ることができます。ただしIE専用。
リンク先にあるページからレジストリのキーファイルをダウンロードします。
ダブルクリックしてインストールすれば使えます。やたら簡単ですね。
後は見たいページを開いて、右クリック。「Google AdSense プレビュー ツール」を選ぶと広告が表示されます。

間違って競合他社の広告を表示してしまった日にはクビが飛んでしまうような人はこれを使ってちゃんとチェックしましょう。広告貼る前にちゃんと調べられるので便利かと。
Googleの競合他社にどんな広告主がいるか調べられてしまうような気もしますが、それはいいか。圧倒的なシェアですし。

AdSenseってなに?って人はこちらからどうぞ。

火曜日, 11月 22, 2005

AOL pictures

AOLが運営してた写真共有サービスがバージョンアップしました。
なんと、容量無制限。


こりゃいいです。
なんでもかんでもここにおいときゃいいです。まさに押入れ。

どうせ容量無制限ですからね。いっそ写真以外もなんでもおいとけばいいような気がします。死人を埋めたりするには向かないと思いますけど。
チェックしてるかどうか知らないけど、してても画像にデータ埋め込めばいいと。あ、埋めちゃった。

GmailFSみたいにAOLFSって誰か開発しないのかな。して欲しいな。


機能的にはFlickrのほうが上ですね。ほんとに保存用。失礼。
アルバムに編集する機能があるけど、同じようなFlickrの機能は無料版だと制限があるのでそこはいい。

でもタグに対応してないんですよね。
GmailとかFlickr使ってみて思ったのは、フォルダで分けるよりタグで整理する方が絶対に便利だな、と。

「あれ~、あれってどっちのフォルダに入れたっけ?」なんて絶対ないですから。
「とりあえずこのタグはついてるはずだ」で見つけられる。

結構ストレスが違います。


致命的なのはカレンダー機能がないことですね。「あ、この日にこれ撮ったんだあ」って楽しいのに。絶対必要です。

でも、本当のカレンダーにするサービスはあります。有料ですけど。
一年に一回しか使わないと思うんですけど儲かるんですかね。どうでもいいけど、中国って祝日は簡単に覚えられるからカレンダー売れなさそうだなあ。

他にも僕には絶対いらないけど、たぶんメインのサービスとして、「印刷してくれる」ってのがあります。日本でも届けてくれるのかは知りません。


こんな感じで、バックアップとしては最高です。
これで僕のサーバーにあるデータはほとんど、ネットのキャッシュになりました。



枕を高くして眠れます。

木曜日, 11月 17, 2005

Google Analytics

GoogleのWeb解析サービスです。
Googleの新サービスってことで、早速導入してみました。

ちょうどこのニュースを知る数日前にurchin(Google Analyticsの前身、というかパッケージソフト)が30日間無料で利用できるって見かけて、使ってみようと思ってたんですね。そしたらもう無料になってました。

利用にはGoogleのアカウントが必要ですが、Gmail以外のメールアドレスでも登録ができます。こういうとこ、Googleは寛大なんですよね。
で、表示されるHTMLをぺたっと貼ったらおしまいです。
「headタグとmetaタグの後ろ、/headタグの前に貼ってください」と書いてありますが、要は/headの直前に貼ったらいいですね。ややこしい。

Google曰く、12時間以内に統計情報が更新されるそうですが、実際は24時間くらいかかります。
まだサービス開始直後なので混み合ってるのかも知れません。最初の頃はほんとにページが開かないくらい重かったし。

Cookieを使っているので、リピーター率や訪問頻度なんかがわかるのがいいですね。これはログ解析ではできないですからね。
他には都市別のアクセスとか。役に立たないけど見てると楽しいです。IPのデータベースあれば誰でもわかるけど、普通持ってないですしね。同じようにプロバイダーごとのアクセスもわかります。


こんな機能が無料で使えるんだったら、みんな使っちゃうんじゃないですかね。あったほうが確実に便利だし。
そしてGoogleはますますインターネットの世界の情報を独り占めです。
多くのサイトがこれを導入すると、Googleはユーザーの流れをほとんど解析できちゃうんじゃなですかね。「A君は毎日これだけのサイトを閲覧して、あそこでこれを買った」とか把握できそう。だから無料なんだと思うけど。

まあ、僕はこういうやり方はエレガントで好きなんですが。
行動を把握されるのが好きって意味じゃないですよ。

日曜日, 11月 06, 2005

Blogger と AdSense

Bloggerの機能にAdSenseとの連携が加わりました。
ちょっと見てみたところ、便利。

Bloggerの設定画面から手軽にAdSenseを設定できる、というのも利点です。
あっちこっちのページを開かなくていいですからね。シンプル。
僕がいいなあと思うのは、広告を載せるのにテンプレートを書き換えなくていいことですね。
なので「そろそろこのテンプレートも飽きたな、変えよう」なんて思ったときにHTMLを読んで広告を載せる場所を探さなくていいわけです。こりゃ便利だ!
こんなことで結構作業時間が減ったりしますね。

たぶんそんなに汎用的に作ってない(少なくともユーザーからはそう見えない)のでできないんですが、開放してくれれば他の広告にも使えそう。いいなあ。

あとはリンクの一覧も分離してくれると最高に便利です。
テンプレート変えるときになにも追加作業がいらなくなります、僕は。
ぜひぜひ早く実現して欲しいなあ。


で、ちょっと嫌なのは僕の個人情報筒抜け、ってところですね。
AdSenseとGoogleの検索は不正サイトの対策で組んでるって聞いたことがあるので、これでBloggerとも個人情報が行き来するわけですね。まあ、今までもしてたかも知れませんが。
GoogleのPersonalized HomeやGmail、Google TalkにBloggerを使ってる僕がAdSenseを使うと、Webでの活動がほぼ筒抜けです。
いつ何を検索して、どんなメールのやり取りをしていて、誰に電話をかけて、どんなメディアを持っていて、収入がどのくらい、ということがすべて分かってしまうわけですね。こわいこわい。

僕はGoogle好きなのでもっとがんばって欲しいなあと思ってます。
で、いろいろなサービスに手を出してましたが、ちょっと不安になってきました。
使い続けるにしてもアカウントを別々にしようかなあ、とか。ひとつじゃないと便利じゃなくなってしまいますけど。

よく欧米の映画で「いいニュースと悪いニュースがある。どっちから聞きたい?」なんてせりふがありますが、僕にとってはこのニュースはひとつで両方でした。

木曜日, 11月 03, 2005

cron.d

linuxにはプログラムを予約して実行する、CRONというプログラムがあります。
「それじゃあ、任せたよ」と言っておくとちゃんとやっておいてくれるわけです。コンピューターって素直。

awstatsの設定の仕上げでcronに登録したわけです。で、これが動いてない。
なんと、cron.dの中のファイル名には制約があったんですね。「.」は使えない文字でした。
awstats.confはawstatsというファイル名で動いていたので、awstats.juanmao.net.confはawstats.juanmao.netで動かそうとしたんですね。
でも統計結果が全然更新されていないので、変だなあと。

調べてみると、これはCRONの制限と言うよりはrun-partsコマンドの制限みたいですね。
これは指定したディレクトリの中の実行ファイルを実行する、というもの。
で、CRONはそれにあわせたみたいです。cron.dailyなんかを実行するときには使ってますしね。

ファイル名で実行する、しないを決めるなんて下手な設計です。問答無用で実行してしまえばいいのに。
もし特定のファイルだけ実行したいならシンボリックリンクのディレクトリを作ればいいだけじゃないか!そういえばinitはそうだし。
なんでそうなったのかは知らないけど、今も残ってるのはよくある「歴史的な理由」ってやつなんでしょうか。互換性を維持、みたいな。
違うプログラム名にすればいいだけのことだろ、とか考えてたらオプションでそういう動作はできるらしいです。ま、普通ですね。

ちなみにこのcron.d、下手にファイルを置くと将来インストールするアプリケーションと名前が衝突する可能性があるのであまり使わないほうがいいです。つまりこのディレクトリはアプリケーション用だったわけです。
特定のユーザーで実行したいならそのユーザーでcrontabを使いましょう。こっちなら問題なし。
www-dataとかシステムユーザでcrontabをインストールするのはちょっと嫌かもしれません。そんなときには/etc/crontabを使うといいわけですね。対話的にシェルを使わないユーザーはこっち、というわけです。

要するに、僕は一番よくないやり方でやってたみたいです。
さすがにこれだけ枯れたシステムだと、似たような方法がいくつもあるのには意味があるし、ちゃんとしたやり方も用意されていたということですね。
注意しないといけないですね。

火曜日, 11月 01, 2005

awstats で複数のサイトを解析

引越ししたので、ついでにログも別にしました。
やっぱり、昔のページと今のページの訪問者を比べたくなるわけですよ。

うちはanalogとawstatsでログを解析してるので、片方は合計で片方はサイト毎にしようかなと。
analogのほうが解析としてはおおざっぱだし、複数のドメインに関する統計なんかもでるのでawstatsを分割することにしました。

awstats.confに書いてあるようにこれをawstats.juanmao.net.confという名前でコピーします。
ちなみにこの名前の付け方には意味があるので、ちゃんとawstats.{サイト名}.confにしないといけません。
実際にはもうちょっとゆるいですが、この書き方が推奨されてるのと、まあ確かに間違えようもない名づけ方なのでこうします。
で、ログファイルの場所とサイトのドメイン名を変更します。

そしたら実行。
/usr/lib/cgi-bin/awstats.pl -
config=juanmao.net -update
こんな感じでデータをアップデートします。
このアップデートの方法は統計をcgiで見る用です。ちょっと危険です。
最近awstatsに脆弱性が見つかったのでこのcgiにわんさかアクセスがありました。うちは認証かけていたので(たぶん)平気でしたが、そんな感じに危険です。
awstatsのページでも静的なhtmlで出力することが推奨されてます。そのうち気が向いたらそうするかも知れません。気にしない気にしない。
このところ大陸気質が伝染したのかおおざっぱになってきました。
古いログの分をすべてアップデートしたらCRONに登録しておきましょう。楽チンです。

このcgiを見るときは
http://your.domain/cgi-bin/awstats.pl?config=juanmao.net
でアクセスします。
で、「なるほど。うちには日本からアクセスが多いなあ。(当たり前)」とか分かったりするわけですね。
一番おもしろいのは検索キーワードですが、半分くらい文字化けします。気になる木になる。(←普通に変換されました)
日本語化パッチもあるのでお急ぎの方はそれを使いましょう。僕は本家にマージされるのをのんびり待ちます。

そういえばawstatsはWeb以外にもメールやFTPのログも解析できます。
メールのログも解析しようと設定ファイルを書いたんですが、eximのフォーマットにはテンプレートが用意されてないみたいです。残念。マイナーに対する迫害ですね。
しこしこ合わせればなんとかなるんでしょうが、それもまた今度にします。だって面倒ですからね。

月曜日, 10月 24, 2005

レジストラ移管しました

レジストラ移管というのは、ドメイン登録会社を変更するってことですね。
jpドメインの場合は、指定事業者の変更というのかな。名前が違うのはドメインの管理構造が違うからです。

書き直してみたところでやっぱりわかりにくいですね。
今日はドメインにまつわる話です。
要は僕がこの「kumicho.net」を使うためにお金を払う相手を変えたということですね。
前からお名前.comは使いづらいと思っていたので、全部ムームードメインに変更しました。

ほんとは次の更新まで待つつもりだったんですが、さっさと済ませてしまいました。
その理由は、調べてみたら実質”ただ”だった、それにつきますね。それならさっさとやってしまおう、と思ったわけです。

上で触れてるように、netとかcomなんかとjpといった国別ドメインでは変更の手続きがちょっと違います。
netやcomの場合はドメインごとに申請する必要があります。変更先がムームードメインの場合は1年分の契約料が必要になります。
でも、契約期間も1年延びるので、先払いした感じですね。移管自体はまあ無料。
jpドメインの場合は”登録者番号”という単位の下にドメインが管理されていて、ドメイン毎に移管する場合と、登録者番号そのものを移管する場合で手続きが異なります。ややこしい。
僕はきれいさっぱり移管したかったので登録者番号をムームーに移管しました。この場合はまったく無料です。素敵ですね。

どっちの場合も、確認メールがあちらこちらから届くのでOKと言ったり、無視したりしないといけません。
問題なければすんなり移行して、外から見てる分にはなにも変化はないです。
まあwhoisの情報は変わってますが、あんなの見てる人いるんですかね。既に過去の遺物な感じがします。なくしてしまえばいいのに。

おもしろかったのは、移管に必要な費用は(意外なことに)移管先だけで決まるので、ドメイン登録会社は客を縛ることができないんですね。ほんとに意外でした。
さすがインターネット。官僚的なシステムですら官僚的でないです。すばらしい。

ちなみに逆方向の値段を調べたら、びっくりするほど高かった。2度と帰れないです。そう思うと少しさみしくなったりもしますね。

日曜日, 10月 16, 2005

MSNメッセンジャーを複数起動する

というわけで、MSNメッセンジャーを複数起動する方法です。
MSNのアカウントを複数持っていても、普通だとひとつしか起動できないので不便でした。

詳しいやり方はリンク先を参照してください。
細かいバージョンによってやり方が違うので書ききれません。

これで仕事用とプライベート用にアカウントを持つことができますね。
ちょっと水商売の人間になったようで楽しいです。

ところでMSNをYahooがIM(インスタントメッセンジャー)の相互乗り入れを始めるらしいですね。マイクロソフトらしくないですね。

木曜日, 9月 22, 2005

キーボードの音

キーボードの音に脆弱性が発見されました。
「え?」って感じですね。

ほんとはキーボードの音から打ってるキーを判別するという実験があったって話です。
詳細はリンク先を見てください。

そんなこと言ったら、キーを打つところを見てればどうせわかるんじゃないの?なんて思いました。
でも、音だったら電話越しでもいけますね。すばらしい。
盗聴機は有名だけど、盗撮機も有名か。まあ、場所を選ばないから有利です。
適当な社員になりすまして、「ちょっとログインしてもらえますか」なんて言われたら拒む人はあまりいないと思いますしね。
これでパスワードが手に入る。やったあ。

たしかに自分のルートパスワードなんていつも同じリズムで打ってますもんね。
ちょうどそんなこと考えてたときだったんで面白い記事でした。

月曜日, 9月 19, 2005

tinydnsもやめたい

ひさびさに技術よりな話。
ちなみにtinydnsはネームサーバーです。名前解決のサービスを提供しますね。
相棒のdnscacheは今は使ってません。

DebianのTestingバージョンを使っている人はきっと気づいていると思いますが、gccのメジャーバージョンがあがりました。今は4になっています。
aptで見たときに「これは結構危険だなあ」などと思いつつ、迷わずアップデート。
特に問題は起きませんでした。aptで管理しているものは!

そう、tinydnsはソースから手動でコンパイルしていたので問題が起きました。
と言っても、アップデート直後は問題が起きません。すべてメモリにロードされていますからね。
問題が起きたのは再起動した後なんですね。

SSHとApacheの起動がめちゃくちゃ遅い。
Apacheは設定ファイルの中でバーチャルホストを使っているから、その名前解決がタイムアウトするまで待つのはわかりますが、SSHはなんで遅いんでしょうね。
そんな理由はどうでもよくて、再起動後アクセスできなくなったのでまた泣きそうになりました。
とりあえず落ち着こうと思ってふらふらしてからアクセスしたら接続できたわけです。よかった。

いろいろ調べて結局、tinydnsが原因だとわかったわけです。
関連するdaemontoolsとかucspi-tcpも含めてコンパイルし直したら正常になりました。

せっかくaptみたいな便利なツールがあるのに、こんな依存関係の問題があるのは結構いやですね。コンパイルするのも面倒ですし。
しかも、DNSみたいな低レベル(レイヤーの話)のサービスが停止するのは結構致命的でした。
特に、僕はできるだけIPアドレスに依存しないようにいろんな設定で名前を使っているので大変だったんですよ。

またこんな問題が起きないように、もうtinydns使うのやめようかなあって気になってきました。
構造もシンプルだし、使いやすくて好きなんですけどね。
作者が変人(取り巻きを見た想像です)だから公式パッケージに入らないだけなんだけどなあ。

水曜日, 9月 14, 2005

オートネゴシエーション と さくらインターネット

以前も書きましたが、このページはさくらインターネットにおいてあるサーバーを使っています。
そこで今日、問題がおきました。オートネゴシエーションに関する話題です。
さくらの評判を悪くするための記事です。というか、悪い。

サーバーをさくらインターネットに移動してから、ログにこんな感じのエラーが出てくるようになりました。
----------------------------------------------------------------------------
Jul 19 17:47:40 rabbit kernel: eth0: Transmit error, Tx status register 82.
Jul 19 17:47:40 rabbit kernel: Probably a duplex mismatch. See
Documentation/networking/vortex.txt
Jul 19 17:47:40 rabbit kernel: Flags; bus-master 1, dirty 396273(1)
current 396275(3)
Jul 19 17:47:40 rabbit kernel: Transmit list 00000000 vs. de8942a0.
----------------------------------------------------------------------------
見たまんま、ネットワークの速度があっていないんだろうと思ってサポートにメールをしたわけです。

さくらでは5だったか6営業日以内に返事が来ることになっていますが、2週間ほどたってやっとメールで返事が来ました。その間、催促すること2回。

それによると、たまにそういうことがあるから手動で設定をするようにとのこと。
え?今時、オートネゴシエーションを使ってはいけないホスティングサービスがあるのですか?
てっきり、オートネゴシエーション対応の設定に変えてくれると思っていたのでびっくりです。

しょうがないので言われたとおりに設定してみました。
最初はethtoolを使ってみたけどうまくいかなかったので、mii-toolを使いました。
設定をしたとたんに、接続が切れました。血管も切れそうでしたがなんとかまだつながってます。

一応、サーバーの移動とか以外では止めたことがないのですよ。ささやかな自慢だったのに。
しかも、今は海外です。飛んでいって直すわけにもいきません。
なのであせりました。「なんでリモートでネットワークの設定を触ってしまったんだー!」と後悔の嵐です。この間の台風に負けてません。
もしかしたら、再起動すればデフォルトに戻るかなと思ってさくらに電話しました。もちろん国際電話ですよ。めちゃ高いんですよ!
再起動が終わってもやっぱり直りません。涙が止まりません。

しょうがないので、東京にいる友人に話して直してくれないか相談しました。僕はいけないですからね。
なにして壊したかははっきりしてるので、移動以外ではそんなに手間もかからんだろうとか思ってました。
で、話してるうちに昔まったく同じようなことがあったらしい。聞けば聞くほど同じでした。
その時は結局さくらの側で設定して収まったとのこと。だいぶ怒りのボルテージが上がってきましたね。

実はその話は前もうっすらと聞いたことがあったので、最初のメールにも書いてたんですね。
こういうエラーがあって、前にも聞いたことがあるから調べてくださいって。
なので、多少しつこいかな、なんて遠慮がちにもう一度言ったわけですよ。

しばらく調べた後の返事が「スイッチの設定を変更します。有料です。」あほか、と。
なんで狂った設定を直すのに僕がお金を払わないといけないんでしょう。
控えめに「言われたとおりの設定をしてなんでお金を払わないといけないんだ」と伝えました。
その返事が「お話のメールを確認しますので件名と日付を教えてください」とのこと。このあたりから責任のなすりつけあいっぽいですね。それでもサービス業か。

しばらく待ってると、このサーバーから障害報告のメールが届きました。お!直ったね。
さらにしばらく待っているとさくらから電話がかかってきました。
「今、ネットワークの開通を確認しました。スイッチのオートネゴシエーションを有効にしました。これで今回のリブートしてネットワークにつながらなくなった件は解決ですね。お客様はきっと一時的な変更をされていたので、リブート後に設定が戻ってしまってネットワークにつながらなくなったんですね。」
なんと、先ほどまで相手をしていた人ではなくて別の人間です。しかも話が変わってる。

ちゃんと事実関係と障害の原因を調べてからもう一度連絡するように伝えました。
素直に謝ってくれれば、こっちの気も収まるのに、なんで神経を逆なでするようなことをしますか。
僕は現実的な被害を受けているんですが。
もちろんそれは請求するつもりですけど、けんかになるのは面倒です。

返事がきてからまた考えますが、いつになることやら。まさに安かろう悪かろうですね。
これでも来月上場するらしいです。なにやら悔しい気持ちも沸いてきますね。
それにしても、こんなサービス、使わないほうがいいですよ。さくらインターネット、最悪。

木曜日, 7月 21, 2005

逆引きの設定

さくらインターネットに頼んでいた逆引きの設定が終わりました。
これで携帯電話にもメールが送れます。

逆引きのPTRレコードはさくらインターネットのサーバーが答えて、正引きは自前のサーバーが答えるって変ですよね。
いっそのこと全部引き受けてくれたらいいのに。。。まあ、逆引きはIPとったときにホスト名(サービス名ではない)にあわせればずっと固定だからいいのかも知れません。
正引きはそれよりはずっと流動的ですもんね。

それにしても、前にこれだけくどくど書いておいて、自分がすることになったら丸投げとは。。。いや、管理コストは抑えないと。

金曜日, 7月 08, 2005

Content-Encoding: gzip

HTTPの話。
前回はchunkedに対応したので、今度はgzipに対応してみます。これで圧縮された転送にも対応できるわけですね。

ソケットから読み込んだデータをバッファにためて、perlioを使って解凍します。
ここで「使いにくいなー」と思う、readコマンド。
最初はソケットから読み込みながら伸張しようと思っていたんですが、なんと!指定するバイト数分読み込むのではなくて、読み込んだ(伸張した)バイト数をカウントするんですね。
これは不便。だって、圧縮されてるデータを展開したら何バイトになるかなんてわからないじゃないですか。なのでなんだか2度手間な感じになってます。

サンプルコード
-------------------------------------------------------------
my $buff = '';
if ( $chunked ) {
while ( <$sock> ) {
warn $_ if $debug;
last if m/^\r\n$/;
s/\r\n//;
s/\s//i;
my $content_length = hex($_) or last;
my $tmp;
read $sock, $tmp, $content_length;
$buff .= $tmp;
}
}
elsif ( $content_length ) {
read $sock, $buff, $content_length;
}

my $content = '';
if ( $gzipped ) {
open FH, '<:gzip', \$buff or die $!;
$content .= $_ while ;
close FH or die $!;
}
else {
$content .= $buff;
}
-------------------------------------------------------------

水曜日, 7月 06, 2005

Debian GNU/Linux で exim4 を設定する

気がついたら「Exim4 設定」で上位に表示されるようになってました。
なので申し訳ない気持ちを込めて書いておきます。もちろん、debianでの話です。

そもそも、Debianでは有無を言わせずインストールされてしまうExim。その時になにか設定を選ばされてしまうのですけどね。
じっくり英語を読めば難しいことは書いてないけど、やはり面倒です。しかし、Debianの標準MTAはこのEximです。だからしょうがない。
で、ちょうど僕は受信するドメインを増やしたくなったので再設定しました。

やりかたは、/etc/exim4/update-exim4.conf.conf なんていう名前のファイルに書いてあります。なんでこんな変な名前なんだ。。。下ででてくるコマンドの名前といい、ちょっと趣味悪い?とか思ってしまいます。

設定の仕方は、
1. dpkg-reconfigure exim4-config を実行してインストール時の処理をやり直す
か、
2. このファイルを編集してupdate-exim4.confを実行する
です。

普通に送受信するだけならどちらかのやり方だけで事足りますね。といっても結局同じことしてるんですが。
ユーザー毎の転送なんかは別で設定します。
もっと凝ったことをやりたい場合はちゃんとマニュアル読んで、設定ファイルを変更しましょう。設定とは違うけど、こんな懲り方も参考までに。

あとはaliasなんかも必要にあわせて設定します。これで完成。

Live HTTP Headers

Live HTTP Headersです。
FireFoxの拡張機能で、その名の通りHTTPヘッダーを見ることができます。

使い方は簡単で、ツールから選択するだけ。あとは起動以降のHTTPヘッダーを勝手に記録していってくれます。
ヘッダーを覗き見るツールとしては内部プロキシなんかが結構多いのかもしれませんが、ブラウザがFirefoxだけでいいならこれが一番簡単です。

まあ、普通のWebアプリケーションを開発するだけならあまり必要はないですが(せいぜいクッキー見るくらいかな)、HTTPの勉強をしたいかたはどうぞ。

前回のtcpdumpはトランスポート層(Transport Layer)のやりとりを見ることができて、今回はアプリケーション層(Application Layer)を見ることができるわけですね。すてき。
ということは、次はなにを見るのか、、ばればれですね。

水曜日, 6月 29, 2005

atomをRSSに変換

こんなページを見つけました。
atomのURLを送信するとRSSに変換してくれます。

これを使って、wget~なんていうのをcronに登録すればうちのサイトもRSSに対応だ!なんて思ってました。
用途は主にmixiで日記の更新が反映されないことだったんですが、じつはmixiがこっそりatomに対応していました。なんかタイミング悪いですね。
今までRSSリーダーで読んでくれてた人もこれで安心!なんていおうと思っていたのに。。。

なのでこの計画はお蔵入り、と思ってたら今度はmixiのバグか、更新は表示されるけどそのリンクが正しくない!
僕がRSSに対応するのが早いか、mixiがバグを直すのが先か、勝負ですね。。。負けたい。

tcpdumpでパケットを見る

tcpdumpです。
インターフェイスを指定して、そこを流れるパケットをキャプチャーすることができます。

これをファイルに保存しておいて、stringsを使って中身を見ることができます。
まあ、本気で解析するにはちょっと使いにくいツールかもしれませんが、どんな感じでデータがやりとりされているかイメージがわきます。

ついでに妄想も膨らんでしまうので大変です。

火曜日, 6月 28, 2005

Debian GNU/Linux で tmpfs を使おう

というわけでtmpfsです。
tmpfsとはなにかというと、メインメモリを使うファイルシステムです。RAMディスクなわけですよ。

なので速い!(はず)
頻繁に読み書きするようなファイル(で、しかも一時的なもの)はここにおいておくとよいですね。

tmpfsのすごいところは、実際のメモリ上のサイズは動的に変化することです。なので、どれくらいのファイルを置くために、どれだけのサイズをマウントしようかなんて気にしなくてもいいです。なんて親切なんだ! まさにシステムの鏡ですね。


Debianの場合だと、ぼーっと、「次へ」、「次へ!」、「次へ!!」なんてインストールすれば最初から利用できます。
/dev/shm がそう。ここをそのままディレクトリとして使ってもよいし、生のデバイスを使ってるみたいで気持ち悪い人は普通にマウントして使うことも出来ます。
僕の場合はなんか、ファイルがもうあったので、そして多少面倒な気持ちもなきにしもあらずだったのでマウントしたりせずにそのまま使ってます。

月曜日, 6月 27, 2005

info を使おう

sar を使おうの問題、コメントいただいたおかげですっきりしました。ありがとさん。
しかし、ひとつ問題が。。。

自分でも「一行で書こう!」と思った時にdateコマンドを調べたんですよね。
だから、コメント見て「?? yesterdayなんてオプションは記憶にないぞ!」とか思ったわけです。
実際、manをもう一度見返してみても載ってません。

そこでinfoの登場です。
ばっちりのってました。やられた。
infoは長くなるのでついつい敬遠してあんまり見たことなかったんですが、これからはちゃんと読みます。。。反省を込めて。愛はこもってません、あしからず。でもちょっとひきこもりかも。山篭りなんて健康になれそうでよいですね。コウモリにも会えそうだし。ヤモリやイモリも、、、こう、もり あがりにかけたところで終わっておきます。

木曜日, 6月 23, 2005

Debian GNU/Linux で sar を使う

コンピュータの負荷を知るために、今まで
0 10 * * * vmstat 3600 24
こんな感じでcronを使っていました。
sarとは、システムの統計情報を出力するコマンドです。vmstatの親戚だと思ったらいいです。実際、下の方法でインストールすると iostatや、mpstatといった、stat兄弟もインストールされます。

まあ、これで十分なところもあるんですが、プロセスが常駐してるのがうっとうしくなってきたのでsarを使うことにしました。
sarでは、プロセス、メモリ、ディスク、ネットワーク(ソケット)、デバイス、割り込み要求(IRQ)なんかの統計値が詳しく出力されます。
プロセスごと(子プロセスを含んだり、含まなかったりできる)や、インターフェイスごとにも出力できるので障害の調査にも使えます。


使いかたは、
まず apt で sysstat をインストール。
後は統計値を見たいときにsarを実行すればいいです。


僕は不精なので、
--------------------------------------------------------
#!/usr/bin/perl

use strict;
use warnings;

my $time = time - 86400;
my $day = ( localtime $time )[3];
my $filename = sprintf '/var/log/sysstat/sa%02d', $day;
print `sar -A -f $filename`;
--------------------------------------------------------
こんなスクリプトをcronに登録して、毎日メールで送ってもらってます。
できれば一行でcronに登録したかったけど良いやりかたが思い付かなかった。月をまたいだ昨日の日付がとりづらい。エレガントな方法求む!


でも、ほんとのところはたいして見てないです。
cactiのグラフを見てれば大体概要はつかめます。世の中グラフィカルでないと。
問題がありそうだったら、sarの出力を調整してじっくり見たりすればよいですね。

金曜日, 6月 17, 2005

Debian GNU/Linux 3.1 Sarge

ついにDebianの新しいバージョンがリリースされました。
当日は、「米国時間で今日だから。。。」とか思って5時、6時くらいにそわそわしてました。
で、「おぉ〜〜」となったわけです。めでたい。

で、それ以来セキュリティーアップデートのインデックスが壊れていたんですが、やっと直ったみたいです。というか、リリースされたばかりだったのでアップデートがなかっただけかも知れませんが。
これでaptですっきりできます。

木曜日, 6月 16, 2005

ムームードメイン

これまではドメインを取るときにはお名前.comを利用してきました。
もうひとつ欲しくなったので安いと評判のムームードメインを使ってみることにしました。

これがなかなかいい感じです。
まず、単純にひとつのドメインあたりのお金が安い。素晴らしいですね。
次に、お名前だと有料サービスのWHOIS代行が無料です。だいたいが、こんな手間のかからないサービスは無料にするべきでしょ。納得ですね。
細かいところでは、ネームサーバを無駄に2つも登録しなくていいところもいいです。主要なサービスを冗長化していないのにネームサーバを冗長化する意味があるのか。というか、強制するのは変かと。

あとは、コントロールパネルもお名前より使い易いです。というか、お名前のインターフェイスは確実に標準以下です。
今度の更新時にはkumicho.netもムームーに乗り換えようと思ってます。


実はGMOと資本関係があるみたいですね。お名前.comは大丈夫なんだろうか。

月曜日, 6月 13, 2005

さくらインターネット

家のPCを移そうと思って、さくらインターネットに申し込みをしていました。
で、今日、請求書がきました。ほんとに請求書だけ。いや、まあいいんですけど。愛想ないなあ。

これで僕もサーバーのオーナーです。いや、いままでもそうだったのだけど、なんとなく雰囲気が。

ところで、なかなか、いろいろわかりにくいところもありました。
申し込みの時に、支払いの方法を振り込みか引き落としかを選ぶんですが、なんと会員のページからはクレジットカードが使えました。最初から教えてくれ。僕、カード好きなんですよ。
とある理由でメインバンクを替えようと思っていたので、どちらにしようか結構悩みました。で、結局振り込みを選んで、さっきコンビニに払いに行ったらお金が足りなくて恥もかきました。
ついでに言うと、最初の申請だから”ただ”だと思ってたIPアドレスが有料でした。びっくりですね。これは僕の勘違いな気もするけど。

まあ、結論をいえば、カードで支払いができてよかったし、IPアドレスも申請通り16個取得できたのでよかった。なんだか丸く収まった感じです。

と、安心していたらあとでこんなことになってしまいました。

金曜日, 6月 03, 2005

perlIO

PerlIOを使ってみました。すごい便利。
と書いてみて、そうかな?って気がしてきました。どちらかというと、クールかも。

gzipで圧縮されたデータ($buff)があるときには、こんな感じで解凍できます。
--------------------------------------------------
open FH, '<:gzip', \$buff or die $!;
$content .= $_ while ;
close FH or die $!;
--------------------------------------------------
1行目では変数をファイルハンドルとして開いています。
2行目でファイルハンドルから読み出されるデータは解凍されています。
簡単に言うと、PerlIOを使うと入出力の際にフィルタを適用できるわけです。プログラムから見たファイルハンドルはフィルタをかぶった疑似ファイルハンドルなわけですから、奥にいるのが変数なんかでもいいわけですね。でも変態だったらちょっといやな感じです。いないか。

と、書いて気がついた。
だとすると、と<$fh>にはもう性能差はないのかも知れませんね。昔は"直接"と"間接"だったわけだけど、今は両方間接になったはずだし。

ざっと調べてみたところ、
1. 文字コードの変換系(Shift-JIS ←→ UTF-8や改行文字の変更、MIMEなど)
2. 暗号系(CBCやMD5など)
3. 圧縮系(gzipなど)
の分野のフィルタがあります。


本当は上の例みたいに使うつもりはなかったんですが、ソケットとgzipフィルタの相性が悪かったので変数を開き直すなんておかしなことをやってます。

ただ、使ってみて意外といい気がしました。
これはインターフェイスの統一ですね。
どれもデータを受け取って変換して出力するだけなのに、モジュールごとにメソッド名はきっと違うでしょう。これを覚える必要がないのがすばらしい。頭の容量少ないんですよね。


ちなみに最初に”使ってみた”とか書いてますが、意識して使ってみたというだけで、みんな知らないうちに使っているのだった。。。

日曜日, 5月 29, 2005

Transfer-Encoding の chunked

HTTPプロトコル(protocol)の話です。
たぶん、かなりマニアック。

HTTPのヘッダーには「Transfer-Encoding」というものがあります。
どうやってコンテンツ部分を転送するかを指定するものです。サーバー側の環境変数でいうと「HTTP_TE」です。
特に値が指定されていなければContent-Lengthの数バイトがコンテンツとして転送されますね。

この値が「chunked」のときにはちょっと変わっています。
1. 最初の行の値が16進数で表した、これに続くコンテンツのバイト数
2. 上のバイト数が0ならここでリクエストの応答は終わりです。
3. 上のバイト数分のコンテンツ
4. 1に戻る
みたいな感じなので、「0」だけの行が出てくるまで読み続けるわけですね。

動的なコンテンツの場合にはパートごとに分けて作れるので便利なわけです。
ソケットを使って自分で読み取るプログラムをPerlで書いてみました。

---------------------------------------------------------------------
sub get_content {

my $sock = shift or die;
my $debug = shift;

my $header = '';
my $content_length;
my $chunked;
while ( <$sock> ) {
warn $_ if $debug;
$header .= $_;
$content_length = $1 if m/Content-Length: (\d+)/;
$chunked = 1 if m/Transfer-Encoding: chunked/;
last if m/^\r\n$/;
}

my $content = '';
if ( $chunked ) {
while ( <$sock> ) {
warn $_ if $debug;
last if m/^\r\n$/;
s/\r\n//;
my $content_length = hex($_) or last;
my $buff;
read $sock, $buff, $content_length;
$content .= $buff;
}
}
elsif ( $content_length ) {
my $buff;
read $sock, $buff, $content_length;
$content .= $buff;
}
else { die $header }

return wantarray? ( $content, $header ): $content;
}
---------------------------------------------------------------------

まあ、たまにはこんなこともしてみます。

金曜日, 5月 27, 2005

dnscache (djbdns) をやめよう

うちではDNS(のキャッシュサーバー)としてdnscache(djbdns)をローカルで使っていました。
ネットワーク越しにISPのキャッシュサーバーを使うよりは早いはず、と思っていたんですね。

そこで実際に応答の速度を計ってみると、、、なんと、ローカルの方が遅い!
といっても、ほとんど変わらないんですけど。断然早いと思っていたのでショックでした。
わざわざ自分で用意して、高負荷時にはもっと遅くなる可能性もある。なんて馬鹿らしいと考えて使うの止めました。
前に書いた、pop3の話でもそうですけど、管理の手間は極力少なくするほうがいいですしね。

ただ、キャッシュへの毒入れ(Cache poisoning)については多少不安がありますが。

木曜日, 5月 26, 2005

無料のPOP3サーバー(サービスとして)

ずばり、Gmailです!
でもよく考えたらYahooとかもやってますね。

そもそもなんでこんなことを言い出したのかというと、うちにはPOPサーバーがないんです。
Debianではデフォルトでインストールされないんですよ。そのほうがいいんですけどね。
まあ、それでも困らなかったんです。だって、メールボックスにあるファイルを直接読んだらいいですから。
ただ、それだとPCが増えたときに困るのもわかっていました。なので定番のPOPサーバーを探してインストールしようとしてたんです。そして衝撃が!

Gmailを使えばいいんだ!!

まだ普通っぽいですか?
ここのミソは”POPだけ使う”ことです。つまり、送信するときには自分で用意したSMTPを使うし、受信するときもこれを使います。そして、aliasを使ってGmailに転送します。
こうすると相手にはGmailを使っていることがわからない。自前でメールアカウントも用意できない程管理能力がない(または、貧乏)などと気づかれない!
これは、結構、すごいソリューションじゃないでしょうか。

利点は、
1. 対外的には自前で管理しているように見える
2. 内部的にもメーラーのPOPサーバーの設定をちゃんと見るような人間以外には気づかれない
3. 運用のコストがかからない
4. 専用のコンピューターを用意する必要がない(専用には用意しなさそうだけど)
5. もしPOPサーバーがLANの外側にあるなら、サーバー側の帯域の効率があがる(朝のピーク時を気にしなくていいから)
6. ディスクが少なくてもいい
7. Gmailはアカウントごとに2GB以上(しかも増え続ける)
8. そして、利用者が増えても増設の心配をしなくていい
9. おまけにバックアップも自動

気になる点は、
1. 安心(必要なものは自分で用意するべきなんて人が結構いる)
 → Google以上の稼働率を実現する自信がありますか? 僕はないです。
2. コンプライアンス
 → 第三者に情報を提供しないとPrivacy Policyには書いてあります。ただ、これをもって個人情報保護法案での情報の保護になるかはあやしい。ここから漏れるとは思えないけど。
3. 商用利用可能なのか?
 → これはちょっとわからないですね。誰か教えてください。

くらいでしょうか。全然問題ないですね。
激安メールシステムのコンサルタントができそうです。

水曜日, 5月 25, 2005

Filesystem Hierarchy Standard (FHS) について

FHSとはFilesystem Hierarchy Standardの略でして、Unixとその仲間たちのディレクトリやファイルの構成について決めたものです。
僕も経験があるんですが、Linuxを初めて触ったときってWindowsとディレクトリの構成が違ってて戸惑うんですよね。

おんなじことがUnix同士でもおきていて、それでこんな取り決めができたみたいです。
おおまかにはこんな感じ。

/ (ルートディレクトリ。根っこ。ここを切り倒せば木は倒れるわけですね)
├ /bin (基本コマンド。これがないとファイルも見れない)
├ /boot (起動に必要なファイル。下手にいじると再インストール)
├ /dev (デバイスファイル。なんでもファイルなUnixの真骨頂)
├ /etc (設定ファイル。rootになってする作業のほとんどはここをいじること)
├ /home (ユーザーのホームディレクトリ。ユーザーはみんな引きこもりなのでここから出られません)
├ /lib (共有ライブラリ。/binや/sbinのライブラリ、他のプログラムは別の場所のを使う)
├ /mnt (一時的なマウントポイント。さんざん乗っておいて、うまくいったら捨てられる)
├ /opt (追加アプリケーション。rpmとかdebとか)
├ /proc (プロセス情報など - Linux固有。ほんとになんでもファイル)
├ /root (root用ホームディレクトリ。王様は高台に住んでるわけですね)
├ /sbin (システム管理用コマンドなど。王様の兵隊たち)
├ /tmp (一時的なファイル。暴れたい時にはここで)
├ /usr (各種プログラムなど。ユーザーが使うアプリケーションなんかはここに)
└ /var (変更されるデータ。朝おっきくて、昼は小さい、暗くなるとまた大きくなるものなーんだ? 答え:影 下ネタ!?)

ほんとはもっと細かく決まってます。知りたい方はここのリンクからどうぞ。

まあ、これだけ分かればなんとなくすっきりしませんか?

火曜日, 5月 24, 2005

Debian GNU/Linux でSSLを利用する

SSLの設定です。
といっても openssl + Apache の場合ですのであしからず。

まずは乱数の種を作ります。
コンピュータでは完全な乱数(random)を作るのはなかなか難しいんですよね。それで乱数系列と同じ特性をもつ疑似乱数(pseudo-random)系列を生成するアルゴリズム(random number generator)が用意されてます。
ただ、アルゴリズムなので入力が同じなら当然結果も同じです。初期値を変えないと毎回同じ疑似乱数列が出力されてしまうわけですね。
そこで、種(seed)を用意するわけです。これは基本的になんでもいいんですが、ここでは/usr/binにあるファイル名を使います。
------------------------------------------------------
# openssl md5 /usr/bin/* > rand.dat
------------------------------------------------------
これで/usr/bin以下のファイル名とそのハッシュ値がrand.datに書き込まれます。

これを使って乱数を発生させて秘密鍵を作ります。
------------------------------------------------------
# openssl genrsa -rand rand.dat -des3 1024 > key.pem
------------------------------------------------------
"1024"は鍵の長さです。"-des3"は秘密鍵を暗号化する方法にTriple-DESを使うという意味です。

今度は秘密鍵を使ってCSR(署名要求 - Certificate Signing Request -)を作成します。しつこいですね。一度で全部作れよ!とか思います。ベルトコンベアなイメージです。
------------------------------------------------------
# openssl req -new -key key.pem -out csr.pem
------------------------------------------------------
国名(JP)、都道府県(Tokyo)、市区町村(Taito)、会社(*** Ltd.)、部署(system-1)を入力します。common nameにはSSLを使うドメインを入力します。あとの3つは何も入れなくてもいいです。
括弧の中は僕の使ったものです。部署は数字を入れておくと、あとでWebサーバを分散させるときに便利です。

あと、common nameにはワイルドカードが使える場合があります。
*.kumicho.net
のようなcommon nameにしておくとa.kumicho.netでもb.kumicho.netでも使える、といった感じです。便利ですね。
ただ、クライアントによっては「"*"と"a"が一致しない」なんて文句をいう場合があります。LDAPのクライアントはそう言ってました。IEやFirefoxは大丈夫みたいです。
あと、CAcertでは文句を言われなかったけど、Verisignなんかもそうなのかは知りません。

といった感じで作ったCSRを認証局に送れば証明書が送られてきます。証明書をcert.pemなんて名前にして保存。
Apacheの設定ファイルに
-------- sites-available/blogger --------------------
SSLCertificateKeyFile ssl/key.pem
SSLCertificateFile ssl/cert.pem
-----------------------------------------------------
なんて書けば使えるようになります。
起動時のパスフレーズの入力を省略したい方はこちら。

ちなみに複数の証明書を使いたい場合には名前ベースではなく、IPベースのバーチャルホストを使わないといけません。
ApacheがSSLを使って接続するためには、どの証明書を使うか知るために名前を知らないといけない。けれど、そのHTTPリクエストの前にSSLでの接続が成立していなくてはいけない、なんてことが起こるからです。卵が先か、ニワトリが先か。。。

月曜日, 5月 23, 2005

Bookmarks Synchronizer を使う(FirefoxのExtension)

Bookmarks Synchronizerを使いましょう!
Web DAVの設定はこのためと言っても過言でないです。無茶苦茶便利です。

このExtensionは名前のとおり、ブックマークを同期させます。Firefoxを使っていればどこでも同じブックマークが使えるだけでなく、どこで更新してもそれが共有されます。
自宅で「このサイトは便利だなあ」とブックマークしておけば会社ですぐ見られるわけです。すばらしい。

使い方は、まずFirefox Extensionsのページに行きます。
BookmarksのカテゴリからBookmarks Synchronizerを選択してインストール。
設定を開いたら、HTTPSにチェックを入れて、サーバーの設定を書いていきます。
下にあるチェックボックスは最後にはチェックを入れず、上の3つはチェックするのがよいかと。

日曜日, 5月 22, 2005

Debian GNU/Linux で Web DAV を使う

WebDAV(Web-based Distributed Authoring and Versioning)を導入しました。
要はWeb(HTTP)を利用したファイルの共有です。実際にはHTTPの拡張として実装されています。

すでにApacheが起動していればほとんど手間がかかりません。

1./etc/apache2/mods-enabled/ にシンボリックリンクを作ってWebDAVの機能を取り込みます。これには専用のコマンドもあります。
---------------------------------------------------------------------------
# ln -s /etc/apache2/mods-available/dav.load /etc/apache2/mods-enabled/
# ln -s /etc/apache2/mods-available/dav_fs.conf /etc/apache2/mods-enabled/
# ln -s /etc/apache2/mods-available/dav_fs.load /etc/apache2/mods-enabled/
---------------------------------------------------------------------------
または
---------------------------------------------------------------------------
# a2enmod dav
---------------------------------------------------------------------------

2.WebDAVを使いたいDirectoryで機能を有効にします。下の"DAV On"がそうです。
-------- /etc/apache2/sites-available/default -----------------------------

SSLRequireSSL
DAV On
AuthName "Web DAV Area"
AuthType Basic
AuthLDAPURL ldap://ldap.kumicho.net/dc=kumicho,dc=net?cn
require valid-user

---------------------------------------------------------------------------

3.ついでに認証も付け加えます。実際にはほぼ必須です。

4.忘れがちなのがWebDAVで使うディレクトリに書き込み権限を与えることです。他のプログラムから操作する必要がなければ所有者を変えてしまいましょう。
---------------------------------------------------------------------------
# chown www-data /var/www/dav/
# chgrp www-data /var/www/dav/
---------------------------------------------------------------------------

5.最後にApacheを再起動します。
---------------------------------------------------------------------------
# /etc/init.d/apache2 restart
---------------------------------------------------------------------------

これでサーバーの設定は終わりです。
一応テストしたいときは、IEを開いて「ファイル」→「開く」とたどります。
「Webフォルダとして開く」にチェックを入れてURLを入力します。
あとは普通のフォルダのように利用できます。

木曜日, 5月 19, 2005

秘密鍵のパスフレーズ(passphrase)をなくそう

なんか、今更な感もありますが。

ApacheでSSLを使うときなんかはパスフレーズを消しておかないと再起動のたびに入力を求められて大変です。うちみたいに「いろはにほへとちりぬるを・・・」なんてパスフレーズにすると100回くらいキーを打たないといけません。再起動恐怖症になってしまいます。嘘ですが。
なので、普通はパスフレーズを空にして使います。

秘密鍵がkey.pemだとすると、
openssl rsa -in key.pem -out keynopass.pem
とするといいです。パスフレーズを聞かれるので入力すればパスフレーズなしの鍵ができます。
あとはkeynopass.pemの方を鍵として使うようにすればいいです。

火曜日, 5月 17, 2005

Debian の Exim4 でエイリアス(alias)の設定

たいしたことじゃないんですが、わかるまで結構時間がかかって悔しかったので。

うちのドメイン、kumicho.netに存在しないユーザー宛てのメールを僕が受け取る方法です。
/etc/aliases に
受け取りたい名前: 受け取るユーザー
を書きます。それだけ。

root宛のものなんかが僕のメールボックスにくるので、設定があるはずだと思って/etc/exim4のなかでgrep root しても見つからない。なんでだ、どうして?としばらく悩みました。まさかメールの設定の外にあるとは。。。sendmail互換なのか、それとも全然別の理由なのか、どちらにしても迷惑な話です。僕が睡眠不足になり、さらにうつ病になり、最後には仕事をやめて田舎で療養なんてことになったらDebianのせいですね。訴えてやる!

ちなみに、コンピュータに存在するユーザーがメールを転送するときには、ホームディレクトリの.forwardファイルを使います。
先頭の行に
# Exim filter
と書いて始めます。
次に
deliver gulliver@lilliput.fict.example
とか書くとそのあて先に転送できます。
このままだとローカルにメールが残らないので、ローカルのメールボックスに残す場合には
unseen deliver gulliver@lilliput.fict.example
とunseenをつけて安心です。ぷぷっ
他にもpipeコマンドでスクリプトに処理させることもできます。メールでブログに投稿したり、写真を掲載できるのはこういう機能を使ってるからなんですね、納得。

月曜日, 5月 16, 2005

Debian GNU/Linux でLDAPを使う

うちのサイトでもほんのちょっとだけパスワードかけたりしてるんですが、LDAPを使うように変更しました。
ちなみにLDAPはLightweight Directory Access Protocolの略です。名前の通り、軽量な、ディレクトリサービスにアクセスするためのプロトコルなんですね。

まず、いつものようにaptでslapd(これがLDAPサーバ)をインストールします。ついでにldap-utilsもインストールします。こっちはメンテナンスのために必要です。
Debianではインストール時に必要なことをインストーラーが聞いてきます。便利ですね。
最初にドメインを聞かれます。たとえばkumicho.netなんかにします。次に組織名を聞かれます。今回はWebのアクセス制御に使うのでWWW Usersなんかにします。このあたり、動作に問題はないのですが結構悩みます。このユーザーグループは組織(LDIFではoで表される)にすべきなのか組織単位(=ou)にするべきなのか。まあ、とりあえずあとでも変更できるので進めます。
最後に管理者用のパスワードを聞かれます。忘れなさそうな言葉を書いておきます。
これでインストールは終了。

次に情報を入力します。まず、こんなファイルを作ります。
-------- user.ldif --------
# user1, kumicho.net
dn: cn=user1,dc=kumicho,dc=net
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: user1
description: ここ説明です
userPassword: ****************
---------------------------
#で始まってる行はコメントです。
最初のdnっていうのは識別名。全データで一意である必要があります。
次の二つは、このデータオブジェクトのクラスを書きます。ここで選んだクラスによって使える属性が決まります。今回は認証に使うだけなので上の二つにしてあります。社員データベースを構築したい場合なんかだと、inetOrgPersonなんかを使うといいです。名前や住所、電話番号はもちろん、写真や認証鍵も管理できます。作るのが大変ですけどね。
次はcn(コモンネーム)、名前です。
次は説明なんですが、ここに書いてるように日本語も使えます。ただし、UTF-8じゃないといけません。
最後は見ての通り、パスワードです。隠してます。いやん。
もっと詳しく知りたいときは、/etc/ldap/schema以下のファイルを見ましょう。

で、こういうファイルを作ったら、
ldapadd -x -f user.ldif -D "cn=admin,dc=kumicho,dc=net" -W
こんな感じで入力します。パスワードを聞かれるので答えてくださいね。
ldapsearch -x -D "cn=admin,dc=kumicho,dc=net" -b "dc=kumicho,dc=net" -W
これでちゃんと入力されているか確認できます。
簡単に説明すると、-xは単純な認証を使う、-fは入力ファイル、-Dは操作を行う識別名、-bは検索のベース、-Wはパスワードの入力を促します。

うまくいったら、後はApacheを設定します。
認証をかけたいファイルやディレクトリの中で、
------------------------
AuthName "Private Area"
AuthType Basic
AuthLDAPURL ldap://ldap.kumicho.net/dc=kumicho,dc=net?cn
require valid-user
------------------------
こんな風に書きます。ファイルの指定の変わりにURLを指定するだけなので簡単ですね。?の前の部分は検索のベース、そのあとはIDに使う属性名です。デフォルトではuidという属性が使われますが、今回は登録していないのでcnを使います。

Apacheを再起動すればldapとの連携が使えるようになります。

あとは、ネットワークを超えて使用できるようにTLSの設定やIPアドレスによる制限をかけないといけないんですが、長くなるのでまた今度。
というか、今の使い方では必要ないからしないかも。普段ネットワークを越えて使わない→TLSいらない、WebはIPによる制限かけてない→総当り攻撃だったら制限かけてもWebを通してできる、ってことで。あ、でもWeb通して変更はできないし、slapdに脆弱性があること考えたらやっぱり必要か。。。

土曜日, 4月 30, 2005

仮想端末の切り替え方

Linuxには仮想端末と呼ばれるものがあります。
といってもとても身近なものです。普通に起動してpsなんかを使ってプロセスを確認すると、うちではtty1からtty6までが確認できます。これのこと。
で、僕らは普段、知らないうちにこのうちのひとつを端末(入出力装置)として使っているわけですね。知って使ってる人もいるかとは思いますが、いちいちそんな事考えてたら気が狂いそうです。えらいです。

ひとつを使ってるということは、他も使えるんじゃないの?って疑問が起こります。そして使えます。
Ctl+Alt+F?(F1~F6)を押すと、数字に対応した端末に切り替わります。目の前にあるキーボードや画面が直接端末としてプロセッサー(も、OSで抽象化されているけど)に接続しているわけではないんですね。プロセッサーから見て端末の役割をこなしてるのはこいつら。なので仮想端末。

これを知っていると、プログラムが暴走した時なんかに役に立ちます。別の端末に切り替えて、暴走しているプロセスを殺したりできるわけです。ああ、また再起動。。。なんて考えなくてもいいわけですね。
僕がよく使うのは、Xがちゃんと起動しないときに切り替えて、戻ってくると直ってたりします。おかしいのやらおかしくないのやらわかりません。駄々こねないでよ、って感じです。
Xを起動するときにはstartxを使って自分で立ち上げるのが好みなんですが、こういうときにはXはCtl+Alt+F7に割り当てられています。要注意ですね。適当に押してりゃ気づきますけど。
あとは、いくつかのホストに同時に接続したりするときも便利です。X使ってるときならあまり関係ないけど、たまに役に立ちます。

ちなみにttyはTele-TYpewriterの略らしい。すごく近くにいるように思うけれども、二人(端末とプロセッサー)の間にはきっちりと距離があるわけですね。親しき中にも礼儀あり、といったところでしょうか。

火曜日, 4月 26, 2005

Debian GNU/Linux で awstats を使う

awstatsだと検索語がちゃんと日本語で表示されると聞いて、早速インストールしてみました。

使ってみると、訪問数・ページ数・(リクエストの)件数などがそれぞれわかるところがいい感じ。analogはページ数・件数だけだからちょっと性能アップです。ロボットやスパムを別に数えているのもいいですね。
やっぱり、検索語が日本語で表示されるのがすごくいいです。そして、今回これでわかったこと。
意外にも検索キーフレーズのトップは「吉原炎上」でした。。。微妙な気分です。少なくとも僕が狙ってたキーワードじゃない。勧められて見たんですよ。人の力って大切ですね。

ちなみにインストールはすごく簡単でした。
1. いつものようにaptでawstatsをインストール
2. LogFile="/var/log/apache/access.log"をLogFile="/var/log/apache2/access.log"に変更(うちはapache2を使ってるので)
3. LogFormat=4をLogFormat=1に変更(combinedなログに対応)
4. SiteDomain=""をSiteDomain="blogger.kumicho.net"に変更(このドメイン指定は必須)
5. awstatsのドキュメントルートで「ln -s /usr/share/awstats/icon/ awstats-icon」を実行(アイコンへのパスを通します)
6. www-dataをadmグループに追加します。rootで「adduser www-data adm」を実行するとよいです。(apacheのログを見るために必要)

ここ、すごく悩ましいんですよね。apacheのログをどうやってawstatsに見せるか。
cron.dにあるawstatsをrootで実行するのはさすがに嫌だし。残るは誰でもログを見られるようにするか、apacheの権限を強めるか。
結局、いくつかのログを見ることができるadmグループに加えて権限を強くしました。ちょっと消化不良。余談でした。

あとはawstats.plをブラウザで開けばオッケー。
これだけやったら十分見れるものになりました。
なかなかいい眺めなので、みなさんもどうぞ。

後日談:
LogFile="/var/log/apache2/access.log"
を
LogFile="cat /var/log/apache2/access.log.1 /var/log/apache2/access.log |"
に変更しました。
logrotateによる競合条件を避けるためです。
こういう細かい部分、結構気になるんですよね。