‘未分類’ カテゴリーのアーカイブ

DNSサーバへのANY? . な連続リクエスト対応

管理してるサーバのネットワークトラフィックが妙に高まっていてなんだコレ?と調査しておりましたら…

16:00:11.143581 IP (tos 0x0, ttl 233, id 62542, offset 0, flags [none], proto: UDP (17), length: 61) 184.154.183.56.5325 > 60.32.189.190.domain: [no cksum]  32583+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:00:11.143674 IP (tos 0x0, ttl 233, id 62543, offset 0, flags [none], proto: UDP (17), length: 61) 184.154.183.56.5325 > 60.32.189.190.domain: [no cksum]  32583+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:00:11.143738 IP (tos 0x0, ttl 233, id 62544, offset 0, flags [none], proto: UDP (17), length: 61) 184.154.183.56.5325 > 60.32.189.190.domain: [no cksum]  32583+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:00:11.143823 IP (tos 0x0, ttl 233, id 62545, offset 0, flags [none], proto: UDP (17), length: 61) 184.154.183.56.5325 > 60.32.189.190.domain: [no cksum]  32583+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:00:11.143898 IP (tos 0x0, ttl 233, id 62546, offset 0, flags [none], proto: UDP (17), length: 61) 184.154.183.56.5325 > 60.32.189.190.domain: [no cksum]  32583+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:00:11.144194 IP (tos 0x0, ttl  64, id 26513, offset 0, flags [none], proto: UDP (17), length: 56) 60.32.189.190.domain > 184.154.183.56.44493: [bad udp cksum 5296!]  22153 ServFail- q: ANY? . 0/0/1 ar: . OPT UDPsize=4096 (28)
16:00:11.144323 IP (tos 0x0, ttl  64, id 26514, offset 0, flags [none], proto: UDP (17), length: 56) 60.32.189.190.domain > 184.154.183.56.44493: [bad udp cksum 5296!]  22153 ServFail- q: ANY? . 0/0/1 ar: . OPT UDPsize=4096 (28)
16:00:11.144432 IP (tos 0x0, ttl  64, id 26515, offset 0, flags [none], proto: UDP (17), length: 56) 60.32.189.190.domain > 184.154.183.56.44493: [bad udp cksum 5296!]  22153 ServFail- q: ANY? . 0/0/1 ar: . OPT UDPsize=4096 (28)
16:00:11.144539 IP (tos 0x0, ttl  64, id 26516, offset 0, flags [none], proto: UDP (17), length: 56) 60.32.189.190.domain > 184.154.183.56.44493: [bad udp cksum 5296!]  22153 ServFail- q: ANY? . 0/0/1 ar: . OPT UDPsize=4096 (28)

おお、DNSサーバへの激しい連続request。測ったところ50回/秒以上のペースで複数箇所から投げてきてるようでした。request内容も ANY? . ということで、弊社のDNSコンテンツサーバが応答する必要がない(ので ServFailを返している)内容のようです(DNS ampなDDoSのシカケにしては、偽装された?rewuest元IPが色々と分散していて謎です)。

複数箇所から飛んでくるのはDNSサーバの運命ですからしかたないとしてServFailを返すだけでも負荷が高まりますし、帯域も多少埋まって勿体ないのでiptablesでフィルタすることにしました。

tcpdump -n -vvv -X -s1500 -i eth1

にてもう少し詳しくパケットの内容を拾ってみると。

16:22:35.827460 IP (tos 0x0, ttl 238, id 36986, offset 0, flags [none], proto: UDP (17), length: 61) 97.93.19.246.hexarc > 60.32.189.190.domain: [no cksum]  61037+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
   0x0000:  4500 003d 907a 0000 ee11 cd03 615d 13f6  E..=.z......a]..
   0x0010:  3c20 bdbe 1ce5 0035 0029 0000 ee6d 0100  <......5.)...m..
   0x0020:  0001 0000 0000 0001 0000 ff00 0100 0029  ...............)
   0x0030:  2328 0000 0000 0000 0000 0000 00         #(...........
16:22:35.944826 IP (tos 0x0, ttl 233, id 48921, offset 0, flags [none], proto: UDP (17), length: 61) 77.99.52.123.25697 > 60.32.189.190.domain: [no cksum]  6521+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
   0x0000:  4500 003d bf19 0000 e911 96d9 4d63 347b  E..=........Mc4{
   0x0010:  3c20 bdbe 6461 0035 0029 0000 1979 0100  <...da.5.)...y..
   0x0020:  0001 0000 0000 0001 0000 ff00 0100 0029  ...............)
   0x0030:  2328 0000 0000 0000 0000 0000 00         #(...........

な内容でしたので、iptablesにて

iptables -t raw -I PREROUTING -p udp --destination-port 53 \
 -m string --algo kmp --from 30 \
 --hex-string "|010000010000000000010000ff0001000029232800000000000000000000|" \
 -j DROP

とIPパケットの30byte目からのパターンに注目してhex-string形式で指定してみます。
結果:

16:40:37.686016 IP (tos 0x0, ttl 238, id 51404, offset 0, flags [none], proto: UDP (17), length: 61) 97.93.19.246.32175 > 60.32.189.190.domain: [no cksum]  15020+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:40:37.686094 IP (tos 0x0, ttl 238, id 51405, offset 0, flags [none], proto: UDP (17), length: 61) 97.93.19.246.32175 > 60.32.189.190.domain: [no cksum]  15020+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:40:37.686176 IP (tos 0x0, ttl 238, id 51406, offset 0, flags [none], proto: UDP (17), length: 61) 97.93.19.246.32175 > 60.32.189.190.domain: [no cksum]  15020+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:40:37.853317 IP (tos 0x0, ttl 234, id 23094, offset 0, flags [DF], proto: UDP (17), length: 69) 201.6.2.85.14604 > 60.32.189.190.domain: [udp sum ok]  11303% [1au] AAAA? ns.server.st. ar: . OPT UDPsize=4096 (41)
16:40:37.854079 IP (tos 0x0, ttl  64, id 44172, offset 0, flags [none], proto: UDP (17), length: 110) 60.32.189.190.domain > 201.6.2.85.14604:  11303*- q: AAAA? ns.server.st. 0/1/1 ns: server.st. SOA[|domain]
16:40:37.855922 IP (tos 0x0, ttl 234, id 23093, offset 0, flags [DF], proto: UDP (17), length: 69) 201.6.2.85.62860 > 60.32.189.190.domain: [udp sum ok]  15132% [1au] A? ns.server.st. ar: . OPT UDPsize=4096 (41)
16:40:37.856467 IP (tos 0x0, ttl  64, id 44173, offset 0, flags [none], proto: UDP (17), length: 143) 60.32.189.190.domain > 201.6.2.85.62860:  15132*- q: A? ns.server.st. 1/2/2 ns.server.st. A 60.32.189.190 ns: server.st.[|domain]

ServFailも返すことなく、返すべきrequestについては正しく応答を返してますね。
何事も平和が一番です(´ー`)

Facebooktwitterlinkedintumblrmail

LT『baserCMSでホームページをリニューアルしたときのアレコレ』のスライド

オープンソースカンファレンス2012 Kansai@Kyoto の「ライトニングトークfor Business」で話した『baserCMSでホームページをリニューアルしたときのアレコレ』のスライドです。

baserCMSでホームページをリニューアルしたときのアレコレ

書きすぎたとは思っていましたが、実際に話すと思ってた以上にボリュームありすぎでした。

5分なんだってば。失敗。

Facebooktwitterlinkedintumblrmail

明日(OSC2012 Kansai@Kyoto)のブース準備完了

前日に準備おわっちまったぜー。ワイルドじゃないだろ〜?

Facebooktwitterlinkedintumblrmail

Mac で複数ファイルの一括置換ってどうしてます?パート2

<前置き>
 とある休日の午後、grepして置換したい場面が訪れた。
 (そういえば、macでgrepで置換ってどうするんだろう?)と思った。

 早速、googleで『mac grep 置換』で検索してみる。
 すると、なんということでしょう。我が社のブログが一番にヒットするではないですか。

Mac で複数ファイルの一括置換ってどうしてます?パート1

 読んでみて1秒後
 (なんだか難しい・・。)

 そして他の検索候補を見てみると「TextWrangler」を使うといいらしい。
 ということで、「TextWrangler」でgrepで置換する方法を試してみます。

<grepで置換する>
1.「TextWrangler」をインストールする。
 App Storeで検索してインストールします。

2.起動して対象のディレクトリを開く。

3.対象のディレクトリを選択後次のような画面になります。

4.メニューの「Search」→サブメニューの「Search in (選択したディレクトリ名)」を選択します。

5.次の内容でセッティングする。
①紫枠内に対象とする文字列を入力
②緑枠内に置換後の文字列を入力
③黄色枠内で対象のディレクトリが選択されているか確認
④赤枠内の「Replace All」ボタンを押下する。

6.次の内容で実行
①青枠内をチェックすると保存するたびに、ダイアログが出て保存するか聞いてくるので、はずしています。
②赤枠内のProceedで実行します。

7.最後に結果が表示されて完了

Facebooktwitterlinkedintumblrmail

このコマンドどのRPMに入ってたっけと言う時

rpm -q –whatprovides /bin/ls
等と打てばRPMを表示してくれます。
前の環境だとこのコマンドが使えたのにどのRPMを入れたら分からないと言った場合に便利です。

digがbind-utilsに入っているとは思わなかったのです。

Facebooktwitterlinkedintumblrmail

ここでのニックネームをかえました

自社ページリニューアルの準備をしてまして管理者権限を貰いました。
そんで管理ページみたら変更できたので発作的に変えてしまいました。

murabeからmurave、twitterなんかで使ってるやつです。
なるべく統一したほうがいいよなーと思ってたんですよ。

発音は「ムラヴェ」でなく「ムラベ」で結構です。
ぼくも発音できませんし。

Facebooktwitterlinkedintumblrmail

31歳でPHPUnitを使った僕

31歳でPHPUnitを使った僕

プロローグ
これまでPHPUnitを使ってこなかったけど、少し心配になる部分があったので
PHPUnitを使ってみることにした。
——————————————————————
第一章『インストール』
インストールは
ここ
を読んでやりました。

——————————————————————
第二章『テスト対象のファイル』
Calc.php


------------------------------------------------------------------
第三章『コマンドの実行』
このコマンドを実行する。
「phpunit --skeleton-test Calc」

------------------------------------------------------------------
第四章『テストファイル』
このファイルは第三章のコマンドを実行すると自動的に作られます。
(よく出来てるな~。)
CalcTest.php

class CalcTest extends PHPUnit_Framework_TestCase
{
    /**
     * @var Calc
     */
    protected $object;

    /**
     * Sets up the fixture, for example, opens a network connection.
     * This method is called before a test is executed.
     */
    protected function setUp()
    {
        $this->object = new Calc;
    }

    /**
     * Tears down the fixture, for example, closes a network connection.
     * This method is called after a test is executed.
     */
    protected function tearDown()
    {
    }

    /**
     * @covers Calc::add
     * @todo Implement testAdd().
     */
    public function testAdd()
    {
        // Remove the following lines when you implement this test.
        $this->markTestIncomplete(
          'This test has not been implemented yet.'
        );
    }
}

------------------------------------------------------------------
第五章『書き換える』
testAddメソッドを次のように書き換える。

/**
 * @covers Calc::add
 * @todo Implement testAdd().
 */
public function testAdd()
{
    $this->assertEquals(3, $this->object->add(1, 2));
}

------------------------------------------------------------------
第六章『実行する』
このコマンドを実行する。
「phpunit CalcTest」
PHPUnit 3.6.10 by Sebastian Bergmann.

.

Time: 1 second, Memory: 4.00Mb

OK (1 test, 1 assertion)

------------------------------------------------------------------
第七章『Eclipseから実行したい。』
MakeGoodというのを使えばいいらしいです。

------------------------------------------------------------------
第八章『MakeGoodのインストール』
①ヘルプ→新規ソフトウェアのインストール

②追加ボタンを押します。

③次のように入力します。
名前:「MakeGood」
ロケーション:「http://eclipse.piece-framework.com/」

④以下のようにMakeGoodにチェックをいれます。

⑤あとは使用条件に同意出来ればOKを押してインストール完了です。

------------------------------------------------------------------
第九章『MakeGoodの設定』
①Eclipseの環境設定を開く。

②PHPの実行可能ファイルの設定を開き、追加ボタンをクリックします。

③赤枠部分を環境に応じて入力します。

④PHPのデバッグの設定をします。
以下の赤枠部分を環境に応じて選択します。

------------------------------------------------------------------
第十章『MakeGoodのプロジェクトの設定』
①プロジェクトを右クリックしてプロパティをクリックします。
②インクルードパスを設定します。
 ライブラリーの追加をクリックします。

③次へをクリック

④新規ボタンからダイアログをだして「PHPUnit」と入力

⑤PHPUnitが選択されている状態で外部フォルダーの追加をクリックし、
PHPUnitがインストールされているフォルダを選択

このような状態になります。

⑦PHPUnitにチェックをつけて完了をクリック

⑧「ソース」の項目をクリックして「システムインクルードパスの追加ボタン」をクリックします。

⑨プロパティの「MakeGood」の項目を開き、下にある「追加ボタン」をクリックし、テスト対象のフォルダを追加します。

このようにチェックします。

------------------------------------------------------------------
最終章『実際に使ってみる』
①テストプログラムを右クリックしてメニューを出し、「テストの実行」メニューをクリックします。

②ビューにこのように結果が表示されます。

------------------------------------------------------------------
エピローグ
物語風なのにまったく物語がなかったけど。
やっぱりテストを書く気になれる環境があるのはいいことかな~と思う。

Facebooktwitterlinkedintumblrmail

OSC2012 Nagoya. LT for Business『Roundcubeがいい感じな件』

終わりましたー。スライドアップします(ちょい自粛版)。

『Roundcubeがいい感じな件』のスライド(PDF 4.2MB)

Facebooktwitterlinkedintumblrmail

OSC2012 Nagoya 準備出来!

名古屋っす。OSCっす。
久しぶりの愛知っす。昔2年間くらい一宮に住んでたっす(いらない情報)。

ということでブースの準備が出来ました。

OSCは昨日から開催されてまして今日は2日目ですがブースとウチのセミナー(ついでに私のライトニングトーク)は今日なのでウチの本番は今日からって感じです。

峰松のセミナーは15:10から。
『県庁で大活躍(予定)!OpenCOBOL+Perlで汎用機ダウンサイジングに挑んだワケ』
OSCでは同じタイトルで私(村部)と峰松がセミナーやってますが実は別物です。
私のセミナーに参加されたことがある方もぜひ。
峰松がやるときは技術寄りの内容です(私のときは業務寄り)。

私のほうは今回お昼(12:00〜)にライトニングトークをします。
『【飲食OK】ライトニングトークfor Business』の4番手「Roundcubeがいい感じな件」。
OpenCOBOLではなくWebメールネタです。

ブース、セミナー、ライトニングトーク、よろしくおねがいします〜。

Facebooktwitterlinkedintumblrmail

OSC2012 Tokyo/Spring セミナーのスライド

雨の中セミナーに来てくださったみなさま、ありがとうございました。

使用したスライドを(ネタ成分を削除して)http://www.lancard.com/it-model/technology/の技術資料に追加、公開しました。

よろしかったら見てみて下さい。

Facebooktwitterlinkedintumblrmail