ルーターのフィルタリングログ(2001/06/17〜2001/06/24)
2001/06/18 06:53:05: PP[01] Rejected at IN(99) filter: TCP 203.151.217.27:2618 > 202.212.91.232:3389 2001/06/20 10:29:57: PP[01] Rejected at IN(99) filter: TCP 211.108.78.8:57361 > 202.229.255.218:8080 2001/06/20 17:57:23: PP[01] Rejected at IN(99) filter: UDP 210.160.144.30:137 > 202.229.255.218:137 2001/06/20 21:06:48: PP[01] Rejected at IN(99) filter: TCP 61.175.141.54:1539 > 202.229.255.218:1080 2001/06/20 21:06:51: PP[01] Rejected at IN(99) filter: TCP 61.175.141.54:1538 > 202.229.255.218:8080
2001/06/12 12:15:45: PP[01] Rejected at IN(99) filter: UDP 202.186.*.*:137 > 202.212.*.*:137 2001/06/13 10:12:43: PP[01] Rejected at IN(99) filter: TCP 210.73.*.*:4843 > 202.212.*.*:8080 2001/06/13 23:43:17: PP[01] Rejected at IN(99) filter: UDP 202.109.*.*:137 > 202.212.*.*:137アクセス元は一番上はマレーシア、下二つは中国(しかも一番下のはネットカフェっぽい)のようだ。ターゲットとなったんは 137/UDP → NETBIOS Name Service(Windowsネットワークの一部)、8080/TCP → WWW caching service(Webプロクシ)。ま、良くありげなパターンかな。
○Linux kernel 2.4.2 → 2.4.4
まず前準備。今のカーネルソースツリーをまるごとリネーム。そして、ダウンしてきたアーカイブを解凍。
# su
$ cd /usr/src
$ mv linux linux-2.4.2 # バージョンに合わせて変える
$ tar xvfI linux-2.4.4.tar.bz2
解凍が済んだら、カーネル設定。コンソールからなら xconfig を指定して X 画面上で設定するのが分かりやすくていいけどリモートログインなんで menuconfig を使う。
$ cd linux $ make menuconfig項目を適宜変更。今回はこのように変更。
Processor type and features + Processor family --> K6/K6-II/K6-III + Symmetric multi-processing support --> N General setup + EISA support --> Y + Advanced Power Management BIOS support --> M ATA/IDE/MFM/RLL support + IDE, ATA and ATAPI Block devices + Generic PCI bus-master DMA support --> Y + Use PCI DMA by default when available --> Y SCSI support --> N Network device support + Ethernet (10 or 100Mbit) + DECchip Tulip (dc21x4x) PCI support --> M + EtherExpressPro/100 support --> N + PPP (point-to-point protocol) support --> M + PPP Deflate compression --> M + PCMCIA network device support --> N Character devices + /dev/agpgart (AGP Support) --> N + Direct Rendering Manager (XFree86 DRI support) --> N File systems + Microsoft Joliet CDROM extensions --> Y + Network File Systems + NFS file system support --> N + NFS server support --> N + SMB file system support --> M + Native Language Support + Japanese charsets (Shift-JIS, EUC-JP) --> M Sound + Creative Ensoniq AudioPCI 97 (ES1371) --> N + OSS sound modules --> M + 100% Sound Blaster compatibles --> M + AWE32 synth --> M設定を保存してコンフィグを完了。この後忘れずに依存関係のチェックとお掃除をしないとね。
$ make dep
$ make clean # なくてもいい(確か)
さ、いよいよ本番カーネルイメージのコンパイル。
$ make bzImageん?何やらエラーが。PCMCIAのネットワークデバイスのオブジェクトがない、とか言ってはる。あの〜、コンフィグで使わない設定にしたのですけど。よく分からんのでコンフィグでモジュールを組み込む設定に戻して再コンパイル。今度はOK!いつものことだけど、このステップは時間がかかる。マシンが非力ってのもあるけど、のんびり待ちましょうぞ。(ちなみに今回は20分弱)
$ make bzliloよし出来た。次にモジュールのコンパイル&インスト。これは3分少々。
$ make modules $ make modules_installこれで全て終わり。再起動してエラーがないかチェック。ログを見ると少しワーニングが吐かれてるけど、動作上問題ないから今のところはこれで良しでしょう、うん。
まずはアカウント作り。これはいたって簡単だね。
$ /usr/sbin/useradd name $ passwd name次に qmail のユーザー設定ファイルを編集して転送の設定をする。
$ su name # cd ~ # vi .qmail ----- FileName .qmail ----- ./Maildir/ # 一応ローカルのメールボックスにも保存 &phsname@xxx.em.nttpnet.ne.jp # 転送設定。&の後に転送先アドレス ------ end of .qmail ------あとは発信を行う設定。これには kermit を使ってモデムに対してATコマンドを入力して行う。コマンドはファイルに書いておきそれを読みこんで実行。
----- FileName dial ----- set modem type rockwell-v34 set line /dev/ttyS1 set speed 57600 set flow RTS/CTS set carrier-watch off # ここまでモデム初期設定。/dev/ttyS1(COM2)を使用 output AT#CLS=8#VRN=0#VBT=5 \13\10 # ボイスモードに設定 output ATDT070xxxxxxxx# \13\10 # ダイアル開始 input 5 VCON if failure goto NO_VCON # 5秒待機後、リザルトが VCON か? input 6 b if success goto BUSY # 6秒待機後、リザルトが BUSY か? output AT#VTS=5\13\10 # DTMF で「5」を送出 input 1 OK input 3 5 #「5」がプッシュされたか? if success echo \10*** Done *** goto FINISH # 以後、終了処理 hangup exit 1 \10*** No VCON *** :BUSY hangup exit 1 \10*** Busy *** :FINISH hangup quit ------ end of dial ------ ----- FileName notify ----- #! /bin/sh kermit dial > notify.log # 結果をログファイルに落としておく ------ end of notify ------ # chmod 744 notify最初、BUSYの時やなんかに再実行しようかな〜とか思ってこんな感じで作ったんけど、結局ややこしくなってかえって問題が増えるだろうということで、もっと単純に ATD でダイアル、一定時間 wait してハングアップって具合でも問題なさそう。あとは .qmail にこれを実行するように追加。
----- FileName .qmail ----- ./Maildir/ &phsname@xxx.em.nttpnet.ne.jp | ./notify # | に続けて実行ファイルを指定 ------ end of .qmail ------試しに notify を実行してみると、ありょ、上手くいかない。原因は /dev/ttyS1 にアクセス権がないらしい。/dev/ttyS1、kermit の属性をチェックして見よう。
# ls -l /dev/ttyS1 /usr/bin/kermit crw-rw---- 1 root uucp 4, 65 4月 27 21:08 /dev/ttyS1 -rwxr-xr-x 1 root uucp 1503024 1月 14 2000 /usr/bin/kermitなるほど。両方とも uucpグループに属してるから、kermit を実行時にグループIDをセットするようにすればOKかな。
# su $ chmod 2755 /usr/bin/kermit $ ls -l /usr/bin/kermit -rwxr-sr-x 1 root uucp 1503024 1月 14 2000 /usr/bin/kermitこれで無事全ての設定が完了〜〜!あとはPHS側のアドレス帳に番号を登録しておいて着信時に名前(適当に「EM着信」のような)がでるようにすれば完璧。普通の電話との区別もサブアドレスがあるから完璧。ISDN + PHS だからこぞ出きる芸当なのさ〜♪
あと、テストでメールを投げてるときにタイミングが悪くてモデムの電源が切れてるときに実行されて(当然 notify を実行するときに固まる)メールがキューに溜まったままになったことがある。とりあえず再送を試みてみる。再送は qmail-send に ALRMシグナルを送ればよいらしい。キューに残ってるかどうか確認するには qmail-qstat や qmail-qread を使う。
$ ps ax | grep qmail-send 6796 pts/0 S 0:00 qmail-send # qmail-send の pid(プロセスID)を確認 7276 pts/0 S 0:00 grep qmail-send $ kill -ALRM 6796 $ /var/qmail/bin/qmail-qstat messages in queue: 0 # キューは空 messages in queue but not yet preprocessed: 0これでメッセージが再送されればいいんだけど、たまにどうやっても残るときがある。そういう場合は強制的に削除する。
$ /sbin/service qmail stop # qmail をとめる $ grep -lr '@' /var/qmail/queue/mess /var/qmail/queue/mess/xx/zzzz → /var/qmail/queue/mess 以下に残っているファイルを確認 $ rm /var/qmail/queue/mess/xx/zzzz # ファイルを削除。念の為中身はチェックしたほうがいいかも本当はよろしくないのかもしれないけど、調べても「それらしき」方法が見つからないんよ。誰か知ってたら教えてちょ…
○Squid 2.3 STABLE 4 → 2.4 STABLE 1
こういうアップデートをする時に厄介なのがサーバーにインストールされてるパスとオリジナルソースのデフォルトパスが違う場合。単純に違うだけならいいんだけど、ファイルの配置構造(?)まで違うことがある。これはRPMパッケージでインストールしたものを使っていた時になる可能性が高い。というわけで、今回もその典型的なパターン。今後のことを考えるとどちらに合わせるのがいいのか悩むけど、面倒なのでソースの方にした。まずは解凍&お決まりの文句。
# tar xvzf squid-2.4.STABLE1-src.tar.gz # cd squid-2.4.STABLE1 # ./configure # make # su $ make installこれでデフォルトの /usr/local/squid 以下にインストールされる。インスト先を指定するときには configure --prefix=/usr/hoge のようにすればOK。次に /usr/local/squid/etc/squid.conf を編集。キャッシュディレクトリやアクセスコントロールなんかを適当にいじるだけでいいかな。んでもって試しに走らせると怒られた。squid.conf に設定ミスが。お決まりの綴りミスやなんかね(^_^;;
Cannot open '/usr/local/squid/logs/access.log' for writing. The parent directory must be writeable by the user 'squid', which is the cache_effective_user set in squid.confということなので、ユーザー権限がちゃんとなってくてログファイルのオープンが出来てないようだ。さくっと直す。
$ chgrp squid /usr/local/squid/logs $ chown squid /usr/local/squid/logsこれでとりあえずは起動できるようになった。あとは起動スクリプトを変更。
$ cp /etc/init.d/squid /etc/init.d/squid.bak
$ cp contrib/squid.rc /etc/init.d/squid
$ vi /etc/init.d/squid → sh のパスと PATHの squid のパスを変更
○OpenSSH 2.5.1p1 → 2.5.2p2
解凍して、お決まり三段活用。んだけ。
# tar xvzf openssh-2.5.2p2.tar.gz # cd openssh-2.5.2p2 # ./configure # make # su $ make install○OpenSSL 0.9.5a → 0.9.6a
# tar xvzf openssl-0.9.6a.tar.gz # cd openssl-0.9.6a # ./config --prefix=/usr/ # make # make test # su $ make install○Samba 2.0.5-ja(だったかな?) → 2.0.7-ja22
$ rpm -Uvh samba-2.0.7-ja22ssl1.i386.rpm $ rpm -Uvh samba-common-2.0.7-ja22ssl1.i386.rpm $ rpm -Uvh samba-client-2.0.7-ja22ssl1.i386.rpmあとは kernel が残ってるや。こいつはじっくりやった方がいいだろうから、今日はここまでにしておこう、うん。