« 2013年4月 | トップページ | 2015年1月 »

2014年2月23日 (日)

dhcpstatusでIPアドレスリース状況を確認する(dhcpstatusのCPU100%対策)

RaspberryPiはDHCPサーバを兼ねているので、dhcpstatusを使ってそのIPアドレスリース状況をwebで見られるようにしています。こんな感じで便利。

Dhcpstatus_web

最初、Wheezy-Raspbianに含まれる isc-dhcp-server 4.2.2.dfsg.1-5+deb70u6ではうまく動きませんでした。dhcpstatusがループし、CPU使用率100%となってしまいます。dhcpd.leasesに新しいserver-duidエントリが増えていて、dhcpstatusがこれに対応できないようです。こうなるとkillするしかありませんので、dhcpstatusにちょっと手を加えています。

この対応を含めて手順を残しておきます。
※isc-dhcp-serverとapacheはインストール済みとします。

■ダウンロード
cd
wget http://prdownloads.sourceforge.net/dhcpstatus/dhcpstatus_0.60.tar.gz

■解凍
tar xfvz dhcpstatus_0.60.tar.gz

■ライブラリを解凍
sudo mkdir /usr/local/dhcpstatus
cd /usr/local/dhcpstatus
sudo tar -xvf ~/dhcpstatus_0.60/libraries.tar

■ファイルの確認
ls -l /usr/local/dhcpstatus/dhcpstatus/*.pm
ls -l /usr/local/dhcpstatus/dhcpstatus.ini

■リースファイルその他の場所指定
sudo vi dhcpstatus.ini
----
#conf_file=/etc/dhcpd.conf
conf_file=/etc/dhcp/dhcpd.conf
----
#leases_file=/etc/dhcpd.leases
leases_file=/var/lib/dhcp/dhcpd.leases
----
show_whole_subnet=1
----

■WEBサーバ用のディレクトリ作成とCGIの配布
sudo mkdir /var/www/dhcpstatus
sudo cp -p ~/dhcpstatus_0.60/scripts/dhcpstatus.cgi /var/www/dhcpstatus

CLI実行用のファイルも配布する場合はここも
sudo cp -p ~/dhcpstatus_0.60/scripts/dhcpstatus /usr/local/bin
vi /usr/local/bin/dhcpstatus
----
#!/usr/bin/perl -w
----

■dhpcd.leasesにserver-duidのエントリがあるとループしてしまうことがあるトラブル回避。
sudo vi dhcpstatus_subnet.pm
44行目あたり。太字部分を追加
----
sub get_active_lease_ips {
my %lease_ips;
LEASE:
while (@_) {

if ($_[0] eq "server-duid") { # ignore server-duid statement.(2013/09/26)
while (shift ne ";") {}
next LEASE;
}

if ($_[0] ne "lease") { # ignore anything that isn't a lease.
while (shift ne "}") {}
next LEASE;
}
shift; # move past the "lease" keyword.
my $ip = shift; # get the ip address of the lease.
shift; # move past the opening brace.
LEASE_PARM:
while ($_[0] ne "}") {
----

sudo vi dhcpstatus.pm
159行目あたり。太字部分を追加
----
sub get_active_leases {
use dhcpstatus::Lease;
my $ip_min = shift;
my $ip_max = shift;

my $num_min = &ip2num($ip_min); # numbers are easier to do arithmetic on
my $num_max = &ip2num($ip_max); # than IP addresses.
my %lease;
LEASE:
while (@_) {
if ($_[0] eq "server-duid") { # ignore server-duid statement
while (shift ne ";") {}
next LEASE;
}

if ($_[0] ne "lease") { # ignore anything that isn't a lease.
while (shift ne "}") {}
next LEASE;
}
shift; # keyword "lease".
my $ip = shift;
----

■HTTPの設定
sudo vi /etc/apache2/conf.d/dhcpstatus.conf
----
Alias /dhcpstatus/ /var/www/dhcpstatus/
<Directory /var/www/dhcpstatus/>
DirectoryIndex dhcpstatus.cgi
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
----

■Apacheのcgiハンドラ有効化
sudo vi /etc/apache2/mods-available/mime.conf
----
AddHandler cgi-script .cgi
----

■apacheのリロード
sudo service apache2 reload

■ブラウザからアクセス
http://127.0.0.1/dhcpstatus/

■参考にしたページ
DHCPStatus
DHCPstatus - UNIXサーバメモメモ - FC2

IIJのDNSはやっぱり速かった

RaspberryPiにunboundを入れて自宅DNSキャッシュサーバとして運用しています。
フォワーダとして各社DNSを設定して、クエリー時間(unbound-control statsのhistogram値)を比較してみました。
それぞれ1週間ほど運用して集計しています。
山が左にあるほど高性能(短時間で処理できている)です。
なおDNSSECは有効です。(unbound.confに module-config: "iterator"の記述無し)

IIJ: 210.130.1.1,210.130.0.1


Unbound_histogram_iij
速い。大半のクエリを64ms未満で処理し、かつ安定している。(山が急峻)

@nifty: 202.248.37.74,202.248.20.133


Unbound_histogram_nifty
IIJに較べると山が右に寄っている。かつ山がなだらか(ちょっと性能がばらついているか?)

google dns: 8.8.8.8,8.8.4.4


Unbound_histogram_google
IIJとniftyの中間くらいか。ユニークな結果。山の形はやや広いが、たまにすごく速いときがある。

(参考)フォワーダ無し(ROOT):


Unbound_histogram_root
RaspberryPiにはちょっと荷が重いようです。

あくまでDNSSEC有効で、という条件ですが、さすがというかIIJが面目を保った印象。
もっともIIJは2013/12/2でオープンリゾルバ提供を辞めてしまいましたので、追試はできませんが。

なお、@niftyもDNSSEC無しで運用すればIIJと同じくらいの性能が出ます。(集計してないけど)

2014年2月22日 (土)

ATERM WR6670Sのコンデンサ交換

使い初めて6年を超えたので特に不具合出ていないがATERM WR6670Sの電解コンデンサを交換してみた。
Wr6670s_

交換前のコンデンサ:
TAICON PW 470uF 25V 105℃ x2
TAICON PW 100uF 25V 105℃ x2
TAICON PW 22uF 25V 105℃ x1

TAICON社のWEBで見ると「低インピーダンス品・105℃ 2000~5000時間」となっているので、結構いいやつと思われる。
ケースが薄いので高さ12mm以下でないとケースが閉まらない。ということで以下を選んだ。

交換後:
Rubycon MCZ 680uF 16V 105℃ x2 \53x2
東信工業 UTWRZ 100uF 25V 105℃ x2 \21x2
東信工業 UTWRZ 22uF 50V 105℃ x1 \16
計 \164(千石にて)

交換して1週間経ったが、特に問題なく動いている。
取り外したTAICONの容量とESRを計ってみた。

交換前


容量uF(1kHz)ESRΩ(1kHz)
TAICOM 470uF#14650.234
TAICOM 470uF#24580.235
TAICOM 100uF#189.960.276
TAICOM 100uF#290.500.258
TAICOM 22uF16.9430.168

ちなみに交換につかった日本製コンデンサはどうかというと

容量uF(1kHz)ESRΩ(1kHz)
MCZ 680uF#16150.087
MCZ 680uF#26130.091
UTWRZ 100uF#188.540.211
UTWRZ 100uF#290.250.211
UTWRZ 22uF20.300.156

測定は1kHzなので若干低めに出ているが100Hzで計ればほぼ公称容量に近い。
特にTAICONに劣化は無いように見える・・・というか、新品と匹敵している。6年連続稼働してこの性能を維持していることに驚いた。すごい。これなら10年くらい使えたのかもしれない。

まあ予防保守と考えることにします。

« 2013年4月 | トップページ | 2015年1月 »

最近のトラックバック

2017年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
フォト
無料ブログはココログ