ホーム » コンピュータ » Linux (ページ 30)

Linux」カテゴリーアーカイブ

システム

最近の投稿

アーカイブ

カテゴリー

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でも入っているのかな…

fetchmailでyahooの迷惑メール廃棄

Yahooとか、利用している丹南CATVのメールアドレスは、 大量の迷惑メールが流れてきて、きわめてウザい。 自宅でfetchmailで取り込み、procmailでフィルタリングしていた時もあったけど、 処理能力の無駄&LOGを見ると、余りの多さにイラってくる。

このため、最近では"一切読まない"という作戦に切り替えたけど、 たまに確認すると、Yahooでの購入確認メールとかもあるため、 Webメールで気が向いた時に読んでいる。 でも、その時に"迷惑メールフォルダ"に、何十件ものメールが溜まっていて、 怖いもの見たさで覗いてみれば、やっぱりイラっ。

精神衛生的には、迷惑メールフォルダだけでも、LOGも残さず、特定のフォルダだけを綺麗さっぱり消したい。 ということで、"迷惑メールフォルダ"だけ、fetchmailであっさり消す方法をやってみた。

(( $HOME/.fetchmailrc ))
poll imap.mail.yahoo.co.jp protocol imap \
user ほげ pass "ほげほげ" ssl \
mda "/usr/bin/nkf -wm" \
folder "Bulk Mail"

これで、fetchmail を動かせば、標準出力に MIME デコードの Unicode で出力される。 最後に、crontab で、"/usr/bin/fetchmail > /dev/null"すれば、あっさり消える。

本当は、丹南CATVの迷惑メールフォルダも同様に消したいんだけど、 (内部的にはroundcubeを動かすためにIMAPサーバがあるはずなのに)、 IMAP接続ができない。POPでは迷惑メールのフォルダ指定ができない。 ということで、丹南のゴミ山メールだけ綺麗さっぱり消す計画は、相変わらず失敗中。

自宅サーバダウン…原因は…

今日は、出勤早々自宅サーバが落ちている。 朝は問題なく動いていたのに….

確認のため、自宅に電話し夏休み中の子どもに状況確認。 「サーバの電源ランプついてる?」と確認すると、どうも 電源が落ちている。電話で、電源ボタン押してくれと頼むと、 電気がつかないみたい。長押ししてもダメ。

よくよく確認すると、サーバのリセットボタンを押していた 見たい。そりゃ立ち上がらねー。

でも、なぜサーバの電源が落ちたのか?

これまた子どもに色々聞いてみると、 パソコン(ディスプレイ一体型)のシャットダウンを選んでしまい、 電源が切れた。 ちなみにパソコンもTV録画機能があるため、 電源をきっても、勝手に起動したりするので、ほぼ起動しっぱなし。

子どもたちもパソコンを使いたかったので、電源を入れようとしたが、 一体型パソコンの右脇の電源スイッチが判らず、周辺装置の電源 ボタンをおしまくり。

その結果、パソコンの電源ボタンと間違えて、 UPS の電源ボタンを押してしまった。 ちなみに我が家の UPS は安物なので、1クリックで簡単に電源遮断。 ということで、サーバダウンとなったみたい。

ということで、子どもにパソコンラックの色いろある機器の 名前や機能をそろそろ教えないといけない….

NetatalkでTimeMachineを久々に運用

Mountain Lionへのアップグレードも終わり、新しい状態をバックアップと思ったけど、 TimeMachineの設定がはずれてる。 そういえば、以前Netatalkを運用したとき、TimeMachine が容量MAXまで 使い切るため、HDDが簡単に埋まるので運用を止めていたんだった。

改めて、バックアップを取ろうとしたら、 "Something wrong with the volume's CNID DB, using temporary CNID DB instead…" とのエラーメッセージが出て、動かない。このため、改めて Netatalk の設定を確認する。 まずは、以前のファイルとの不整合が考えられるので、Netatalkのディレクトリを 完全にまっさらに消して、あらためて以下の設定を行う。 TimeMachineが最大容量まで使うため、volsizelimit にて、100GB に制限しておく。

(( /etc/netatalk/AppleVolumes.default ))
/path.../MB  "AppleBackupMB"  volsizelimit:100000 ¥
options:usedots,upriv,tm allow:@home

Google 検索

My Google   Yahoo

Microsoft

ファンサイト