<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wanatabe&#039;s Weblog &#187; Linux</title>
	<atom:link href="http://bougaidenpa.org/wanatabe/archives/category/linux/feed" rel="self" type="application/rss+xml" />
	<link>http://bougaidenpa.org/wanatabe</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sat, 28 Nov 2009 09:16:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CentOS5 fuse+unionfs してみた</title>
		<link>http://bougaidenpa.org/wanatabe/archives/44</link>
		<comments>http://bougaidenpa.org/wanatabe/archives/44#comments</comments>
		<pubDate>Mon, 11 Aug 2008 12:59:16 +0000</pubDate>
		<dc:creator>wanatabe</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://bougaidenpa.org/wanatabe/?p=44</guid>
		<description><![CDATA[unionfs は複数のディレクトリをマージすることができるということで、前から気になっていたのですが、ようやく試してみました。
今回は FUSE というカーネルモジュール経由で動かしてみました。
インストール
rpmforge で fuse 関連のパッケージが提供されていて unionfs-fuse というパッケージが見つかりますので、これをインストールします。
$ sudo yum install unionfs-fuse
インストールが完了したら、カーネルモジュールをロードします。
$ sudo modprobe fuse
$ /sbin/lsmod &#124; grep fuse
fuse                   46868  0
ユーザーを fuse グループに追加します。
$ sudo /usr/sbin/usermod -G fuse wanatabe
これで準備は完了です。
マウント
unionfs &#8211;help または man unionfs で使用方法をずらずら調べることができます。
$ mkdir mnt
$ [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.filesystems.org/project-unionfs.html">unionfs</a> は複数のディレクトリをマージすることができるということで、前から気になっていたのですが、ようやく試してみました。<br />
今回は <a href="http://fuse.sourceforge.net/">FUSE</a> というカーネルモジュール経由で動かしてみました。</p>
<h3>インストール</h3>
<p>rpmforge で fuse 関連のパッケージが提供されていて unionfs-fuse というパッケージが見つかりますので、これをインストールします。</p>
<pre class="sourcecode">$ sudo yum install unionfs-fuse</pre>
<p>インストールが完了したら、カーネルモジュールをロードします。</p>
<pre class="sourcecode">$ sudo modprobe fuse
$ /sbin/lsmod | grep fuse
fuse                   46868  0</pre>
<p>ユーザーを fuse グループに追加します。</p>
<pre class="sourcecode">$ sudo /usr/sbin/usermod -G fuse wanatabe</pre>
<p>これで準備は完了です。</p>
<h3>マウント</h3>
<p>unionfs &#8211;help または man unionfs で使用方法をずらずら調べることができます。</p>
<pre class="sourcecode">$ mkdir mnt
$ unionfs -o cow ¥
-o noinitgroups ¥
-o default_permissions ¥
-o fsname=myfs  ¥
/usr/local=RW:/var/log=RO mnt</pre>
<p>df で見てみると、-o fsname=myfs で名付けた表記でマウントされているのがわかります。</p>
<pre class="sourcecode">$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
6983168   2047692   4575028  31% /
/dev/sda1               101086     30832     65035  33% /boot
tmpfs                   257744         0    257744   0% /dev/shm
myfs                   6983168   2047692   4575028  31% /home/wanatabemnt
$ ls mnt
acpid            audit     conman      dkms_autoinstaller  games    libexec  messages  rpmpkgs  spooler   xen
anaconda.log     bin       conman.old  dmesg               include  libvirt  pm        sbin     src       yum.log
anaconda.syslog  boot.log  cron        etc                 lastlog  mail     ppp       secure   tallylog
anaconda.xlog    btmp      cups        faillog             lib      maillog  prelink   share    wtmp</pre>
<p>NFS とかと組み合わせると面白そう。</p>
]]></content:encoded>
			<wfw:commentRss>http://bougaidenpa.org/wanatabe/archives/44/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 8.04 インストール</title>
		<link>http://bougaidenpa.org/wanatabe/archives/42</link>
		<comments>http://bougaidenpa.org/wanatabe/archives/42#comments</comments>
		<pubDate>Mon, 09 Jun 2008 14:55:14 +0000</pubDate>
		<dc:creator>wanatabe</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://bougaidenpa.org/wanatabe/?p=42</guid>
		<description><![CDATA[以前 X40 マシンに Ubuntu 7.10 をインストールしましたが、Ubuntu 8.04 がリリースされていたので、アップグレードしてみました。
アップグレードといっても、再度、PXEを利用して、ネットワーク経由でブートして、Ubuntu のミラーサイトから OS をインストールし直しただけです。ただ、以前のエントリでわりと重要ポイントをメモしていたつもりだったけれども、実際にやり直した際に、手順にかなりの抜けがあって、あまり参考にならなかった・・・。ちゃんとまとまっているサイトを見つけたので、これを参考にして実施しました。

参考になるサイト
http://wiki.koeln.ccc.de/index.php/Ubuntu_PXE_Install


8.04 の標準で入る壁紙カッコイイですね。
]]></description>
			<content:encoded><![CDATA[<p>以前 X40 マシンに Ubuntu 7.10 をインストールしましたが、Ubuntu 8.04 がリリースされていたので、アップグレードしてみました。</p>
<p>アップグレードといっても、再度、PXEを利用して、ネットワーク経由でブートして、Ubuntu のミラーサイトから OS をインストールし直しただけです。<br />ただ、<a href="http://bougaidenpa.org/wanatabeentry/x40_%E3%83%9E%E3%82%B7%E3%83%B3%E3%81%AB_pxe_%E3%83%96%E3%83%BC%E3%83%88%E3%81%A7_ubuntu">以前のエントリ</a>でわりと重要ポイントをメモしていたつもりだったけれども、実際にやり直した際に、手順にかなりの抜けがあって、あまり参考にならなかった・・・。ちゃんとまとまっているサイトを見つけたので、これを参考にして実施しました。</p>
<p>
参考になるサイト<br />
http://wiki.koeln.ccc.de/index.php/Ubuntu_PXE_Install
</p>
<p></p>
<p>8.04 の標準で入る壁紙カッコイイですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://bougaidenpa.org/wanatabe/archives/42/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>memcached &#8211; インストールからちょっとしたテストまで</title>
		<link>http://bougaidenpa.org/wanatabe/archives/41</link>
		<comments>http://bougaidenpa.org/wanatabe/archives/41#comments</comments>
		<pubDate>Mon, 07 Apr 2008 13:08:41 +0000</pubDate>
		<dc:creator>wanatabe</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://bougaidenpa.org/wanatabe/?p=41</guid>
		<description><![CDATA[
ネット上には既にたくさんの情報がありますが、今さらながらのメモ。


memcached にデータが存在していれば、データベースにアクセスせず、memcached からデータを読み出すことで高速なレスポンスが実現できるとのこと。

CentOS5 環境でセットアップ
Install (DAG repository から)

$ sudo yum -y install memcached

設定ファイル(設定例は省略)

/etc/sysconfig/memcached

daemon として起動

$ sudo /etc/init.d/memcached start

Perl でテストしてみる
Cache::Memcached というモジュールが CPAN にありましたので利用してみました。


#!/usr/bin/perl
use strict;
use warnings;
use Cache::Memcached;
my $expire_time = 10; # sec
my $servers_ref;
@$servers_ref = qw( 127.0.0.1:11211 ); # IP アドレス:ポート番号
my $memd = new Cache::Memcached; # コンストラクタ
$memd->set_servers($servers_ref);
$memd->set_debug(0);
# "key" を memcached サーバから取ってくる
my $val = $memd->get("key");
# memcached サーバに値がある場合
if ($val) {
print $val;
}
# memcached [...]]]></description>
			<content:encoded><![CDATA[<p>
ネット上には既にたくさんの情報がありますが、今さらながらのメモ。
</p>
<p>
memcached にデータが存在していれば、データベースにアクセスせず、memcached からデータを読み出すことで高速なレスポンスが実現できるとのこと。
</p>
<h3>CentOS5 環境でセットアップ</h3>
<p>Install (DAG repository から)</p>
<pre class=sourcecode>
$ sudo yum -y install memcached
</pre>
<p>設定ファイル(設定例は省略)</p>
<pre class=sourcecode>
/etc/sysconfig/memcached
</pre>
<p>daemon として起動</p>
<pre class=sourcecode>
$ sudo /etc/init.d/memcached start
</pre>
<h3>Perl でテストしてみる</h3>
<p><a href="http://search.cpan.org/~bradfitz/Cache-Memcached/">Cache::Memcached</a> というモジュールが <a href="http://www.cpan.org/">CPAN</a> にありましたので利用してみました。
</p>
<pre class=sourcecode>
#!/usr/bin/perl
use strict;
use warnings;
use Cache::Memcached;
my $expire_time = 10; # sec
my $servers_ref;
@$servers_ref = qw( 127.0.0.1:11211 ); # IP アドレス:ポート番号
my $memd = new Cache::Memcached; # コンストラクタ
$memd->set_servers($servers_ref);
$memd->set_debug(0);
# "key" を memcached サーバから取ってくる
my $val = $memd->get("key");
# memcached サーバに値がある場合
if ($val) {
print $val;
}
# memcached サーバに値が無い場合
else {
print "memcached is empty. set value to memcached now.\n";
$memd->set("key", "value", $expire_time);
}
</pre>
<p>
感想も今さらですが、それにしてもステキな仕組みです。
</p>
<p>
<a href="http://dsas.blog.klab.org/archives/51181526.html">最近のmemcached界隈の賑わいについてのメモ &#8211; DSAS開発者の部屋</a>に memcached 関連のプロダクトのあれこれがまとめられているので、参考にしていきたい。<br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bougaidenpa.org/wanatabe/archives/41/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>memcached &#8211; man page 翻訳してメモしておく</title>
		<link>http://bougaidenpa.org/wanatabe/archives/39</link>
		<comments>http://bougaidenpa.org/wanatabe/archives/39#comments</comments>
		<pubDate>Mon, 07 Apr 2008 12:36:10 +0000</pubDate>
		<dc:creator>wanatabe</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://bougaidenpa.org/wanatabe/?p=39</guid>
		<description><![CDATA[今さらながら memcached を使ってみたので、そのときに訳したメモをここにメモ。
誤訳に十分御注意ください。御指摘いただけたら幸いです。



MEMCACHED(1)                                                     [...]]]></description>
			<content:encoded><![CDATA[<p>今さらながら memcached を使ってみたので、そのときに訳したメモをここにメモ。<br />
誤訳に十分御注意ください。御指摘いただけたら幸いです。
</p>
<p></p>
<pre>
MEMCACHED(1)                                                      MEMCACHED(1)
NAME
memcached - 高性能メモリーオブジェクトキャッシュシステム
SYNOPSIS
memcached [options]
DESCRIPTION
このマニュアルページは 簡単な memcached メモリオブジェクトキャッシングデーモ
ンのドキュメントです。
memcached はメモリ内に格納しているオブジェクトによって動的なウェブアプリ
ケーションのデータベースの負荷を軽減するように設計されたオブジェクトキャッシ
ングシステムです。
それは、必要であるどんなサイズにも比例するように libevent に基づいていて、
スワップするのを避けて、いつもnon-blocking I/O を使用するために明確に最適化
されます。
OPTIONS
これらのプログラムは普通の GNU コマンドラインシンタックスをフォローします。
オプションの概要は以下に含まれています。
-l &lt;ip_addr&gt;
&lt;ip_addr&gt; をリッスンします；デフォルトは INDRR_ANY です。
これはセキュアにインストールする唯一の方法として重要なオプションだと
思います。
内部やファイアーウォール内のネットワークインターフェースに付くことが
示されます。
-d     Rmemcached をデーモンとして起動します。
-u &lt;username&gt;
&lt;usename&gt; の識別子のフリをします（ルートで動かすときのみ）。
-m &lt;num&gt;
オブジェクトの格納のために最大で &lt;num&gt; MB メモリを使います；デフォル
トは 64 MB です。
-c &lt;num&gt;
同時コネクションを最大で &lt;num&gt; にします；デフォルトは 1024 です。
-k     全ての呼び出されたメモリをロックダウンします。これは大きなキャッシュ
の場合はいくらか危険なオプションですので、
設定の提案のために、README と memcached ホームページに相談してください。
-p &lt;num&gt;
&lt;num&gt; 番の TCP ポートをリッスンします、デフォルトは 11211 です。
-U &lt;num&gt;
&lt;num&gt; 番の UDP ポートをリッスンします、デフォルトは 11211 です。
-M     メモリ外のときにキャッシュからアイテムを自動的に取り除くことを無効に
します。適切なスペースが開けられるまで、追加は可能にならないでしょう。
-r     コアファイルサイズの許可できる最大まで限界を上げます。
-f &lt;factor&gt;
アイテムがストアされるメモリチャンクサイズを計算するための乗数として
&lt;factor&gt; を使います。低い値ははメモリの利用可能な総量と項目サイズの分
配による、それほど無駄でないメモリ消費になるかもしれません。デフォル
トは 1.25 です。
-s &lt;size&gt;
アイテムキー、値、フラグに最低 &lt;size&gt; byte 割り当てます。デフォルトは
48 です。もしたくさんの小さなキーと値を持つなら、少ない値で有効な効き
目を得ることができます。もし (-f オプション) の結果で大きなチャンクを
使うなら、他方では、(最も小さい)チャンクをパックした、最も密にフィッ
トするアイテムのより大きなパーセンテージに許可するためにサイズを増加
したいかもしれません。
-h     memcached のバージョンとオプションのサマリを表示します。
-v     イベントを繰り返す間、冗長モードになります；エラーと警告を出力します。
-vv    さらに冗長モードになります； -v と同じですが、クライアントのコマンド
とレスポンスも出力します。
-i     memcahced と libevent のライセンスを出力します。
-P &lt;filename&gt;
-d オプションを使っているときのみ、 &lt;filename&gt; に pidfile を出力します。
-t &lt;threads&gt;
入ってくるリクエストのプロセスに使われるスレッド数。
もし memcached がスレッドサポート有効にしてコンパイルされているなら、
このオプションは有意義です。
それは memcached サーバの CPU のコアの数より高くこれを設定するのため
に役立ちません。
-D &lt;char&gt;
キーのプレフィックスと ID の間のデリミタとして &lt;char&gt; を使います。
これは per-prefix stats レポートに使われます。デフォルトは ":"(コロ
ン) です。もしオプションが特定されたら、stats コレクションは自動的に
つきます；もしそうでなければ、そのとき、サーバに "stats detail on"
コマンドを送信することでつくでしょう。
LICENSE
memcached デーモンは Danga Interactive の著作権 とBSD ライセンスのもとに配布
されます。daemon clients は別々に認可されることに注意してください。
SEE ALSO
The README file that comes with memcached
http://www.danga.com/memcached
AUTHOR
The memcached daemon was written by Anatoly Vorobey &lt;mellon@pobox.com&gt; and
Brad Fitzpatrick &lt;brad@danga.com&gt; and the rest of the crew of Danga Inter-
active http://www.danga.com
April 11, 2005                    MEMCACHED(1)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://bougaidenpa.org/wanatabe/archives/39/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>X40 マシンに PXE ブートで Ubuntu をインストールする</title>
		<link>http://bougaidenpa.org/wanatabe/archives/37</link>
		<comments>http://bougaidenpa.org/wanatabe/archives/37#comments</comments>
		<pubDate>Tue, 04 Mar 2008 15:14:58 +0000</pubDate>
		<dc:creator>wanatabe</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://bougaidenpa.org/wanatabe/?p=37</guid>
		<description><![CDATA[
VMware fusion に WindowsXP を入れたので 今まで使っていた X40 には Ubuntu を入れてみました。
X40 に CDROM ドライブ等が無かったので、どうやるかいろいろ考えた結果、VMware fusion 上の Ubuntu で tftp サーバをたてて、PXEブートさせてインストールすることにしました。


ネットワーク


VMware 上の Ubuntu を Bridge に設定して、固定 IP を振りました。


必要なソフトウェアのインストール


tftp と dhcp をインストールします。


ubuntu$ sudo apt-get install tftpd-hpa dhcp3-server


tftp の設定


/etc/inetd.conf を以下のようにして inetd 経由で起動するように設定します。(xinetd でもいいです。どちらでもいいです。)


tftp           dgram   udp   [...]]]></description>
			<content:encoded><![CDATA[<p>
VMware fusion に WindowsXP を入れたので 今まで使っていた X40 には Ubuntu を入れてみました。<br />
X40 に CDROM ドライブ等が無かったので、どうやるかいろいろ考えた結果、VMware fusion 上の Ubuntu で tftp サーバをたてて、PXEブートさせてインストールすることにしました。
</p>
<h3>
ネットワーク<br />
</h3>
<p>
VMware 上の Ubuntu を Bridge に設定して、固定 IP を振りました。
</p>
<h3>
必要なソフトウェアのインストール<br />
</h3>
<p>
tftp と dhcp をインストールします。
</p>
<pre class=sourcecode>
ubuntu$ sudo apt-get install tftpd-hpa dhcp3-server
</pre>
<h3>
tftp の設定<br />
</h3>
<p>
/etc/inetd.conf を以下のようにして inetd 経由で起動するように設定します。(xinetd でもいいです。どちらでもいいです。)
</p>
<pre class=sourcecode>
tftp           dgram   udp     wait    root  /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
</pre>
<p>
/etc/default/tftpd-hpa を編集します。
</p>
<pre class=sourcecode>
#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"
</pre>
<h3>
dhcp サーバの設定<br />
</h3>
<p>
/etc/dhcp3/dhcpd.conf を編集します。(勘違いで /etc/dhcpd.conf を一生懸命編集してしまった思い出が残っています。)
</p>
<pre class=sourcecode>
host pxeinstall {
hardware ethernet 00:0C:29:D1:D3:A0;
fixed-address 192.168.0.10;
next-server 192.168.0.8;
filename "pxelinux.0";
}
subnet 192.168.0.0 netmask 255.255.255.0 {
range dynamic-bootp         192.168.0.10 192.168.0.20;
filename                    "pxelinux.0";
</pre>
<h3>
tftp サーバと dhcp サーバのスタート<br />
</h3>
<p>
tftp サーバは inetd 経由で起動するように設定したので、 inetd デーモンをスタートします。
</p>
<pre class=sourcecode>
ubuntu# sudo /etc/init.d/inetd start
ubuntu# sudo /etc/init.d/dhcp3-server start
</pre>
<h3>
ブートイメージを設置します。<br />
</h3>
<p>
いろいろ方法はありますが、今回はネットからダウンロードしました。
</p>
<pre class=sourcecode>
ubuntu# lftp -c "open http://archive.ubuntu.com/ubuntu/dists/dapper/main/installer-i386/current/images/; mirror netboot/"
ubuntu# cp -R netboot/* /var/lib/tftpboot
</pre>
<p>
これで同一セグメントに設置した X40 をネットブートするとインストーラが起動します。ステキです。</p>
]]></content:encoded>
			<wfw:commentRss>http://bougaidenpa.org/wanatabe/archives/37/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iSCSI Enterprise Target</title>
		<link>http://bougaidenpa.org/wanatabe/archives/35</link>
		<comments>http://bougaidenpa.org/wanatabe/archives/35#comments</comments>
		<pubDate>Thu, 07 Feb 2008 14:43:07 +0000</pubDate>
		<dc:creator>wanatabe</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://bougaidenpa.org/wanatabe/?p=35</guid>
		<description><![CDATA[
これ (iSCSI Target &#8211; Solaris Express) をみたので Linux (Fedora Core 6) でやってみました。

設定にあたってこの辺を参考にしました。3つめのページには Microsoft iSCSI Software Initiator についても書かれています。

iSCSI enterprise target project Wiki
A Quick Guide to iSCSI on Linux
Going Enterprise &#8211; setup your FC4 iSCSI target in 5 minutes

準備
利用するにあたって以下のものが必要です。

kernel-development パッケージ
kernel コンフィグの &#8220;Cryptographic options&#8221; の &#8220;Cryptographic API&#8221; が有効になっていること
OpenSSL ライブラリ

ソースを checkout します。

# mkdir /usr/local/src/iscsitarget
# cd /usr/local/src/iscsitarget
# svn co svn://svn.berlios.de/iscsitarget/trunk [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://bougaidenpa.org/masakazu/entry/iscsi_target_solaris_express">これ (iSCSI Target &#8211; Solaris Express)</a> をみたので Linux (Fedora Core 6) でやってみました。
</p>
<p>設定にあたってこの辺を参考にしました。3つめのページには <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=12cb3c1a-15d6-4585-b385-befd1319f825&#038;DisplayLang=en">Microsoft iSCSI Software Initiator</a> についても書かれています。</p>
<p>
<a href="http://iscsitarget.sourceforge.net/wiki/index.php">iSCSI enterprise target project Wiki</a><br />
<a href="http://www.cuddletech.com/articles/iscsi/index.html">A Quick Guide to iSCSI on Linux</a><br />
<a href="http://fedoranews.org/mediawiki/index.php/Going_Enterprise_-_setup_your_FC4_iSCSI_target_in_5_minutes">Going Enterprise &#8211; setup your FC4 iSCSI target in 5 minutes</a>
</p>
<h3>準備</h3>
<p>利用するにあたって以下のものが必要です。</p>
<ul>
<li>kernel-development パッケージ</li>
<li>kernel コンフィグの &#8220;Cryptographic options&#8221; の &#8220;Cryptographic API&#8221; が有効になっていること</li>
<li>OpenSSL ライブラリ</li>
</ul>
<p>ソースを checkout します。</p>
<pre class=sourcecode>
# mkdir /usr/local/src/iscsitarget
# cd /usr/local/src/iscsitarget
# svn co svn://svn.berlios.de/iscsitarget/trunk .
# cd  iscsitarget
# make &#038;&#038; make install
</pre>
<p>/etc/ietd.conf を編集します（無ければ iscsitarget/etc/ietd.conf を /etc 以下にコピーします）。<br />
Target を定義します。最初の一行目はターゲット名を指定します。<br />
ietd.conf の man page には、
</p>
<pre class=sourcecode>
iqn.&lt;yyyy-mm&gt;.&lt;tld.domain.some.host&gt;[:&lt;identifier&gt;]
</pre>
<p>とありますので、&lt;tld.domain.some.host&gt; の部分を com.wanatabe にしました。<br />
IncomingUser と OutcomingUser は initiator との認証(CHAP secrets)のための指定をしますが、認証なしで接続する場合は引数をつけません。<br />
Lun には、割り当てるデバイスを指定します。Type には fileio(default)、blockio が指定できるようです。<br />
最後の Alias には target のエイリアスを指定します。</p>
<p>結果として以下のようにしました。</p>
<pre class=sourcecode>
Target iqn.2001-04.com.wanatabe:storage.lvm
# Leave them alone if you don't want to use authentication.
IncomingUser
OutgoingUser
Lun 0 Path=/dev/VolGroup00/oheya,Type=fileio
Alias OHEYA
</pre>
<p>他にもいくつかオプションがあります。current version ではまだ使用されていないものもあるようです。</p>
<h3>デバイスの設定</h3>
<p>新しい LogicalVolume に割り当てる容量がなかったので、500MB だけ確保しました。</p>
<pre class=sourcecode>
# lvreduce -L-500M /dev/VolGroup00/LogVol00
</pre>
<p>oheya という Volume を 500MB で作成します。</p>
<pre class=sourcecode>
# lvcreate -n oheya -L 500M VolGroup00
</pre>
<p>念のため確認します。</p>
<pre class=sourcecode>
# lvdisplay /dev/VolGroup00/oheya
--- Logical volume ---
LV Name                /dev/VolGroup00/oheya
VG Name                VolGroup00
LV UUID                FerqfA-aHCu-ZYZs-Lpis-7pq7-p6zv-BAt3vh
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                512.00 MB
Current LE             16
Segments               2
Allocation             inherit
Read ahead sectors     0
Block device           253:2
</pre>
<h3>起動</h3>
<p>iscsi-target スクリプトで ietd daemon を起動します。</p>
<pre class=sourcecode>
# service iscsi-target start
</pre>
<p>起動した後に /proc/net/iet/volume で確認できます。</p>
<pre class=sourcecode>
# cat /proc/net/iet/volume
tid:1 name:iqn.2001-04.com.wanatabe:storage.lvm
lun:0 state:0 iotype:fileio iomode:wt path:/dev/VolGroup00/oheya
</pre>
<p>initiator のセッションは /proc/net/iet/session で確認できます（<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=12cb3c1a-15d6-4585-b385-befd1319f825&#038;DisplayLang=en">Microsoft iSCSI Software Initiator</a> からログインしています）。</p>
<pre class=sourcecode>
# cat /proc/net/iet/session
tid:1 name:iqn.2001-04.com.wanatabe:storage.lvm
sid:281475899523136 initiator:iqn.1991-05.com.microsoft:wanatabe-b01b342bc
cid:1 ip:192.168.0.3 state:active hd:none dd:none
</pre>
<h3>ietadm コマンド</h3>
<p>target は ietadm コマンドでも設定できます。<br />
でも /etc/ietd.conf に反映する手段がまだなさそうです。</p>
<p>これで target を作成します。</p>
<pre class=sourcecode>
# ietadm --op new --tid=1 --params Name=iqn.2001-04.com.wanatabe:storage.lvm
</pre>
<p>作成した tid を指定して、lun を設定します。</p>
<pre class=sourcecode>
# ietadm --op new --tid=1 --lun=0 --params Path=/dev/VolGroup00/oheya
</pre>
<p>認証の設定は以下のようにします。<a href="http://www.rfc-archive.org/getrfc.php?rfc=3720">RFC 3720</a> によると、CHAP secrets は 96 bit(12文字) 以上 128 bit(16文字) 以内にしなさい、とのことです。</p>
<pre class=sourcecode>
# ietadm --op new --tid=1 --user --params=IncomingUser=hogehoge,Password=hogegepassword
</pre>
]]></content:encoded>
			<wfw:commentRss>http://bougaidenpa.org/wanatabe/archives/35/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DRBD+Heartbeat で NFS Server をクラスタ化してみる</title>
		<link>http://bougaidenpa.org/wanatabe/archives/34</link>
		<comments>http://bougaidenpa.org/wanatabe/archives/34#comments</comments>
		<pubDate>Wed, 06 Feb 2008 13:38:39 +0000</pubDate>
		<dc:creator>wanatabe</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://bougaidenpa.org/wanatabe/?p=34</guid>
		<description><![CDATA[
今回は DRBD + Heartbeat で NFS Server を HA クラスタ 構成にしてみます。
結論としては、F/O 時にイマイチうまくできなかったのですが、過程も大事ということでメモ。


テストにあたって Setup of high availability NFS servers を参考にしました。


DRBD のインストールや設定については DRBD on CentOS 5 の記事のような感じです。
Heartbeat との組み合わせについては MySQL DRBD Heartbear HA の記事のように設定しています。
OS 環境は同じく VMWare Server 上の CentOS 5 を使用します。


環境


OS
ホスト名
実IPアドレス
仮想IPアドレス
DRBDデバイス名
NFS マウントポイント

CentOS 5
toire
192.168.159.128
192.168.159.130
/dev/drbd0
/data


CentOS 5
ohuro
192.168.159.129
192.168.159.130
/dev/drbd0
/data



NFS Server の準備

NFS がインストールされていなかったので、yum でインストールしました。


# yum -y install nfs-utils



プライマリの設定
NFS 共有のディレクトリを作成します。/data としました。

toire# mkdir /data
toire# mount -t [...]]]></description>
			<content:encoded><![CDATA[<p>
今回は DRBD + Heartbeat で NFS Server を HA クラスタ 構成にしてみます。</p>
<p>結論としては、F/O 時にイマイチうまくできなかったのですが、過程も大事ということでメモ。
</p>
<p>
テストにあたって <a href="http://www.linux-ha.org/ja/HaNFS_ja">Setup of high availability NFS servers</a> を参考にしました。
</p>
<p>
DRBD のインストールや設定については <a href="http://bougaidenpa.org/wanatabeentry/drbd_on_centos_5">DRBD on CentOS 5 の記事</a>のような感じです。<br />
Heartbeat との組み合わせについては <a href="http://bougaidenpa.org/wanatabeentry/mysql_drbd_heartbeat_ha">MySQL DRBD Heartbear HA の記事</a>のように設定しています。<br />
OS 環境は同じく VMWare Server 上の CentOS 5 を使用します。
</p>
<p></p>
<h3>環境</h3>
<table border=1>
<tr>
<th>OS</th>
<th>ホスト名</th>
<th>実IPアドレス</th>
<th>仮想IPアドレス</th>
<th>DRBDデバイス名</th>
<th>NFS マウントポイント</th>
<tr>
<td>CentOS 5</td>
<td>toire</td>
<td>192.168.159.128</td>
<td>192.168.159.130</td>
<td>/dev/drbd0</td>
<td>/data</td>
</tr>
<tr>
<td>CentOS 5</td>
<td>ohuro</td>
<td>192.168.159.129</td>
<td>192.168.159.130</td>
<td>/dev/drbd0</td>
<td>/data</td>
</tr>
</table>
<p></p>
<h3>NFS Server の準備</h3>
<p>
NFS がインストールされていなかったので、yum でインストールしました。
</p>
<p><pre class=sourcecode>
# yum -y install nfs-utils
</pre>
</p>
<p></p>
<h3>プライマリの設定</h3>
<p>NFS 共有のディレクトリを作成します。/data としました。</p>
<pre class=sourcecode>
toire# mkdir /data
toire# mount -t ext3 /dev/sdb1 /data
toire# mkdir /data/userdata
</pre>
<p>/var/lib/nfs を共有ディスクに移動してシンボリックリンクを作成します。</p>
<pre class=sourcecode>
toire# cp -R /var/lib/nfs /data
toire# mv /var/lib/nfs /var/lib/_nfs
toire# ln -s /data/nfs /var/lib/nfs
</pre>
<p></p>
<h3>セカンダリの設定</h3>
<p>/var/lib/nfs を削除してシンボリックリンクを作成します。</p>
<pre class=sourcecode>
ohuro# mv /var/lib/nfs /var/lib/_nfs
ohuro# ln -s /data/nfs /var/lib/nfs
</pre>
<p></p>
<h3>プライマリ、セカンダリ両方の設定</h3>
<p>/etc/exports を編集します。テストなので簡素にしました。</p>
<pre class=sourcecode>
/data/userdata *(rw,sync)
</pre>
<p>エクスポートします。</p>
<pre class=sourcecode>
# exportfs -a
</pre>
<p>/etc/ha.d/haresourses を設定します。</p>
<pre class=sourcecode>
toire drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 192.168.159.130/24 nfs
</pre>
<p>プライマリの /data をアンマウントします。</p>
<pre class=sourcecode>
toire# umount /dev/sdb1
</pre>
<p></p>
<h3>Heartbeat と DRBD を起動</h3>
<pre class=sourcecode>
# modprobe drbd
# /etc/init.d/heartbeat start
# /etc/init.d/drbd start
</pre>
<p>プライマリ側で drbdadm コマンドを実行します。</p>
<pre class=sourcecode>
toire# drbdadm primary r0
</pre>
<p>プライマリの状態を確認するとこんな感じになります。</p>
<pre class=sourcecode>
toire# cat /proc/drbd
version: 8.0.6 (api:86/proto:86)
SVN Revision: 3048 build by buildsvn@c5-i386-build, 2008-02-06 01:17:51
0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
ns:552 nr:408 dw:960 dr:242 al:3 bm:23 lo:0 pe:0 ua:0 ap:0
resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0
act_log: used:0/257 hits:135 misses:3 starving:0 dirty:0 changed:3
</pre>
<p>そしてセカンダリの状態を確認するとこんな感じになります。</p>
<pre class=sourcecode>
ohuro# cat /proc/drbd
version: 8.0.6 (api:86/proto:86)
SVN Revision: 3048 build by buildsvn@c5-i386-build, 2008-01-06 01:17:51
0: cs:Connected st:Secondary/Primary ds:UpToDate/UpToDate C r---
ns:408 nr:552 dw:960 dr:53 al:5 bm:5 lo:0 pe:0 ua:0 ap:0
resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0
act_log: used:0/257 hits:97 misses:5 starving:0 dirty:0 changed:5
</pre>
<p>プライマリでデバイスがマウントされているかを確認します。(/dev/drbd0 がマウントされてることが確認できます)</p>
<pre class=sourcecode>
toire# df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
3555040   1078772   2292768  32% /
/dev/sda1               101086     16041     79826  17% /boot
tmpfs                    95304         0     95304   0% /dev/shm
/dev/drbd0             2063404     35920   1922668   2% /data
</pre>
<p></p>
<h3>テストしてみる</h3>
<p>クライアントのホストからマウントしてみます。(クライアントは別途用意しました)</p>
<pre class=sourcecode>
client# mount 192.168.113.135:/data/userdata /mnt/mpoint
</pre>
<p>無事にマウントできれば OKです。</p>
<p></p>
<h3>うまくいかなかったところ</h3>
<p>この状態でプライマリサーバの Heartbeat のシャットダウンを試みたところ、シャットダウン途中で固まってしまい、クライアントのほうでも共有にアクセスすると、固まってしまった。<br />
しばらくすると、プライマリサーバの OS 自体がシャットダウンをはじめました。<br />
(split-brain 状態になって DRBD の何かのハンドラ(pri-lost-after-sb とか)が呼ばれたとか？)<br />
そんで、プライマリサーバがシャットダウンされると、セカンダリサーバが DRBD ようやくプライマリに昇格して、クライアントから共有が見えるようになりました。<br />
要調査です。</p>
<p></p>
<h3>次に試すかもしれないこと</h3>
<p>
<a href="http://www.linux-ha.org/ja/HaNFS_ja">setup of high availability NFS servers</a> を見て、NFS のロックサービスの設定をしていないことに気づいた。<br />
つまり NFS Server がダウンしたことを rpc.statd がクライアントに通知できていないからなのかも。<br />
/etc/init.d/nfslock を以下のようにするといいかも。あとで試すかも。</p>
<pre class=sourcecode>
start() {
...
echo -n $"Starting NFS statd: "
...
daemon rpc.statd "$STATDARG" -n &lt;cluster_host_name&gt;
....
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://bougaidenpa.org/wanatabe/archives/34/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>awk で GET データを受け取る</title>
		<link>http://bougaidenpa.org/wanatabe/archives/33</link>
		<comments>http://bougaidenpa.org/wanatabe/archives/33#comments</comments>
		<pubDate>Thu, 31 Jan 2008 17:34:22 +0000</pubDate>
		<dc:creator>wanatabe</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://bougaidenpa.org/wanatabe/?p=33</guid>
		<description><![CDATA[
awk で GET データを受け取ることはあまり無いと思うが、ちょっとやってみたのでメモ。


GET かどうかを判定して、&#8221;&#038;&#8221; でデータを区切った後に、入力データだけを取り出す。
その後はデコードしたり、文字チェックしたりすればいいですかね。


method=ENVIRON["REQUEST_METHOD"];
if(ENVIRON["QUERY_STRING"]){
if(method=="GET"){
str=ENVIRON["QUERY_STRING"];
split(str, a, "&#038;");
# field parse
field1=substr(a[1], index(str, "=") + 1);
field2=substr(a[2], index(str, "=") + 1);
# decode したりあれこれする
・・・
・・・
}
}

]]></description>
			<content:encoded><![CDATA[<p>
awk で GET データを受け取ることはあまり無いと思うが、ちょっとやってみたのでメモ。
</p>
<p>
GET かどうかを判定して、&#8221;&#038;&#8221; でデータを区切った後に、入力データだけを取り出す。<br />
その後はデコードしたり、文字チェックしたりすればいいですかね。
</p>
<pre class=sourcecode>
method=ENVIRON["REQUEST_METHOD"];
if(ENVIRON["QUERY_STRING"]){
if(method=="GET"){
str=ENVIRON["QUERY_STRING"];
split(str, a, "&#038;");
# field parse
field1=substr(a[1], index(str, "=") + 1);
field2=substr(a[2], index(str, "=") + 1);
# decode したりあれこれする
・・・
・・・
}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://bougaidenpa.org/wanatabe/archives/33/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sed で携帯の IP アドレスリストを作る</title>
		<link>http://bougaidenpa.org/wanatabe/archives/32</link>
		<comments>http://bougaidenpa.org/wanatabe/archives/32#comments</comments>
		<pubDate>Tue, 22 Jan 2008 14:08:51 +0000</pubDate>
		<dc:creator>wanatabe</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://bougaidenpa.org/wanatabe/?p=32</guid>
		<description><![CDATA[
sed だけでほとんどやっつけてみたいということで。
コマンドラインから無理やり携帯の IP アドレスリストを取得してみた。
各社のウェブサイトに curl でアクセスして HTML をいじるので、リニューアルされたら即アウト。
「今のところ取れる」というだけの話。ナマモノのようだ。

DoCoMo
リストになっているところから IP アドレスっぽいのを抜き出した。

curl $DOCOMO_URL &#124; sed -n '/^.*&#60;li&#62;\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\/[0-9]\{1,3\}\)&#60;\/li&#62;.*$/{s//\1/;p}'  > docomo.lst

ezweb
IP アドレスとサブネットマスクで 2 行で書かれていたので、後で N コマンドでくっつけた。
パイプで渡しているのでイマイチかもしれない。

curl $EZWEB_URL &#124; sed -n '/^.*&#60;div.*&#62;\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)&#60;\/div&#62;.*/,/^.*&#60;div.*&#62;\(\/[0-9]*\)&#60;\/div&#62;.*/{s//\1/;p}'  &#124; sed '/^[0-9].*$/N;s/\n//' > ezweb.lst

SoftBank
テーブルの中に入ってたので抜き出した。

curl $SOFTBANK_URL &#124; sed -n '/^.*"&#62;\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)\(\/[0-9]*\).*/{s//\1\3/;p}' > softbank.lst

WILLCOM
改行コードを変換する sed を一つ入れた。

curl $WILLCOM_URL &#124; sed 's/\r/\n/g' &#124; sed -n '/^&#60;td.*"&#62;\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\/[0-9]*\).*/{s//\1/;p}' > willcom.lst

.htaccess を作る
awk と組み合わせて、携帯から以外のアクセスを拒否する [...]]]></description>
			<content:encoded><![CDATA[<p>
sed だけでほとんどやっつけてみたいということで。<br />
コマンドラインから無理やり携帯の IP アドレスリストを取得してみた。</p>
<p>各社のウェブサイトに curl でアクセスして HTML をいじるので、リニューアルされたら即アウト。<br />
「今のところ取れる」というだけの話。ナマモノのようだ。
</p>
<h4>DoCoMo</h4>
<p>リストになっているところから IP アドレスっぽいのを抜き出した。</p>
<pre class=sourcecode>
curl $DOCOMO_URL | sed -n '/^.*&lt;li&gt;\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\/[0-9]\{1,3\}\)&lt;\/li&gt;.*$/{s//\1/;p}'  > docomo.lst
</pre>
<h4>ezweb</h4>
<p>IP アドレスとサブネットマスクで 2 行で書かれていたので、後で N コマンドでくっつけた。<br />
パイプで渡しているのでイマイチかもしれない。</p>
<pre class=sourcecode>
curl $EZWEB_URL | sed -n '/^.*&lt;div.*&gt;\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)&lt;\/div&gt;.*/,/^.*&lt;div.*&gt;\(\/[0-9]*\)&lt;\/div&gt;.*/{s//\1/;p}'  | sed '/^[0-9].*$/N;s/\n//' > ezweb.lst
</pre>
<h4>SoftBank</h4>
<p>テーブルの中に入ってたので抜き出した。</p>
<pre class=sourcecode>
curl $SOFTBANK_URL | sed -n '/^.*"&gt;\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)\(\/[0-9]*\).*/{s//\1\3/;p}' > softbank.lst
</pre>
<h4>WILLCOM</h4>
<p>改行コードを変換する sed を一つ入れた。</p>
<pre class=sourcecode>
curl $WILLCOM_URL | sed 's/\r/\n/g' | sed -n '/^&lt;td.*"&gt;\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\/[0-9]*\).*/{s//\1/;p}' > willcom.lst
</pre>
<h4>.htaccess を作る</h4>
<p>awk と組み合わせて、携帯から以外のアクセスを拒否する .htaccess も作ってみた。</p>
<pre class=sourcecode>
# アクセスルール
cat &lt;&lt; EOS &gt; .htaccess
order deny,allow
deny from all
EOS
# DoCoMo
curl $DOCOMO_URL | sed -n '/^.*&lt;li&gt;\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\/[0-9]\{1,3\}\)&lt;\/li&gt;.*$/{s//\1/;p}' | awk 'NR==1{print "# docomo"}{print "allow from " $0}END{print ""}' &gt;&gt; .htaccess
# ezweb
curl $EZWEB_URL | sed -n '/^.*&lt;div.*&gt;\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)&lt;\/div&gt;.*/,/^.*&lt;div.*&gt;\(\/[0-9]*\)&lt;\/div&gt;.*/{s//\1/;p}' | sed '/^[0-9].*$/N;s/\n//' | awk 'NR==1{print "# ezweb"}{print "allow from " $0}END{print ""}' &gt;&gt; .htaccess
# SoftBank
curl $SOFTBANK_URL | sed -n '/^.*"&gt;\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)\(\/[0-9]*\).*/{s//\1\3/;p}' | awk 'NR==1{print "# softbank"}{print "allow from " $0}END{print ""}' &gt;&gt; .htaccess
# WILLCOM
curl $WILLCOM_URL | sed 's/\r/\n/g' | sed -n '/^&lt;td.*"&gt;\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\/[0-9]*\).*/{s//\1/;p}' | awk 'NR==1{print "# willcom"}{print "allow from "$0}' &gt;&gt; .htaccess
</pre>
<p>かなり見にくくなった。</p>
]]></content:encoded>
			<wfw:commentRss>http://bougaidenpa.org/wanatabe/archives/32/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>awk を書いてみる</title>
		<link>http://bougaidenpa.org/wanatabe/archives/31</link>
		<comments>http://bougaidenpa.org/wanatabe/archives/31#comments</comments>
		<pubDate>Sun, 13 Jan 2008 18:47:26 +0000</pubDate>
		<dc:creator>wanatabe</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://bougaidenpa.org/wanatabe/?p=31</guid>
		<description><![CDATA[
awk というと、列を取り出すことくらいにしか使っていなかったので、他のことにも使えるように練習をしてみる。
特に何かに使うわけではないけど、練習がてら /var/log/secure ログファイルの中の、ssh の認証で 3 回以上失敗した IP アドレスと失敗回数を awk で拾ってみた。


sed -n '/Failed/s/.* sshd.*Failed password for.* \([0-9.]*\) port .*/\1/p' /var/log/secure &#124; awk 'NR==1{oip=$1;num=1;next}{nip=$1}oip~nip{++num;next}oip!~nip{if(num>=3){print num,oip}oip=nip;num=1;next}'


練習用なので自分のために解説をすると…
まず sed で Failed した IP アドレスだけを抜く（全部 awk でできるかもしれないけど sed が楽）。


sed -n '/Failed/s/.* sshd.*Failed password for.* \([0-9.]*\) port .*/\1/p' /var/log/secure


それから awk に渡す。
まず一行目の IP をとって比較用の変数に入れてカウントして、次の行に処理を移行する。


awk 'NR==1{oip=$1;num=1;next}


次の行の IP をとって別の変数に入れて、


{nip=$1}


前の行の IP と現在の行の IP を比べて同じならカウントして次の行に評価を移行。


oip~nip{++num;next}


違う IP [...]]]></description>
			<content:encoded><![CDATA[<p>
awk というと、列を取り出すことくらいにしか使っていなかったので、他のことにも使えるように練習をしてみる。<br />
特に何かに使うわけではないけど、練習がてら /var/log/secure ログファイルの中の、ssh の認証で 3 回以上失敗した IP アドレスと失敗回数を awk で拾ってみた。
</p>
<pre class=sourcecode>
sed -n '/Failed/s/.* sshd.*Failed password for.* \([0-9.]*\) port .*/\1/p' /var/log/secure | awk 'NR==1{oip=$1;num=1;next}{nip=$1}oip~nip{++num;next}oip!~nip{if(num>=3){print num,oip}oip=nip;num=1;next}'
</pre>
<p>
練習用なので自分のために解説をすると…<br />
まず sed で Failed した IP アドレスだけを抜く（全部 awk でできるかもしれないけど sed が楽）。
</p>
<pre class=sourcecode>
sed -n '/Failed/s/.* sshd.*Failed password for.* \([0-9.]*\) port .*/\1/p' /var/log/secure
</pre>
<p>
それから awk に渡す。<br />
まず一行目の IP をとって比較用の変数に入れてカウントして、次の行に処理を移行する。
</p>
<pre class=sourcecode>
awk 'NR==1{oip=$1;num=1;next}
</pre>
<p>
次の行の IP をとって別の変数に入れて、
</p>
<pre class=sourcecode>
{nip=$1}
</pre>
<p>
前の行の IP と現在の行の IP を比べて同じならカウントして次の行に評価を移行。
</p>
<pre class=sourcecode>
oip~nip{++num;next}
</pre>
<p>
違う IP なら新しい IP を比較用の変数に入れてカウントを 1 に戻して次の行へ移行。もしカウントが 3以上になっていたら、カウント数と IP を表示する。
</p>
<pre class=sourcecode>
oip!~nip{if(num>=3){print num,oip}oip=nip;num=1;next}'
</pre>
<p>
表示結果をいじって そのまま iptables で DROP という手を思いついたが、<br />
ブルートフォースアタック対策は iptables で便利にできるので、このようなスクリプトは不要。<br />
それにしても、何も対策していなかったので、このスクリプトで凄い数字が出た。</p>
]]></content:encoded>
			<wfw:commentRss>http://bougaidenpa.org/wanatabe/archives/31/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
