linux-image-3.8-1-amd64 を入れてみた
Debian 7.0 の登場に合わせ、自宅サーバは testing/jessie になったので、 カーネルのバージョンも linux-image-3.8-1-amd64 を入れることになった。
以前が、3.2.41 だったので、安定版のはずの 3.4 , 3.6 もすっ飛ばしての、 3.8。今までは、2.4,2.6,3.0,3.2 と段階を経ながら入れてきたけど、 2段階も抜けているバージョンアップは初めて。
しかしながら、aptitude install linux-image-3.8-1-amd64 を実行したけど、 大量のパッケージ更新というほどでもなく、無難に更新が完了。 reboot した後は、X11 が少しおかしくなったけど、xorg.conf を削除して 起動させたら自動認識で無事更新も終わった。
といっても、3.8 の新しい機能を活用する予定がある訳ではない。 ほぼ「試してみるか」というだけの理由。
wheezyでMTのページが壊れた
Debian/testing(Wheezy)を入れたら、movabletype も更新されたみたい。 記事を投稿したら、ページのスタイルが変になった。 スタイルシートの読み込みができていないみたい。
改めてmovabletypeの設定を触っていたら、インデックスページの設定が 初期化されてしまって、さらに悪化。 ひとまず、元通りに戻したけど、やっぱりスタイルシートの読み込みが変。
確認をしたら、スタイルを簡単に変更できるようにするための、 切換え部に、以下のような部分があるのが原因だった。
/* This is the StyleCatcher theme addition. */ @import url(/mt-static/themes-base/blog.css); @import url(https://tsaitoh.net/mt-static/support/...(略)... ; /* end StyleCatcher imports */
スタイルシートが途中で偽装されないために、https: を使っているのかも しれないけど、オレオレ証明書しか設定していない個人的な自宅サイトで そこまで完璧な設定も必要ないので、 スタイルシートのテンプレートを修正し、https: の部分を消す…
Debian 7.0 ついに wheezy が stable に
以前からアナウンスさら、今まで stable で動かしていたものが oldstable になることから、影響の少ないものはうまく更新できた。 しかしながら、まだ移行できていないサーバもあるんだけど…
# aptitude update ; aptitude safe-upgrade : 現在の状態: 新規が 15710 個 [-100]。 新たに廃止されたパッケージが 56 個あります。 インストール・削除・更新されるパッケージがありません。 更新: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。 0 バイトのアーカイブを取得する必要があります。展開後に 0 バイト のディスク領域 が新たに消費されます。
ひとまず、先行してtestingにしていたものは、特に何もなく移行完了。 移行が不完全なものは、oldstable だな。
つぎは、Jessieか…
Debianのバージョンは、Toy-Storyのキャラクターが使われているけど、 新しい testing は、Jessie になったらしい。
unstableパッケージの部分導入
何か面白そうなパッケージがないかと、ペンギンの杜を散策していたら、 LEGO NXT用のコンパイラ nbc などが Debian 用のパッケージが出ているらしい。 確かめると、unstable(sid)となっていて、 linux環境が testing なので、慎重に設定しないと、 不安定になるのも困る。 改めて、testing と unstable を混在するためのセッティングを確認する。
// pinningでベースとなるリリースを設定 (( /etc/apt/apt.conf.d/99target )) APT::Default-Release "testing"; // unstable の sources.list を追加 (( /etc/apt/sources.list.d/unstable.list )) deb http://ftp.us.debian.org/debian/ \ unstable main contrib non-free deb-src http://ftp.us.debian.org/debian/ \ unstable main contrib non-free
どうでもいいネタだけど、debian の oldstable / stable / testing / unstable というリリースの名前は、最新順に o/s/t/u と英字順となっていて便利。 sources.list.d に、リリース毎にファイルを分けると、ls コマンドで 新しくなる順に、設定ファイルが並んでいて分りやすい。
dovecotのディレクトリ形式
先日、Debian/wheezy でのパッケージ更新で、dovecot が 2.1.7-6 に なったら、imap のディレクトリが見えなくなった。
一旦は、バージョンを古くもどして対応させていたけど、 改めて設定を確認。当初、サブフォルダだけが見えなくなったので、 サブフォルダの区切り文字が変更になったかと思い、 "separator = ."とかを試したけど、相変わらずダメだった。
よくよく試したら、肝心のホームディレクトリ形式の mail_location が mbox形式が指定されていた。
(( /etc/dovecot/conf.d/10-mail.conf )) # mail_location = mbox:~/mail:INBOX=/var/mail/%u mail_location = maildir:~/Maildir
今までは imapd は一般的に Maildir 形式で設定ファイルが 書いてあったんだろうけど、 他の MUA のデフォルトに合わせて、設定ファイルが mbox 形式標準に変更されていただけみたい。
逆に言うなら、今まで気にしたことがなかったてことが、浅はかってことか…
あけおめでNTP設定を見直す
あけおめPOSTをしようとしたら、1分ほど出遅れた。 Windowsマシンが1分時計がずれていた。 ちゃんと設定していたつもりだったけど、Windows7は、w32tm コマンドで設定するのか…
Debianサーバ側をNTP問い合わせに返答できるようにする (( /etc/ntp.conf )) restrict 192.168.X.0 mask 255.255.255.0 nomodify notrap
Windows側で、NTPを参照するために、管理者状態になったうえで、 NTPサーバの登録を行う。
(( Windows/7 )) 管理者状態でcmdを起動 [Start]-[cmd.exe]-[Ctrl+Shift+Enter]
NTPサーバを設定する。 > w32tm /config /update \ /manualpeerlist:"192.168.X.Y ntp.ttn.ne.jp" NTP同期を強制的にかける > w32tm /resync
dovecotのフォルダが見えなくなる
Debianのunstableで使っているけど、今朝 aptitude safe-upgrade したら、 dovecot-core,dovecot-imapd,dovecot-pop3d が更新され、 2.1.7-2 → 2.1.7-6 となった。
ただ、これにより IMAP の受信トレイは読めるものの、 他のフォルダが見えなくなった。別途原因究明したいけど、 ひとまず見れないと困るメールなどもあるし、特にこだわりも ないから、dovecot-1.2.15-7 / stable に落とす。
といっても、パッケージ構成も dovecot-common を使うようなので、 aptitude install dovecot-imapd/stable しても、うまくダウングレード できない。しかたがないので、
# aptitude purge dovecot-core dovecot-imapd dovecot-pop3d # aptitude install dovecot-common/stable dovecot-imapd/stable dovecot-pop3d/stable
を実行する。2.1.7-6 では、認証キーの保存場所なども変わったようだし、 機能の削除などもあったようだが、それらが原因かな。
mod_pagespeedを入れてみた…
Webサーバの高速化のためにGoogleが開発している mod_pagespeed を試してみた。 詳しくは、紹介記事 を見てもらうとして、 基本的に、CSSやJavaScriptの実行順序に伴う速度低下や、画像表示の低下を防ぐために、 様々なデータに変換しながら送り出してくれる機能。 "aptitude search mod-pagespeed"しても出てこないし、もう少し待とうかと思ったけど、 *.deb なパッケージが提供されているので、自宅サイトに入れてみた。
# wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_amd64.deb # dpkg -i mod-pagespeed-*.deb # /etc/init.d/apache2
といっても、ページに埋め込んだCSS,JavaScriptなんて movable-type が生成した わずかな部分だし、速度向上はするのだろうか? 実際試して、自宅サイト表示させてみたけど、"いつもどおり"としか言いようがない。 ページ表示の際の、画像読み込みタイミングでレイアウトがピョコピョコ移動するのが無く 表示されて速いじゃん…と高速化した気分がする。 だけど、改めて"a2dismod pagespeed;/etc/init.d/apache2 restart"してから試したけど、 やっぱり違いはわかんない…
ただし、mod-pagespeed は、サーバ側で送出するデータに変更を加える訳だから、 サーバの処理負荷としては重くなる。ひとまず、このまま放置で変化を見てみよう。
早々にエラー出たじゃん
そのまま経過観察…と思ってたけど、munin のグラフを見ようとしたら、 早々に以下のようなエラーメッセージ。どうもJavaScriptの文法エラー。 試しに、"a2dismod pagespeed"したら普通に表示できたので、 原因は mod-pagespeed に間違い無い。

サーバのX関係の設定が改善
自宅サーバの出力はVGAとHDMIが付いていたけど、VGAは解像度が上がらず、HDMIはサブディスプレイ設定しかできず、あまり活用できていなかった。サーバだしそれでも良かったけどね。
でも改めて設定を見直しにチャレンジ。今までは、Xは/etc/X11/xorg.conf無しの自動設定で立ち上げていた。しかしサブディスプレイの設定を見直すにあたり、Xorg -config で xorg.conf を生成させた。すると今までサブディスプレイのミラー設定などで解像度が上げられない問題も解決。HDMIが1920×1080で使え、地デジテレビでサーバ画面が見れるようにできた。
さらにこの効果なのか、リモートデスクトップのxrdpが上手く立ち上がらないトラブルも、特に設定を変えていないのに解消。
これで、windowsパソコンが子どもに取られても、サーバ触れる。
ipsetを使って国別のFireWall設定
Web記事を探していたら、国別のFireWallでのブロックで ipset というものが使える との情報から、試してみた。 ipsetを使った理由は、iptables に、別物管理したい国別ルールを入れたくなかったため。
ちなみに、ipdeny から取得した CIDR なIPv4なアドレスブロック数は、以下のようになった。 ロシアが多いのは納得だけど、インターネットの普及のイメージとして中国≒インド≒韓国 ぐらいの感じを抱いていたけど、中国のアドレスブロックの数はインド・韓国の3倍。 人口の影響かな?後発出遅れで細切れアドレスになったのかな….
$ wc -l *.zone 2635 cn.zone 602 id.zone 706 in.zone 659 kr.zone 6520 ru.zone 388 tw.zone 11510 合計
また、mergecidr.pl によって、隣接CIDRをマージさせてみたけど、 元々の11510件が、併合で9255件に減らすことができた(20%減)。
mergecidr.pl
#!/usr/bin/perl my %net = () ; while( <> ) { if ( /^(\d+)\.(\d+)\.(\d+)\.(\d+)\/(\d+)$/ ) { my $ip,$bt; ($ip,$bt) = ( ($1 << 24) + ($2 << 16) + ($3 << 8) + $4 , $5 ) ; $net{$ip} = $bt ; # printf( "# %08x/%02d\n" , $ip , $bt ) ; } } my $count = 1 ; while( $count > 0 ) { my $lip = 0 ; my $lbt = 0 ; $count = 0 ; foreach my $ip ( sort { $a <=> $b } keys %net ) { my $bt = $net{$ip} ; if ( $bt > 0 ) { if ( $lbt == $bt && $bt > 1 ) { # printf( "%08x/%02d\n" , $ip , $bt ) ; my $dbt = $bt - 1 ; my $mask = (((1 << $dbt) - 1) << (32 - $dbt)) ; if ( ($ip & $mask) == ($lip & $mask) ) { $count++ ; undef $net{$lip} ; undef $net{$ip} ; $net{$ip & $mask} = $dbt ; #printf( "%08x/%08x/%02d\n" , # ($ip & $mask) , $mask , $dbt ) ; } } $lip = $ip ; $lbt = $bt ; } } } foreach my $ip ( sort {$a <=> $b } keys %net ) { my $bt = $net{$ip} ; if ( $bt > 0 ) { printf( "%d.%d.%d.%d/%d\n" , (($ip >> 24) & 0xff) , (($ip >> 16) & 0xff) , (($ip >> 8) & 0xff) , ( $ip & 0xff) , $bt ) ; } }
geoipdeny.sh
参考サイトのスクリプトをほぼ、そのまま借用。
DIR="/usr/local/etc/geoipdeny" ZONEURL="http://www.ipdeny.com/ipblocks/data/countries" # download zonefile for GEO in cn.zone kr.zone ru.zone tw.zone id.zone in.zone do /usr/bin/wget -q -O - "$ZONEURL/$GEO" \ | /bin/grep -v "^#|^$" > $DIR/$GEO done /usr/sbin/ipset destroy GEOIPDENY > /dev/null 2>&1 /usr/sbin/ipset create GEOIPDENY hash:net for IP in ` $DIR/mergecidr.pl $DIR/*.zone ` do /usr/sbin/ipset add GEOIPDENY $IP done /usr/sbin/ipset save GEOIPDENY > $DIR/geoipdeny.store /usr/sbin/ipset destroy GEOIPDENY
fermの設定に登録
自宅のFirewallの設定には、iptablesな設定を、ブロック的にまとめて記載できる、 ferm というのを使っているので、その設定の中に、上記でできた ipset を参照させる。
(( 設定ファイルの先頭に )) @hook post "/usr/sbin/ipset destroy GEOIPDENY" ; @hook pre "/bin/cat /usr/local/etc/geoipdeny/geoipdeny.store | /usr/sbin/ipset restore" ; @hook flush "/usr/sbin/ipset destroy GEOIPDENY" ; (( Firewallのブラックリストな設定部分に )) mod set set GEOIPDENY ( src dst ) REJECT ;
次は動作確認。
# geoiplookup www.baidu.cn GeoIP Country Edition: CN, China # ipset test GEOIPDENY www.baidu.cn 220.181.111.147 is in set GEOIPDENY. # w3m http://www.baidu.ch これがなぜか接続成功するんだよな....
ということで、まだなにかオカシイ?
# export http_proxy=http://中国のOpenProxy:xxxx # w3m http://tsaitoh.net/ Connection Refused...
おお、ちゃんと拒否られるな….
自宅からだと、間に透過PROXYでも入っているのかな…