WebログやファイヤーウォールログなどIPアドレスが大量に記録されたファイル内のIPアドレスだけを高速にホスト名に逆引きしてくれる jdresolve コマンドがずいぶんと久しぶりに更新されたようです。
私のホストでは、この jdresolve コマンドは無くてはならないものになっています。 IPアドレス→ホスト名 変換するためのユーティリティは複数有り、Apache 付属の logresolve や fastresolve などを試してみましたが jdresolve ほどの使い勝手ではありません。
jdresolve の優れているところは、
- テキスト内のどのフィールドに IPアドレスがあっても構わない。
- 1行内に複数のIPアドレスフィールドがあっても構わない。
- 高速処理。
ということです。
logresolve はApache のログしか考えていないので、最初のフィールドがIPアドレスである必要があるし、1行に1個のIPアドレスしか認識しないし、jdresolve の5倍くらい遅い。
fastresolve というユーティリティも一度試してみましたが、スピードは出るようですが、ドキュメントがプアで何をやっているのかよく分からなくて、ネットワーク回線負荷が上昇しすぎでつかえませんでした。しかもPPP接続が切れてしまう事もあった。
私にとって非常に優れている jdresolve ですが、p5-Net-DNS-0.68 というパッケージに依存しているため、p5-Net-DNS がバージョンアップされてしまうと動かなくなるという問題を抱えており、今まで p5-Net-DNS-0.68 を間違ってアップデートしてしまわないように気を遣いながら運営してきました。
それが、先日パッケージ更新されている事を発見!
本番マシンとは別のマシンで、最新の p5-Net-DNS と jdresolve で試してみました。
p5-Net-DNS-0.79 Perl5 interface to the DNS resolver, and dynamic updates jdresolve-0.6.1_2 IP addresse to hostname program for httpd log files
テストファイル
> cat ip.txt 116.58.172.107 - - [01/Nov/2012:00:00:04 +0900] 116.58.172.107 - - [01/Nov/2012:00:00:09 +0900] 66.249.73.3 - - [01/Nov/2012:00:00:10 +0900] 173.199.115.171 - - [01/Nov/2012:00:00:17 +0900] 173.199.116.179 - - [01/Nov/2012:00:10:47 +0900]
テスト結果
> jdresolve ip.txt tokyo.lifewithunix.jp - - [01/Nov/2012:00:00:04 +0900] tokyo.lifewithunix.jp - - [01/Nov/2012:00:00:09 +0900] crawl-66-249-73-3.googlebot.com - - [01/Nov/2012:00:00:10 +0900] srvxx.com - - [01/Nov/2012:00:00:17 +0900] 173.199.116.179.choopa.com - - [01/Nov/2012:00:10:47 +0900] Total Lines: 5 Total Time : 00:00:00 (0.00 lines/s) Total Hosts: 4 Resolved Hosts: 4 (100.00%) Unresolved Hosts: 0 (0.00%) Average DNS time: 0.0000s per request Max DNS time: 0s (consider this value for your timeout)
期待通りです。これで本番マシンでも p5-Net-DNSを更新出来そう。