2015年10月31日土曜日

Tomato ファームウェアで FreeDNS (afraid.org) を使う

ダイナミック DNS サービスの FreeDNS (afraid.org) を Shibby 版 Tomato ファームウェアをインストールした Linksys WRT54GS で使用してみました。
FreeDNS - Free DNS - Dynamic DNS - Static DNS subdomain and domain hosting
http://freedns.afraid.org/


FreeDNS のダイナミック DNS サービスを登録した WRT54GS です。

今まで DynDns や No-IP を使用してきましたが、これらとは違った設定方法が必要で、初めて設定を行いましたが、ちょっと難しかったことから備忘録として記事としました。

アカウント登録

FreeDNS の公式ウェブサイトから登録を行いました。トップページの一番下のところにある "Sign UP!" (サインアップ)から登録をしました。ちなみに、サインアップ(Sign up)はユーザ登録をする用語で、サインイン(Sign in)はユーザ登録を済ませた後、ログインで使用する用語です。

FreeDNS のウェブサイト

これが実際のユーザ登録画面です。ユーザ登録を行うと登録したメールアドレスへ登録メールが届き、その中にあるアクティベーション(activation)をクリックして登録を完了させます。

ユーザ登録画面

サブドメインの登録

ここでは無料のサブドメインを使用しました。FreeDNS が提供するドメインの中から好きなものを選択して、自由に設定できるサブドメインを作ります。ただ提供されているドメイン名がとても微妙なものばかりで???な感じでした(笑)。この部分の手続きの詳細は問題なくできますので割愛します。

Tomato ファームウェアへ登録

FreeDNS の IP アドレスの更新方法は少し変わっているようで、単純にユーザ名やパスワードの設定では出来ないようになっています。Tomato ファームウェアの [DDNS] の中で FreeDNS を選択すると見慣れない "Token/URL" (トークン)しか設定項目が表示されないことに気づきます。

さてこの "Token/URL" を入手しなければならないのですが、これがいまいちよく解らない部分でした。いろいろとネット上を調べてみると、"Direct URL"(ダイレクト URL)の項目で IP アドレスの更新を行ったときに使用される URL の "?" マークの以降の文字列がトークン(Token/URL)なのだそうです。

以下のようにして "Direct URL" でウェブサイト上から一度 IP アドレスの更新を行なって、URL を取得します。

メインメニューを選択
ダイナミック DNS を選択
ダイレクト URL をクリックすると新しいページへジャンプしてアップデートが行われます。
そのジャンプしたページの URL をコピー&ペーストで取得します。

そして得られたトークン(Token/URL)をTomato ファームウェアへ設定します。これで "save"  ボタンを押して保存すると、自動的に更新が行われて、その更新の成否が "Last Result" に表示されます。問題がなければこれで設定終了です。

Tomato ファームウェアの DDNS の設定画面

注意事項

IP アドレスのアップデートのページにおいて "Rotate Authentication Token" の部分をクリックするとトークン(Token/URL)が変化してしまいます。不用意にクリックしないように注意しましょう。クリックしてしまった場合、再度 "Direct URL" のところからトークンを取得し直して Tomato ファームウェアの再設定をすることとなります。


2015年10月30日金曜日

Linksys WRT54GS で DLNA サーバがハングアップ

Shibby 版の Tomato k26 ファームウェアに入れ換えたリンクシス WRT54GS の DLNA サーバを試してみたところ、フリーズしてしまいました。

経緯

Tomato k24 版のファームウェアのときには、[USB and NAS] の項目に存在していなかった [Media Server] を試してみたくなり、挑戦してみました。

DLNA サーバの設定

FAT フォーマットした 8GB の USB メモリへ音楽ファイルをコピーして、WRT54GS の USB ソケットへ装着しました。これで二個の USB メモリが装着されている形となっています。

引きひもが付いている USB メモリが追加したものです。
認識された2つ目の USB メモリです。
これが [Media Server] の設定項目です。

マシンがフリーズ

ここで [Media Server] の項目で DLNA サーバの設定をしてしばらく放置していたところ、WRT54GS がフリーズしていました。無線 LAN の電波は発射されていましたが、有線 LAN も 無線 LAN も反応がなくなってしまいました。USB メモリを抜いて再起動させたところ、元通りに動作をするようになりました。

このフリーズした原因は不明ですが、おそらく DLNA サーバ動作のためにメモリ不足が発生したのではないかと想像しています。

元々メモリの少ない無線LANルータへいろいろな仕事をさせてしまうのが間違えなのかもしれません。もっとメモリに余裕のある無線 LAN ルータを入手した時点で再度確認をしてみたいと思います。

2015年10月29日木曜日

Linksys SPA942 の電源ソケットのセンターピンの接触不良

先日 ekiga.net へ接続を行った IP 電話機のリンクシス SPA942 の電源ソケットのセンターピンの接触不良を対策しました。

電源ソケットの調子が悪い SPA942 です。

症状

普通によくある電源プラグを触ると瞬間的に電源が切れて、再び接触するようで電話機が再起動してしまいます。他の電源ソケットと同様にセンターピンの根元のカシメてある部分の緩みは原因のようです。

接触不良の電源ソケットです。

分解

そこで SPA942 を分解して、電源ソケットのセンターピンへ対策を行うこととしました。

筐体裏側のネジを外してボードが見えるようにしました。

筐体裏蓋を外したところです。
シールドケースの中にも固定ネジがありました。

ボードを固定しているネジを外してボードを取り外しました。なおネジはシールドケースの中にもあります。

筐体前面からボードを取り外したところです。

電源ソケットは簡単に取り外すことが出来ない状態でした。段違いの二枚のプリント印刷基盤を固定しているピンヘッダのすぐ脇にあって、プリント印刷基盤の影に隠れて電源ソケットの端子が見えない状態でした。

電源ソケットの端子は二枚のプリント印刷基盤に挟まれた間にあります。
写真がピンぼけです。

二枚のプリント印刷基盤の分離を行いました。ピンヘッダに盛りハンダを行なって蓄熱効果でピンヘッダを抜き去りました。

二枚のプリント印刷基盤を固定しているピンヘッダです。
周囲に電極が多数存在していますので、マスキングテープで覆っておきました。
ピンヘッダを取り外したところです。

そしてようやく電源ソケットの端子が見えるようになりました。ここでさらに電源ソケットをプリント印刷基盤から取り外してセンターピンのカシメの様子を見ることができるようになりました。

プリント印刷基盤から電源ソケットを取り外したところです。

センターピンのカシメ部分をハンダで固定した後、センターピンからリード線の芯線一本をラグ板にハンダ付けしておきました。もっと太いものをハンダ付けしたかったのですが、ここの部分に高さが発生すると、元通りに電源ソケットをハンダ付けできなくなるため、最低限度の処置だけを行いました。

センターピンへ撚り線の中の一本をハンダ付けしました。

この後、電源ソケットをハンダ付けした後、ピンヘッダをハンダ付けして、全体を組み立てなおしました。

センターピン対策を行った電源ソケットをハンダ付けしたところです。

動作確認

電源プラグを揺すっても電源が切れることはなくなりました。やはりあのセンターピンが問題でした。

我が家には SPA941 と SPA942 が合計5台あります。残り4台も同じ症状を抱えているのです(涙)。今日の修理でかなり苦労したこともあり、残りも修理するか悩ましいところです。SPA942 については、イーサネット・ケーブルから電源を供給する PoE 機能があるので、この機能を使えば問題ないのは確認済みです。PoE に対応していない SPA941 だけでも電源ソケットのセンターピン対策を今後行なっておきたいと思っています。

Linksys WRT54GS へ Tomato k26 をインストール

10 月 15 日に壁へ設置した リンクシス WRT54GS は、その後、順調に動作していましたが、ちょっと困った問題が発生しました。それは USB メモリの内容を FTP でデータのダウンロードをしていたところ、WRT54GS が再起動してしまいました。原因は不明です。
Linksys WRT54GS を壁に設置
http://near-unix.blogspot.jp/2015/10/linksys-wrt54gs_15.html

壁に取り付けていたリンクシス WRT54GS です。

問題の症状

実のところ、この現象は何度か経験をしています。WRT54GS へ USB ポートを設置した後、散々通信テストを行なって、問題がないことを確かめていたつもりでした。どうも起動してしばらくの間は問題なく USB メモリの内容をアップロード/ダウンロードすることができるのです。しかし一週間ぐらい連続して稼動している状態で FTP 転送を行うと、アップロード/ダウンロードの転送が終わった直後に何故か WRT54GS が再起動してしまうのです。

フリーズするのではなく再起動となってしまうのは、システムの状態を監視しているワッチドック(番犬)タイマーの働きによるものだと思います。このワッチドック・タイマーがなぜ起動してしまうのかが問題なところで、おそらくシステムメモリが逼迫しているのだろうと思われます。起動してから短時間のうちには、問題となるメモリの逼迫現象が発生しないのだと想像しているところです。

解決策

解決策としては、現在 Shibby 版の Tomato ファームウェアの linux 2.4 系のものを使用しているものを linux 2.6 系のものにアップグレードして動作状況を確認してみることとしました。

linux 2.4 系カーネルはとても優秀なものですが、USB などのホットプラグな機器の動作においては、linux 2.6 系カーネルの方が優れているとされています。そこで、通信転送速度などの面では見劣りのする linux 2.6 系カーネルを使用したファームウェア(※1)ですが、やはりルータというネットワークの要の部分を担うところですので安定性を第一に考えて linux 2.6 系カーネルを使用したファームウェアを導入することとしました。
今までの k24 ファームウェア
tomato-NDUSB-1.28.5x-124-VPN.trx

新規インストールの k26 ファームウェア
tomato-K26USB-1.28.RT-MIPSR1-132-VPN.zip

※1 参考記事
Tomato by Shibby の k24 と k26 ファームウェアの比較

http://near-unix.blogspot.jp/2014/07/tomato-by-shibby-k24-k26.html

インストール

ブラウザからの設定画面からアップグレード・インストールしました。念の為にインストール時に設定値を初期化する設定でインストールを行いました。

WRT54GS へインストールしていた k24 系 Tomato ファームウェア
WRT54GS へインストールした k26 系 Tomato ファームウェア

設定と動作確認

新しいファームウェアのインストールが終了したところで、必要な設定を行なって稼動を開始させました。

FTP 転送でファイルのアップロード/ダウンロードをしばらく繰り返しましたが問題はなさそうでした。ここで少し気づいたことがありました。k24 系のファームウェアのときには、600KB/s 程度までしか通信転送速度がありませんでしたが、新しい k26 系のファームウェアでは 700KB/s 〜 800KB/s 程度の速度が出ていました。無線 LAN 部分などは、k26 系の方が速度が遅い状態だったので、意外な発見でした。

今後の予定

今後しばらく稼動をさせて USB メモリへのアクセスで再起動する現象が発生するか確認したいと思います。

2015年10月28日水曜日

NETGEAR USB 無線 LAN アダプタ WG111T を入手

ネットギアの USB 型無線 LAN アダプタ(2.4GHz 802.11b/g)の WG111T をインターネット・オークションにて入手しました。
今回入手したネットギア WG111T の表面です。
ネットギア WG111T の裏面です。

ar5523ドライバを使用する無線LANアダプタのようで、すでに Debian では ar5523 ドライバにデバイス ID (1385:4250 と 1385:4251)が登録されている製品でした。そのため、今まで私が入手していた ar5523 の無線LANアダプタのように新規にデバイス ID の登録は必要ありませんでした。

WG111T のキャップを取り外したところです。
この角度からだと筐体表面の溝の部分に放熱用の通気口が存在しているのが見えます。

Debian Jessie の場合、ar5523 のチップで使用するファームウェアを事前にインストールしておく必要があります。
# aptitude install firmware-atheros

なお今回たまたま発見したのですが、以前から ar5523 ドライバには同じ製品に二つのデバイス ID が存在していましたが、その理由が少し判明しました。firmware-atheros がインストールされた状態とされていない状態で lsusb コマンドでデバイス情報を収集したところ次のようになりました。パソコン側にファームウェアの準備が出来ているか出来ていないのかを知らせる役目があった模様です。

●firmware-atheros をインストール前
Bus 001 Device 004: ID 1385:4251 Netgear, Inc WG111T (no firmware)

●firmware-atheros をインストール後
Bus 001 Device 006: ID 1385:4250 Netgear, Inc WG111T

firmware-atheros をインストール後にパソコンの USB ポートへ装着すると青色の LED ランプが点灯して使用可能を知らせてくれます。Debian 上では、通信中に点滅するようなことはなく、常時点灯したままの状態でした。

WG111T の動作中を知らせる LED ランプが点灯しているところです。

今回は通信転送速度などを計測しませんでしたが、ちょっと大きめのファイルなどをダウンロードしても安定して動作していました。ただ比較的発熱量が多いようで、一時間も使用していると本体がそこそこ熱くなります。風通しのよい場所での使用を心がける必要がありそうです。

FreeBSD 9.3 p29 (NTP) アップデートで ntpq エラー

FreeBSD 9.3 p29 (NTP) のアップデートを行うと ntpq コマンドでエラーが発生します。
# ntpq
/usr/src/usr.sbin/ntp/libntp/../../../contrib/ntp/lib/isc/unix/net.c:221: fatal error: RUNTIME_CHECK(((pthread_once((&once), (initialize_action)) == 0) ? 0 : 34) == 0) failed
Abort (core dumped)

我が家では自宅サーバに FreeBSD 9.3 をインストールして運用しています。NTP サーバもこのマシンに設定していますが、ntpd の動作としては正常に動作している模様です。他のマシンから ntpdate コマンドで自宅サーバから時刻の同期を行うと正常に行われました。また異常値に設定されたわけではありませんでした。ntpq コマンドなどが使用できないため、確認ができていません。

ネット上を検索してみると既に FreeBSD の掲示板で問題が提起されていました。ntpd の make の問題だったようです。もうすぐ FreeBSD 側からバグフィックスが行われる模様です。
FreeBSD Bugzilla – Bug 204046  ntpq aborts with trap 6  Last modified: 2015-10-27 19:08:50 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=204046

FreeBSD 9.3 の p29 (NTP) アップデート

FreeBSD 9.3 へ p29 アップデート(1個)が到着しました。NTP に存在していた脆弱性を修正したそうです。ニセの時刻を設定したり、時刻の更新を妨げたりすることができるそうです。このアップデートで NTP が 4.2.8p4 になるそうです。
FreeBSD-SA-15:25.ntp
https://www.freebsd.org/security/advisories/FreeBSD-SA-15:25.ntp.asc

/usr/src/UPDATING の内容

20151026:       p29     FreeBSD-SA-15:25.ntp
Fix multiple NTP vulnerabilities. New NTP version is 4.2.8p4.

The configuration file syntax has been changed, thus mergemaster run is recommended.  Now the "kod" parameter requires "limited" parameter.  If the ntp.conf is not updated, the ntpd will run successfully, but with KoD disabled.

ソースツリーの更新

subversion でソースツリーを更新しました。
# svn update /usr/src
Updating '/usr/src':

/usr/src/contrib/ntp/ 以下を中心に大量の更新

U /usr/src/usr.sbin/ntp/Makefile.inc
A /usr/src/usr.sbin/ntp/doc/drivers/scripts/Makefile
U /usr/src/usr.sbin/ntp/doc/ntp.keys.5
U /usr/src/usr.sbin/ntp/doc/ntptime.8
U /usr/src/usr.sbin/ntp/libntp/Makefile
U /usr/src/usr.sbin/ntp/libparse/Makefile
U /usr/src/usr.sbin/ntp/ntpdc/Makefile
U /usr/src/usr.sbin/ntp/scripts/mkver
U /usr/src
Updated to revision 290048.

ユーザランドの再ビルド

今回のアップデートでは、ユーザランドの再ビルドが必要です。
# cd /usr/src
# make buildworld

ユーザランドのインストール

# make installworld

マシンの再起動

# reboot

/etc/ntp.conf の修正

mergemaster を使って /etc/ntp.conf の修正することを求められていますが、一方的に NTP サーバの時刻へ同期させる(server で NTP サーバを指定している)ときには、特に修正は必要なさそうです。

[追記] /etc/ntp.conf の mergemaster

念の為 mergemaster を行なってみたところ、以下のセキュリティの項目が追加されたようです。restrict の定義が追加されていました。
+# Security:
+#
+# By default, only allow time queries and block all other requests
+# from unauthenticated clients.
+#
+# See http://support.ntp.org/bin/view/Support/AccessRestrictions
+# for more information.
+#
+restrict default limited kod nomodify notrap nopeer noquery
+restrict -6 default limited kod nomodify notrap nopeer noquery
+#
+# Alternatively, the following rules would block all unauthorized access.
+#
+#restrict default ignore
+#restrict -6 default ignore
+#
+# In this case, all remote NTP time servers also need to be explicitly
+# allowed or they would not be able to exchange time information with
+# this server.

2015年10月27日火曜日

Linksys SPA942 を直接 ekiga.net へレジスト

久しぶりの IP 電話機の話題です。今回我が家の家庭内 LAN の見直しによって、IP 電話機の設定も変更することとなりました。基本的に自宅サーバ内の Asterisk によって電話交換をすることに変わりはありませんが、外部からのテスト通話用の電話機の設定に変更を行うこととなりました。

無線 LAN ルータの LAN 側から外部の SIP サーバへ接続した SPA942 です。

設定変更の概要

テスト通話用にリンクシス SPA942 を使用していました。この SPA942 から直接 PPPoE 接続で外部インターネットへ接続した後、ekiga.net の SIP サーバへ接続して、そこから我が家の Asterisk サーバへ電話をするようにしていました。

これを先日壁に取り付けた無線 LAN ルータの WRT54GS を経由して外部のインターネットへ接続した後、ekiga.net のサーバへ接続するように変更しました。

ここまで書くのは簡単なことなのですが、実は試行錯誤の連続でした。すでに接続が確認されていた SPA942 が上手く ekiga.net の SIP サーバへ接続しないのです。WRT54GS にインストールしてある Tomato ファームウェアのポートフォワーディングの設定の見直しでは動作せず、さらにポートフォワーディングから DMZ へ切り替えても接続できないという最悪の状況となってしまって、久しぶりに涙目の状態となってしまいました。

結局判明したことは、IP 電話機の SPA942 の NAT 設定周辺の見直しが必要でした。STUN サーバから SPA942 が接続している外部 WAN ポートの IP アドレスの取得をはじめ幾つかの設定を PPPoE 接続のときから変更しなくてはなりませんでした。

具体的な手順

とりあえず IP 電話機の SPA942 を無線LANルータの DMZ 領域へ接続させて、外部から到達するさて先不明なパケットを全て SPA942 へ配送させるようにします。

SPA942 のブラウザ設定画面から以下の項目を設定しました。設定に当たっては画面右上の [Admin Login] を行い、さらに [Advanced] 画面へ切り替えて設定を行いました。

全体的な SIP 関係の設定として [SIP] のタブの中の [NAT Support Parameters] を設定しました。初期値では無効(no)となっているものを有効(yes)へ変更しました。具体的にはスクリーンショットをご覧ください。

STUN サーバ経由で各種の設定を行えるように設定しました。

次に個別の SIP 関係の設定を [Ext1] で行いました。
まず [NAT Settings] の項目で "NAT Mapping Enable" と "NAT Keep Alive Enable" をしれぞれ有効(yes)に変更しました。

NAT 越えを行うかどうかの設定部分です。

そして一般的な SIP 登録情報の項目は、今までどおりの設定で変更はありませんでしたが、念の為に確認をしました。

SIP サーバへの登録設定部分ですが、Proxy のところへ SIP サーバの IP アドレス、またはドメイン名を入力します。

以上で SPA942  を再起動させて ekiga.net の SIP サーバへ登録(レジスト)出来るか確認します。SIP サーバへ登録が成功したら、テスト通話を行なって通話の成功を確認しました。

SIP サーバへ接続済みの Info 画面です。
左下の Ext1 Status のところに Registered と表示されています。

ekiga.net へ登録した後、着信をしている SPA942 です。

無線LANルータ(WRT54GS + Tomato Firmware) の設定

IP 電話機の SPA942 の通話設定のために一時的に DMZ 領域へ配置していたものを、通常の LAN 領域へ戻して、ekiga.net からのパケットのみを SPA942 へ配送させるように変更しました。

Tomato ファームウェアの [Port Forwarding]-[Basic] のところにポートフォワーディングの設定があります。ここで ekiga.net から 5060 ポート(SIP)のパケットを SPA942 に割り当ててある 192.168.32.121 へ配送させるように設定しました。具体的にはスクリーンショットを参考にしてください。

Tomato ファームウェアのポートフォワーディングの設定

感想

PPPoE で外部インターネットへ接続して ekiga.net の SIP サーバへ接続させてテスト通話をするのは、この SPA942 の他、ヤマハの VoIP ルータ(RTA54i, RTA55i, RT56v, RT57i, RT58i など)でもよく行なっていたことでした。意外と無線 LAN ルータの LAN 内から接続した経験が少ないことを今更ながら痛感させられた出来事でした(笑)。

追加で Linksys WRT54Gv2 を入手

インターネット・オークションにてリンクシス WRT54Gv2 を落札してきました。すでに所有している機種ですが、だんだんと残り少なくなってゆくリンクシス製品の予備として入手しました。実際加工するにも使い勝手のよい製品ですので、予備の持っていても活用方法はいくらでも存在しています。

今回入手した Linksys WRT54Gv2 です。

今回入手した個体は、かなり筐体が汚れていて、さらには日焼けも酷いものでした。これだけ日焼けをしていると、直射日光に含まれる紫外線によって筐体のプラスチックの劣化が早まっているかもしれません。

日焼けの様子を認識してもらうために、通常の色合いのものと並べてみました。
上が今回入手した個体で、下が以前から所有していた日焼けの少ない個体です。

とりあえずオリジナル・ファームウェアのまま起動させて簡単な動作確認を行なっておきました。もちろん問題はありませんでした。

またいずれ加工のネタとして活躍してもらう予定です。

写真のボードは加工中の WRT54Gv2 のものです。
いずれこの程度の加工は行おうと思っています。


2015年10月26日月曜日

NEC Aterm BL900HW の分解

以前無線LANルータの詰め合わせセットとして入手していた NEC Aterm BL900HW を分解してみました。


本品はどうも au 回線を契約した人へレンタルされるもののようですが、どうしてインターネット・オークションに出回っていたのか不明です。本品の無線LAN部分も au との契約によって有効化/無効化が行われているようで、契約者側では操作出来ないようです。そのため今回の分解に当たっては、再使用するなどの目的はなく、単純に内部の構造を知るためのものです。また活用可能な部品などがあればボード上から引き剥がして再利用したいと思っています。

分解作業

以前から本品を手にしてはどこから分解するのか疑問に思っていました。底部にネジが一本ありますが、これを取り外して簡単に開く構造ではありませんでした。

手探りながら最初に外したのは前面の透明のプラスチック部品でした。これは強力な両面テープで接着してあるだけでした。周囲の隙間から細いマイナスドライバーを差し込みながら少しずつ両面テープを剥がしました。


最初の難関を超えたところで幾つか筐体を固定している爪が見えてきました。前面パネルのところに四箇所の爪が筐体を固定しています。一箇所固定形式の異なる爪がありますが、これは側面の「らくらく無線スタート」のボタンを固定する爪です。

前面の爪を外したところで、まだ周囲の爪が残っていました。これらも順次マイナスドライバーを使ってこじ開けました。そして筐体を分解することに成功しました。以下は筐体の爪の様子を撮影したものです。

筐体を分解してボードが姿を現したところです。
底部の爪の様子です。
背面側の爪の様子です。
天井部の爪の様子です。

ボードの観察

取り出したボードを観察してみました。日頃見慣れているバッファロー社の製品とは違った雰囲気でした。

BL900HW のボード表面
BL900HW のボード裏面

制御プロセッサと思われるチップにはメーカ名がなく型番に D33923F1 と刻印されたものが搭載されていました。システムメモリには SKhynix H5TQ2G63FFR (DDR3/256MB) が使用されていました。

SKhynix H5TQ2G63FFR (DDR3/256MB)

無線チップには Atheros AR9580 が使用されていました。

Atheros AR9580

イーサネット・スイッチのチップには Broadcom BCM53125 が使用されていました。

Broadcom BCM53125

フラッシュメモリには Intel JS28F00A M29EWH (128MB) が使用されていました。

Intel JS28F00A M29EWH (128MB)

イーサネット・ソケットは、左右に支持金具が付いている形式のしっかりしたものでした。

ソケットの支持金具

総評として、とてもしっかりとしか作りになっている印象でした。イーサネット・ポートのパルストランスも集合型ではなく、単独のものをそれぞれのポートに使用しているなど設計品質は高いものという印象を受けました。

今後、部品取り用のボードしてしっかり活用したいと思います。