2005/07/31(日)名作関係のサーバ設定

2005/07/30 27:00 PC(Linux)
・dyndnsでmeisaku.mine.nuを取得。
・DiCEにmeisaku.mine.nuの更新を追加。
・/etc/apache/httpd.conf変更
# diff httpd.conf.050725 httpd.conf
1049a1050,1057
> </VirtualHost>
>
> #add 05/07/25
> <VirtualHost *>
>   ServerAdmin <a HREF="mailto:urara@dd.iij4u.or.jp">urara@dd.iij4u.or.jp</a>
>       DocumentRoot /home/www-meisaku
>       ServerName meisaku.mine.nu
>       ServerAlias meisaku.mine.nu *.meisaku.mine.nu
・/etc/proftpd.confにPassive設定追加
PassivePorts ***** *****
・########ユーザを作る。パスワード設定する。
・シェル変更
chsh /bin/false ########
・iptables変更
# iptables -A INPUT -i ppp0 -p tcp --dport *****:***** -j ACCEPT
########はユーザ名。*****は開始ポート終了ポート。iptablesは起動スクリプトには追記してないので、再起動すると吹っ飛ぶ。暫定なのでこれでいい。

2005/07/30(土)設定失敗(hosts.allow)

2005/07/30 23:00 PC(Linux)
先日の記事でhosts.allowでアクセス制限をかけた記事を書いたが、これが2重ミスだった。
ftpd jp
sshd jp
の意図は「sshdとftpは国内からのアクセスのみ通す」だが、これは間違い。これを実現するには、
ftpd .jp
sshd .jp
とするのが正しかったようだ。

何で気づかなかったかというとこれまたミスで、グローバル側からftpでのログインが通るから設定OKと判断したのだった。hostsの設定は「daemon名」に対応するのだからproftpdでやってるうちの鯖では効かないのが当たり前。結局、sshはどこからもアクセスできず、ftpは以前と変わらない状態になっていたようだ。酷い話。

最終的にはこう。
proftpd .jp
sshd .jp

2005/06/18(土)X をport forwardingするには

2005/06/18 23:00 PC(Linux)
ホスト側のsshd_configに、
X11Forwarding yes
の記述があればいい。設定変更の際はsshdを再起動するのを忘れずに……
あとはssh -Xで渡してけば通るはず。

中継点には設定してある必要ないんじゃないかなと思うのだけど未確認。いや手間がね。

2005/06/18(土)アタックがウザいので

2005/06/18 22:00 PC(Linux)
auth.logに
Jun 18 21:39:16 debian sshd[15732]: Failed password for root from 68.84.***.*** port 57445 ssh2
が延々来てうるさい。発信元は悪名高い(?)nj.comcast.comドメイン。こういうのってIP晒しでもいい気はするのだけど。で他にmysqlとかmailとかユーザ名色々叩いてるようだ。一応それなりには締めてあるので、そう易々と突破されることはないはずだが、LANコネクタの点滅が気になる。

止めるポイントは色々あるのだけど、とりあえず根本をちょっといじってみようってことで(時間もないし)hosts.allowでなんとかならないかなとやってみた。
ftpd: jp
sshd: jp
と修正。一応止んだらしい。sshdはiptables使っててもtcp wrapper効くんだよな。再起動とかは確か要らなかったはず。んー、tcpwrapperが止めたログってどこ行くんだろうか。知識が空きっ歯過ぎです。アクセス制御関連の知識を網羅してる本が欲しいやね。

そういやiptablesって未だにわかりやすい解説無いのかな。エラーが出る質のものではないので今ひとつ日記記事だと信用ならないというか……

2005/06/11(土)longhaulでの周波数調整

2005/06/11 21:00 PC(Linux)
VIA C3 + longhaulでの周波数調整。

めんどくさいので簡易メモ。

とりあえずカーネル構築時に、CPU関係のオプションをいれとけば調整可能になるはず。

/sys/devices/system/cpu/cpu0/cpufreq/がインターフェース。
#echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
とかで、最低周波数になる(C3 800MHzの場合,400MHz)。

動的周波数変更は忘れた…… userspace???

元に戻すには、powersaveをperformanceに書き変える。

なお、
#cat /proc/cpuinfo
でも確認可。

2005/05/03(火)ハードウェアモニタ

2005/05/02 25:00 PC(Linux)
HDDが熱暴走に類似した症状を呈したので、今後が不安。

ハードウェアモニタを導入し、熱くなってきたらファンの回転を上げるという対処療法スクリプトを使って様子を見てみることにする。

[smartmontools]
すでにsmartsuiteというソフトが入っていて、
#smartctl /dev/hda
なんかでステータスが見られるのだが、温度に関しては87万度とか異常な値が出ている。調べてみると、smartsuiteはすでにメンテナンスされておらず、smartctlはsmartmontoolsというソフトに受け継がれたらしい。

smartmontoolsをインストールする。
smartmontoolsはtesting以降じゃないと無いので、
# apt-get install smartmontools/testing

# smartctl -A /dev/hda |grep -i temp
ほい正常動作。

[lm-sensors]
kernelが2.6系なので、testingじゃないとダメ。
# apt-get install lm-sensors/testing sysvinit/testing coreutils/testing libacl1/testing libattr1/testing
依存で引っかかると、
Sorry, but the following packages have unmet dependencies
などのメッセージが出る。依存関係は1つ1つで見てくのが普通? perlとlibc以外はこのやり方で大騒動は起こらないんだろうけど。今回は手動で全部見た。

さて入ったので、
# sensors-detect
で、使われているチップを見る。Ez!goはWinbondのW83627HFで確定(この後蓋開けて基盤上でも確認)。
モジュールがちゃんとロードされていれば、
# sensors
で見られるはずなのだが……
sensorが見つからないと怒られる。

カーネルフォルダに戻ってあれこれモジュールをコンパイル->ロードしてみる。
i2c-isa, i2c-810, i2c-algobit, i2c-sensor, i2c-chardev, w83781d(W83627HF互換)
とやってみたのだが、センサーはちゃんと見つけているようではあるものの
 "ERROR: Can't get IN0 data!"
 ……
と出てデータが出てこない。

色々調べて、最近のカーネルはW83627HF系の専用ドライバが出ているというのでカーネルアップ決断。
$ cd ~/kernel
$ wget     <a HREF="http://www.asahi-net.lkams.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.8.tar.gz" TARGET=_top>http://www.asahi-net.lkams.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.8.tar.gz</a>
$ tar -xvzf linux-2.6.11.8.tar.gz
$ cd linux-2.6.11.8
$ make menuconfig
で上記のもの(ただしw83781d->w83627hf)をモジュールではなくカーネル組み込みでごりごり追加し、
# make V=0
# make install
あーもう適当だ。ちょっとテンパってたのでカーネルの保存とか考えてないね。
再起動
# reboot

# sensors
w83627hf-isa-0290
Adapter: ISA adapter
VCore 1:   +1.50 V  (min =  +0.00 V, max =  +0.00 V)
VCore 2:   +1.28 V  (min =  +0.00 V, max =  +0.00 V)
+3.3V:     +3.28 V  (min =  +3.14 V, max =  +3.47 V)
……
ちゃんと表示されました! やった。

さらに、/sys/devices/platform/i2c-2/2-0290/の中を書き換えることでいくらかのコントロールが出来る。
echo 255 > /sys/devices/platform/i2c-2/2-0290/pwm1
でファンの回転がアップ。echoの値が2で通常。0でストップ。ただし、このマシンはBIOSでファン制御が強いのか20secくらいですぐ元に戻る。

で、やりたいことはHDDの温度が高いときにファンの回転をアップさせることなのでcron用の制御スクリプトを書く。最近はシェルスクリプトで失敗することが多いので、もうRubyでいいや。

/etc/cron.hourly/fancontrol_forHDD.rb
を作成し、
#! /usr/bin/ruby

$MAXTEMP=40

temp = `/usr/sbin/smartctl -A /dev/hda | grep -i temp`
temp = temp[/\s+(\d+)\s+\(Lifetime/, 1]

if $MAXTEMP < temp.to_i then
  (1..600).each {
    `echo 255 > /sys/devices/platform/i2c-2/2-0290/pwm1`
    sleep 1
        }
end
とした。40度を超えていたら10分回転アップを打ち続ける。cron.dの中がなんかちゃんと動いてないんだよな。ということでhourlyにしました。

さてこれでちゃんと動くかテストです。

[本家]
http://www2.lm-sensors.nu/~lm78/

2005/04/27(水)作業ログの取り方

2005/04/27 21:00 PC(Linux)
今の私の基本的なunix系OSのいじり方は、Windowsからputtyを使っての操作。
それを前提に、なんか色々なログ取り方法があるらしいので調べてみた。

・puttyのログ機能を使う
 今まではこれ。シェルによっては空白が飛んだり、テキストファイラーの画面は崩れるが、設定さえしておけば勝手に取ってくれるしファイル名にホストや時間もつけられるので管理が楽。

・screenのログ機能を使う
 screenメインで作業する人はこっちなのかな。screenは使わないので分からない。

・scriptコマンド
 ほとんどのUnix系OSにデフォルトで入っている。使い勝手は悪くないのだが、吐いたファイルにエスケープシーケンスなども混ざってしまうのでちょっと掃除するのが面倒。

・ttyrec
 scriptコマンドの上位版という感じなのだが、NetHackやFDの画面もカラーごと記録できる。しかし、記録ファイルは視認性がないし、再生の使い勝手は今ひとつ。停止、巻き戻し、無作業部ジャンプとかないとログという意味ではきつそう。遊んだり見せびらかす分には面白い。今度再生ソフトでも作るかね?

・vnc2swfとかx11rec
 Xのウィンドウを録画する。x11recなんかは意外とサイズ小(アニメgif)。

・劇場版 ディスプレイキャプチャー あれ
 Windowsのウィンドウを録画する。多分サイズでかいだろうなあ?(MPEG1?)

結論としては、やっぱりputtyのままひっぱることにした。ttyrec使ってみたけれども、まあ楽しいのだが作業ログとしてはいまいち。

#050503追記 前言撤回。puttyのログは相当化ける。これではちょっと使い物にならない。カットアンドペーストで頑張るか……
 
OK キャンセル 確認 その他