ラベル asterisk の投稿を表示しています。 すべての投稿を表示
ラベル asterisk の投稿を表示しています。 すべての投稿を表示

2016年6月28日火曜日

HD-HGLAN へ Asterisk 11 をインストール

我が家では Asterisk 1.8 を FreeBSD で稼働している自宅サーバで運用しています。以前より Asterisk 11 へアップグレードしたいと思っていましたが、アップグレードに伴うトラブルを恐れてなかなかアップグレードに踏み切れないでいます。

そこで  Debian Jessie がインストールされた HD-HGLAN(玄箱 HG 相当)に Asterisk 11をインストールしたのち、自宅サーバで運用中の Asterisk 1.8 の設定ファイルを移植して動作するか確認してみました。

結論から先に述べますと、起動時にいくつかのエラーは発生しましたが、今までとほぼ同じように発信や着信ができました。

Debian Jessie 化した HD-HGLAN へ Asterisk をインストールしました。

Asterisk 11 のインストール

Debian Jessie の Asterisk の標準バージョンは 11.13.1 です。apt-get コマンドで簡単にインストール可能な状態となっています。弊ブログにて配布中の Debian Jessie のファームウェアでは、ネットワーク・ディスクとして機能するように Samba がインストールされています。しかしメモリの使用量が多いことから、この Samba を削除した後、Asterisk をインストールしました。
-- Samba の削除 --
# apt-get remove samba
# apt-get autoremove
-- Asterisk のインストール --
# apt-get update
# apt-get install asterisk

 インストールすると自動的に起動している Asterisk を停止させました。
-- Asterisk の停止 --
# service asterisk stop

Asterisk の設定

ます現状の Asterisk の設定ファイルをディレクトリごと保管しました。
-- 設定ファイルの保存 --
# cd /etc
# tar zcvf  asterisk-conf.tar.gz  asterisk/

自宅サーバで運用中の Asterisk 1.8 の設定ファイルのうち、次の三つの設定ファイルを HD-HGLAN へコピーしました。設定ファイルの移動には FTP を使用しました。
-- コピーした設定ファイル --
・sip.conf
・extensions.conf
・voicemail.conf

Asterisk 本体の設定ファイル(asterisk.conf)を編集しました。 無効化されていた以下の三行を有効化しました。有効化の方法は、行頭にあるコメントマーク " ; "  を削除します。
# vi /etc/asterisk/asterisk.conf

-- asterisk.conf の編集部分 --
languageprefix = yes ; Use the new sound prefix path syntax.
runuser = asterisk    ; The user to run as.
rungroup = asterisk  ; The group to run as.

日本語対応の音声ファイルをインストールしました。なお使用した日本語音声ファイルは VoIP-Info.jp Wiki のものです。バージョン 1.6 のものが最新のもののようで、Asterisk 11 でも使用出来ました。
# cd /var/lib/asterisk/sounds
# wget http://ftp.voip-info.jp/asterisk/sounds/1_6/asterisk-sound-jp_16_pre.tar.gz
# tar zxvf asterisk-sound-jp_16_pre.tar.gz

Asterisk 本体設定で "languageprefix = yes"  と設定していましたが、/var/lib/asterisk/sounds のディレクトリから音声ファイルを読み出してくれないようです。そこで英語の音声ファイルが格納されているディレクトリからソフトリンク(ln -s)を設定して、日本語対応の音声ファルを読み出せるようにしました。
# cd /usr/share/asterisk/sounds
# ln -s /var/lib/asterisk/sounds/ja  ja

今回は、日本語音声ファイルをインストールしたもの、音声の並びの不自然さを直すパッチは適応していません。英語的な?日本語です。

動作確認

以上で編集終了です。Asterisk を起動させました。
# service asterisk start

CLI モードへログインして、Asterisk の動作状況を確認しました。我が家では、起動時にエラーは発生するものの、発信、着信、通話ができました。
# asterisk -r

-- 外部へのレジスト状況の確認 --
*CLI> sip show registry

-- 各電話機との接続状況の確認 --
*CLI> sip show peers

-- 特定の電話機(201)との接続状況の確認 --
*CLI> sip show peer 201

余談

元々、自宅サーバ(FreeBSD)の Asterisk 1.8 の設定ファイルを丸ごとコピーして動作確認をしたところ、それなり?に動作していました。・・・がしかし、問題が多数発生しました(笑)。 FreeBSD と Debian とでは、各ディレクトリの配置がことなることから各種ファイルを見つけられずにエラーとなっていました。そのため、上記のように必要最小限度の設定ファイル(三つ)を移植しただけとしました。

アイコム VE-TA10 のファームウェア・アップグレード(2.00)

@nifty フォン-C の着信不良の問題の件で、ここ数日の間、自宅サーバの Asterisk やルータ(ホームゲートウェイ)を見直してきました。IP 電話で思い出したのが、このアイコム製の VE-TA10 です。あの 30 分経過すると着信不良となるテレホン・アダプタです。ファームウェアの最新バージョンを確認すると 2.00 となっていましたので、早速バージョンアップしました。

ファームウェアのアップグレードを行った VE-TA10 です。

アイコム VE-TA10 のファームウェア・アップグレード
http://near-unix.blogspot.jp/2015/10/ve-ta10.html

ファームウェアのバージョンアップ

VE-TA10 の IP アドレスを直接指定してブラウザで設定画面を開きます。そして [メンテナンス]-[ソフトウェアの更新] を選択して、最新のファームウェアの確認を行いました。現状は 1.80 でした。

現在のバージョンは 1.80 でした。

すでに 1.90 が存在していたようで、今回は 2.00 へのアップグレードでした。

新しい 2.00 のファームウェアの通知です。

そのまま [ソフトウェアを更新] でファームウェアをアップグレードしました。

ファームウェアの更新の様子です。

暫く放置すると自動的に再起動して、新しくなったファームウェアの設定画面を表示してくれました。

バージョン 2.00 となったファームウェアの設定画面です。


動作確認

以上でファームウェアのアップグレードは終了しました。

さて気になる 30 分後に VE-TA10 への着信ができなくなる問題は、相変わらず発生していました。このバージョン 2.00 のファームウェアでも SIP アカウントの再レジストの際に再度の暗号化されたアカウント設定が行われるようで、再レジストに失敗してしまいます。この VE-TA10 の問題というよりは、Asterisk の仕様の問題のようです。詳しくは以前調査した時の記事を参照してください。
アイコム VE-TA10 の30分で着信拒否の件
http://near-unix.blogspot.jp/2013/09/ve-ta10_20.html

2016年6月27日月曜日

@nifty フォン-C の着信不良(全面書き換え)

6月22日に @nifty フォン-C (050 の IP 電話)の着信不良について記述しておりましたが、その後、着信が安定的に行えるようになりましたので、全面的に書き換えを行うこととしました。
@nifty フォン-C の着信不良
http://near-unix.blogspot.jp/2016/06/nifty-c.html

症状

自宅サーバの Asterisk で管理している @nifty フォン-C の IP 電話へ着信が出来なくなっていました。外部から問題の IP 電話へ電話を掛けると何回かの呼び出しのあと、サービス不能として通話が切断されてしまいます。その後、一度 IP 電話側から外線へ電話を掛けた後、暫くの間は IP 電話への着信が可能となる状態でした。

なお @nifty フォン-C は OCN の業務を代行してもらっているサービスのようで、SIP サーバの IP アドレスは OCN のものです。

原因

着信不良となった原因は、@nifty フォン-C で指定している SIP サーバの移転(IP アドレスの変更)が原因でした。SIP サーバのホスト名は voip09.nifty.com と変更ありませんでしたが、指し示す IP が変更となっていました。

このため、フレッツ光回線で使用しているホームゲートウェイ※(PR-400NE)に設定してある IP パケットフィルタで新しい SIP サーバの SIP パケット(5060)を遮断していました。このため外部からの呼び出しに応答することが出来なくなっていました。
(※ホームゲートウェイ=ルータのことです)

対策

ホームゲートウェイ(PR-400NE)の IP パケットフィルタを修正しました。
具体的には、以前 SIP サーバ(voip09.nifty.com)として指し示されていた IP アドレス210.227.109.253 から、新しい IP アドレス 153.146.170.168 へ変更しました。

単純に IP パケットフィルタを変更しただけでも良かったのですが、今後も若干の IP アドレスの変動(※2)があるかもしれないと予想して同じサブネット内の IP アドレス(153.146.170.0/255.255.255.0)から到着する SIP パケット(5060) を通過させるようにしました。

ホームゲートウェイ(PR-400NE)への設定例は次のとおりです。
エントリ番号 20 番(図中の赤枠部分)が今回追加で設定したパケットフィルタです。そしてエントリ番号 21 番は以前の古いパケットフィルタの設定です。万が一、何らかの理由で古い IP アドレスへ戻すかもしれないため、当面の間は古いパケットフィルタの設定も残しておくこととしました。

PR-400NE のパケットフィルタ設定
赤枠部分が新設した設定です。


※2 IP 電話の需要は減少しているようで、各プロバイダでの IP 電話の新規受付中止や廃止されていることから、今後 SIP サーバの統廃合が予想されるためです。

動作確認

Asterisk のモニタでレジスト状況を確認しました。そして実際に電話の発信・着信を一時間以上の間を開けながら何度か繰り返して行ってみました。問題なく発信と着信ができました。

# asterisk -r
*CLI> sip show registry

Host                                    dnsmgr Username       Refresh State                Reg.Time                
pr400ne:5060                            N      3                 3585 Registered           Mon, 27 Jun 2016 14:30:59
nifty-sip:5060                          N      0503456----@      3585 Registered           Mon, 27 Jun 2016 14:31:01
2SIP registrations.

なお古い SIP サーバでは qualify に対応して応答していましたが、新しい SIP サーバは qualify に対応していないようで、反応がありませんでした。qualify の設定は無効にした方が良いようです。

今後のこと

今回の SIP サーバの移転は IP 電話用のサーバ設備の更新(置き換え)だと思われます。今でも古い SIP サーバへレジストが可能で、さらに通話も可能ですが、いずれ古い SIP サーバは廃止されるものと思われます。

2016年6月22日水曜日

@nifty フォン-C の着信不良

注意:内容を全面的に記述しなおしました。次の記事を参照してください。
@nifty フォン-C の着信不良(全面書き換え)
http://near-unix.blogspot.jp/2016/06/nifty-c_27.html


我が家ではプロバイダとして使用している @nifty のサービスの一つの @nifty フォン-C (IP 電話)を使用しています。それも自宅サーバの中に設置してある Asterisk サーバから接続させていました。この IP 電話の番号へ着信が出来なくなっていました。何故か発信はできる状態でした。そして発信した直後だけは、着信が可能な状態となっています。

原因調査

Asterisk サーバを再起動させて @nifty フォン-C の SIP サーバ(我が家の場合 voip09.nifty.com)との接続状況を確認しました。
# asterisk -r
*CLI> sip show peers

念の為 sip.conf の @nifty フォン-C の設定に "qualify=yes" を付加して、具体的に応答していることを確認してみたところ、応答がありませんでした。
nifty-sip/ABCDEFGH        153.146.---.---
5060     UNREACHABLE


パケットフィルタの設定変更

ここで @nifty フォン-C の SIP サーバの IP が変更になっていることに気づきました。以前は 210.227.109.--- でした。このため NTT から貸し出されているフレッツ光 ホームゲートウェイ PR-400NE のパケットフィルタの設定も変更しなければならないことに気づきました。
光ネクスト隼 PR-400NE の設定
http://near-unix.blogspot.jp/2013/03/pr-400ne.html

PR-400NE のパケットフィルタの設定を新しい IP アドレスに合わせて変更しました。そして接続状況を確認しました。・・・しかし接続できませんでした。訂正2016-06-26:接続できました。)

さらに PR-400NE のパケットフィルタを特定の IP アドレスの SIP パケット(5060)だけが通過できる状態から全ての IP アドレスからの SIP パケットが通過できるように変更しました。それでも接続できない状況に変わりありませんでした。

ドメイン名指定から IP アドレス直接設定へ

(注意:この IP アドレス直接指定はおすすめしません。voip09.nifty.com で接続できました。2016-06-26)
@nifty フォン-C の新旧の IP アドレスを whois コマンドや ping コマンドで調査してみると、まだ古い @nifty フォン-C の IP アドレスの SIP サーバは生きているようです。(注記:@nifty フォン-C と名前がついていますが OCN の IP 電話サービスを再利用しているようです。)

ドメイン名で指定された SIP サーバ(voip09.nifty.com)に問題があるのではないかと考えて、直接以前の SIP サーバへ接続できるように IP アドレスを sip.conf へ設定してみました。

-- sip.conf の @nifty フォン-C の設定部分 --
赤字の部分を ";" でコメント化
青字の部分を追加
[nifty-sip]
type=friend
secret=PASSWORD
defaultuser=ABCDEFGH
fromuser=05012345678
fromdomain=nifty.com
;host=voip09.nifty.com
host=210.227.---.---
context=nifty-in
dtmfmode=inband
canreinvite=no
insecure=port,invite
progressinband=no
qualify=yes

新しく設定した sip.conf を読み込ませて起動させました。すると SIP サーバと接続できました。応答もあります。そして @nifty フォン-C への着信も可能となりました。
# asterisk -r
*CLI> sip reload
*CLI> sip show peers

nifty-sip/ABCDEFGH        210.227.---.---
5060     OK (16 ms)

以上のことを確認した後、 PR-400NE で行っていたパケットフィルタの設定を元通りに特定の IP アドレス(210.227.---.---)の SIP パケット(5060)だけが通過できるように設定しました。

今後の事

IP アドレスの直接指定で着信出来ないという問題は回避することが出来ましたが、将来的にはドメイン名に戻したいと思っています。どうして SIP サーバが変更となり、接続(受信)出来ないのか? 今後どうなってしまうのか? 全く不明で不安です。

2016年5月8日日曜日

FreeBSD Asterisk 1.8.32.3_7 へアップデート

先日、ビルドエラーでアップデートすることができなかった Asterisk(1.8 系)を無事アップデートすることができました。

アップデートできなかった原因

原因は、ports 版の OpenSSL (security/openssl)のビルド・オプションに問題がありました。OpenSSL の脆弱性が度々指摘される SSLv2 と SSLv3 のオプションを無効にしてビルドしていることが問題でした。

openssl-1.0.2_12 の見直したビルドオプション

ビルド

OpenSSL の SSLv2 と SSLv3 のオプションを有効にしてビルドし直した後、Asterisk のビルドを行うと正常に終了しました。

asterisk18-1.8.32.3_7 のビルドオプション

今回のビルド失敗を契機に Asterisk のアップグレードを考えていましたが、また先延ばしにすることとしました。本当は、もうアップグレードを図らなくてなならないのですが、なかなか気力が湧きません。

2016年4月27日水曜日

FreeBSD Asterisk のアップデート

FreeBSD の ports へ Asterisk のアップデート(1.8.32.3_6 から 1.8.32.3_7 へ)が到着しました。

portmaster でビルドを行ったところエラーが発生して、インストールが中断してしまいました。
tcptls.o: In function `__ssl_setup.part.3':
tcptls.c:(.text+0xc59): undefined reference to `SSLv3_client_method'
collect2: error: ld returned 1 exit status
Makefile:183: recipe for target 'asterisk' failed
gmake[1]: *** [asterisk] Error 1

なお、今まで気づかなかったのですが、すでに Asterisk 1.8 系は、昨年 2015-10-21 に開発終了(EOF)となっていました。FreeBSD の ports も 2016-04-30 以降に削除予定となっていました。
Asterisk 1.8 reached EOL on 2015-10-21.

It is scheduled to be removed on or after 2016-04-30.

そこで、上記のエラーの回避を考えるのではなく、新しくAsterisk の 11 系か 13 系へ移行を予定しています。


2016年2月13日土曜日

FreeBSD Asterisk 1.8.32.3_6 へアップデート

FreeBSD の ports へ Asterisk のアップデート(1.8.32.3_5 から 1.8.32.3_6 へ)が到着しました。何があったのか?不明ですが、このところ立て続けにアップデートが到着しています。

asterisk18-1.8.32.3_6 のビルドオプション


2016年2月5日金曜日

FreeBSD Asterisk 1.8.32.3_5 へアップデート

先日アップデートがあったばかりの Asterisk 1.8 系ですが、本日も FreeBSD の ports へアップデート(1.8.32.3_4 から 1.8.32.3_5 へ)が到着しました。

asterisk18-1.8.32.3_5 のビルドオプション

2016年2月1日月曜日

FreeBSD Asterisk 1.8.32.3_4 へアップデート

FreeBSD の ports へ Asterisk のアップデート(1.8.32.3_3 から 1.8.32.3_4 へ)が到着しました。

流石に Asterisk の開発の中心は新しいバージョンへ移行している模様で、1.8 系のバージョンのアップデートもだんだんと少なく、間隔が伸びているように感じました。

とは言っても、我が家では安定性重視ですので、FreeBSD がメンテナンスを続けているうちは、このまま 1.8 系の Asterisk を使用し続ける予定です。

Asterisk 1.8.32.3_4 のビルドオプション


2015年11月3日火曜日

PLANEX VTL-TA02X の RS232C コネクタ変更

プラネックスの VoIP アダプタである VTL-TA02X の背面にある RS232C ソケットをメス型からオス型へ変更しました。これで以前発生していたトラブルを回避することができました。


経緯

元々、本機(VTL-TA02X)は、フレッツ光プレミアム時代に NTT 西日本よりレンタルされていた VoIP アダプタの AD-100SE から出力されるアナログ・ラインを再び VoIP 信号として変換して自宅サーバの Asterisk へ導くための変換器として使用していました。

かつてのフレッツ光プレミアム時代の構成
右端に VTL-TA02X があります。

フレッツ光プレミアム から フレッツ光ネクスト隼 へ切り替えたとき、ホームゲートウェイの PR-400NE から直接 Asterisk へ接続するように変更したため取り外していたものでした。

その後、VoIP サービスの EKIGA の動作確認などに使用していていました。当初は、アナログテレホンアダプタとして単純に家庭内の LAN 内から外部の ekiga.net へ接続するようにしていました。ある日、PPPoE で直接外部でアクセスしてみることを思い立って実行してみたところ、上手く接続できませんでした。単純に接続出来ないだけであったなら何ら問題はなかったのですが、その後、一切 LAN 経由で内部の設定画面へアクセスできなくなってしまいました。どうも本機の PPPoE で使用できるパスワードは 16 桁までしか設定出来ないようで、30桁ぐらいのパスワードを設定すると最初の 16 桁までしかパスワードとしてプロバイダへ発信しない仕様となっていたようです。問題はこの PPPoE の接続が成功しないと、そのままハングアップしてしまうことでした。さらに悲惨なことは、本機にはリセット(初期化)ボタンが存在していないことでした。そのため、初期化が出来ないため、何も手出しができなくなってしまいました。

そこで本機の背面にある RS232C ポートからシリアルコンソールへアクセスすることが出来れば、何か対策が打てるのではないかと考えました。しかし RS232C ポートは普通のオス型のソケットではなく、メス型のソケットとなっており、普通の RS232C のクロスケーブルを接続することができなくなっていました。後で判明したことですが、どうもこの RS232C ポートへ接続するケーブルは D-sub 9 ピンの延長ケーブル(ストレート)で接続すれば良かったようです。

普通の RS232C クロスケーブルが接続できるように、廃棄したパソコンのマザーボードに搭載されていた RS232C のオス型ソケットを取り外して、本機(VTL-TA02X)のものと交換してみることとしました。もちろん単純に交換しても動作しないことは解っていたため、必要な信号線の入れ替えも行いました。しかし動作しなかったことから、ずっと放置したままの状態にしていました。

今回、この VTL-TA02X の RS232C ソケットの交換作業のつづきを行なって、シリアルコンソールへ接続をして、無事シリアルコンソール上から初期化を行うことができました。そして再度アナログテレホンアダプタとして活用できる状態に戻すことができました。

RS232C ソケットの交換

以前行った加工の様子も写真に撮影していたはずなのですが、何故か発見することができませんでした。

今回の記事は、この RS232C ソケットの交換が終わった後の部分からとなります。

すでにオス型の RS232C ソケットへ交換したところです。
上は普通の RS232C クロスケーブルのプラグです。

まず前回行なっていた加工の確認を行いました。U24 に RS232C の変換チップがあります。RS232C ソケットから Rx と Tx のラインがこの U24 へ 22Ω の抵抗器を介して接続されています。この 22Ω の抵抗器の手前部分で Rx と Tx のパターンを切断しました。そしてそれぞれをクロスするように配線しました。しかしこれは勘違いで間違えでした。それは RS232C のソケットをメス型からオス型へ交換したとき、ピン配置が逆転していたためでした。
U24 の周辺の様子です。
黄色い破線は裏側でパターンが接続されている様子を示しています。
U24 へ接続する裏面のパターンを切断したところです。
これは間違った加工ですが、TX と Rx のラインを交換して配線したところです。

メス型 オス型
 #1 ---- #5
 #2 ---- #4 -- Tx(パターンカットする前の信号)
 #3 ---- #3 -- Rx(パターンカットする前の信号)
 #4 ---- #2
 #5 ---- #1
 
 #6 ---- #9
 #7 ---- #8
 #8 ---- #7
 #9 ---- #6

そこでメス型のとき #2 ピンだったラインを使用せず、新しくリード線を使って Rx ラインを接続しました。R242 と RS232C ソケットの #2 を接続しました。

Rx のラインをリード線で配線したところです。

この信号ラインの他、RS232C ソケットの GND ラインも変更しました。

RS232C ソケットの GND ラインの切断
元々 #5 ピンとして GND が接続されていた場所は、新しく #1 ピンになっているためです。
オス型ソケットの #5 ピンへ GND ラインを追加しました。
そして Rx ラインもオス型の #2 へ接続しました。
プリント印刷基盤が黒く焦げているのは、若気の至でガスライターで炙ってソケットを外したためです。

これらの加工によって、ようやく RS232C でパソコンと通信ができるようになりました。ちなみに通信速度は 57600bps です。

RS232C ケーブルでシリアルコンソールにアクセスしているところです。

VTL-TA02X の初期化

シリアルコンソールへ接続した後、ユーザ名:admin、パスワード:admin でコンソールにログオンできます。

作業中は繰り返し PPPoE 接続をリトライしている表示が次々に流れてゆくので、とても作業が難しい状況でしたが、頑張って作業しました(笑)。

最初はネットワーク設定を変更して対処しようと試みました。コマンドの "config net" でネットワーク設定のモードへ移行します。ここでネットワークの設定を PPPoE 接続から DHCP モードへ変更しようとしましたが上手く行うことができませんでした。 そして静的な IP アドレス設定も試みましたが出来ませんでした。

ネットワーク設定のモードを抜けるために "exit" コマンドで基本モードで戻りました。電源の入り切りで、パスワード・ログオンした直後が基本モードです。この基本モードで工場出荷状態に戻すコマンドがあることを発見しました。"xdef" コマンドです。設定してあるパスワードと一緒に実行すると、「本当に実行するのか?」と問い合わせあり、再度同じように xdef コマンドを実行すると初期化されます。
xdef admin -- 一回目
  問い合わせ
xdef admin -- 二回目
  初期化開始
加工が終わったボードを筐体へ組み込むところです。

VTL-TA02X の設定

初期化の後、自動的に再起動されて立ち上がってきます。ここから Windows パソコンからネット経由でアクセスを行います。Windows パソコンを使用するのは、ブラウザに Internet Explorer を使用しなければならないためです。Firefox では何故か設定画面のページ変更が出来ないのです。今回も Firefox 41.0.2 で確認しましたが、ページ変更が出来ませんでした。

ただし初期化された IP アドレスは、マニュアルにある 192.168.192.200 ではなく、1.1.1.1 となっていました。これはシリアルコンソールのブートログで発見しました。Internet Explorer から 1.1.1.1:9999 (IP の 1.1.1.1 のポート 9999 の意味、ポートの指定がないと 80 となる)へアクセスして設定を行いました。

IP アドレスの設定や VoIP 関係の設定を自宅サーバの Asterisk へレジストするように設定しました。そして通話試験を行ったところ、無事通話が成功しました。

通話試験も完了した VTL-TA02X です。

もうアナログテレホンアダプタを使用する機会はなくなりましたが、比較的音声信号が綺麗に聞こえる機種ですので、他のアナログテレホンアダプタが故障したときの交換用としてずっと保管しておきたいと思っています。

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 内から接続した経験が少ないことを今更ながら痛感させられた出来事でした(笑)。

2015年10月9日金曜日

アイコム VE-TA10 のファームウェア・アップグレード

アイコムの 050 電話アダプタの VE-TA10 のファームウェアのアップグレードが到着していました。この情報は読者さんからいただきました。早速ファームウェアのアップグレードを実施して動作確認を行なってみました。

今回ファームウェアのアップグレードを行った VE-TA10 です。

ファームウェアの確認

VE-TA10 の設定画面の [メンテナンス] の中にある [ソフトウェアの更新] の項目の中で確認してみました。

ファームウェアの確認を行うところです。

すると新しいファームウェアに更新可能となっていました。

ファームウェアの更新確認を行ったところです。

新しいファームウェアを確認すると前面パネルにある「ソフト更新」のランプが緑色から赤色に変化しました。

ファームウェアの更新を告げる赤いランプが点灯しました。

ファームウェアの更新

設定画面の「ソフトウェア更新」のボタンを押してファームウェアをアップグレードさせました。

ファームウェアをダウンロード中の表示

しばらくすると自動的に再起動がかかり、ファームウェアのアップグレードは終了しました。

VE-TA10 のファームウェアの更新中の案内

動作確認

アップグレードが終わった VE-TA10 の動作確認を行いました。電源を立ち上げて直後は、発信・着信とも正常に行うことができました。しかし 30 分が経過したとき、発信はできますが、着信ができなくなっていました。これは以前から知られていた障害です。

本来の電話番号で SIP 登録を行うのですが、その直後に電話番号部分を乱数に置き換えて再登録してしまいます。この部分までは Asterisk 1.8 で対応可能なのですが、その後30分が経過することに電話番号部分を乱数で置き換える動作を繰り返して行きます。このとき Asterisk 1.8 が対応しないため、電話番号を見失ってしまいます。外部から掛かっていた電話を VE-TA10 へ転送することができないため、VE-TA10 側では着信が出来ない現象となってしまいます。どうもこの電話番号を乱数に置き換えるのは仕様のようで、これに対応するように Asterisk 1.8 のソースコードを修正しないかぎり対応は出来ないものと思われます。なお自宅にある PR-400NE のひかり電話のサーバ部分は、VE-TA10 の電話番号を乱数に置き換え続ける動作に対応しているようで、30分が経過しても VE-TA10 の着信は可能となっています。

アイコム VE-TA10 の30分で着信拒否の件
http://near-unix.blogspot.jp/2013/09/ve-ta10_20.html

2015年9月12日土曜日

Asterisk 1.8 で rc_avpair_new: unknown attribute 1490026597 のメッセージ

この直前の記事において IP 電話用に IP アドレスのチェック機能を我が家の中で行うようにしましたが、その過程で /var/log/messages を観察していると以下のような IP 電話 PBX の Asterisk のエラーメッセージが登録されていました。
asterisk[989]: rc_avpair_new: unknown attribute 1490026597
早速インターネット上を上記のエラーメッセージで検索してみると直ぐに手がかりを発見しました。

どうも認証サーバの Radius のモジュールを組み込みながら、Radius サーバと交信がないとこのようなエラーが発生するようです。

対策は Asterisk の設定ファイルの中の modules.conf の中に Radius 関連のモジュールを自動で組み込まないように設定することで、上記のエラーメッセージは発生しなくなりました。
# vi /usr/local/etc/asterisk/modules.conf -- (FreeBSD の場合)
以下の内容を追記します。
; unload radius modules
noload => cdr_radius.so
noload => cel_radius.so

Asterisk を再起動させます。
# /usr/local/etc/rc.d/asterisk restart

どこかへテスト通話をした後、メッセージ・ログを確認します。
# tail /var/log/messages

エラー・ログが記録されていなければ対策終了です。

参考ウェブサイト

rc_avpair_new: unknown attribute 1490026597 - FreePBX
http://issues.freepbx.org/browse/FREEPBX-7612


2015年8月31日月曜日

FreeBSD Asterisk 1.8.32.3_2 へアップデート

FreeBSD の ports へ Asterisk のアップデート(1.8.32.3_1 から 1.8.32.3_2 へ)が到着していました。

今回のアップデートはリビジョン番号が若干向上しただけのもののように見えますが、保留音(Music on Hold)に MP3 プレーヤに対応するなど保留音関係に機能が追加されていました。以下にビルドオプションの画像を掲載していますが、+マークのある部分が新規追加の機能です。

Asterisk 1.8.32.3_2 のビルドオプション 1ページ目
Asterisk 1.8.32.3_2 のビルドオプション 2ページ目

以下はパッケージからのメッセージです。
".asterisk.makeopts" が存在していると、ビルドオプションとして処理されるそうです。
その他メニューコマンドの取り扱いの説明があります。

===>>> pkg-message for asterisk18-1.8.32.3_2
###########################################################################

  This port supports custom Asterisk configurations using a *user-supplied*
  menuselect.makeopt file.

  This feature is of most value for users that want to disable or override
  default functionality that they dont want or need, particular in space
  and/or resource constrained, or embedded environments.

  If a file named ".asterisk.makeopts" is found in the ports files/
  directory, its contents will be used to configure Asterisk at the
  post-configure stage.

  If the file is *not* found, the port will default to a 'normal' Asterisk
  menuselect configuration, and only execute menuselect commands according
  to what port OPTIONS the user has selected.

  The format of this file is the same as the output of a standard
  `make menuselect` command, as per standard build instructions for
  Asterisk.

  NOTE: The contents of this file *MUST* be syntactically and semantically
       valid, as the port does *NOT* perform validation of this file.

        In particular, ensure that all Asterisk options have their
        dependencies met, using the corresponding port OPTIONS dependencies.

  The `menuselect --check-deps` command can be used to verify the
  configuration

  The following related documentation resources are also available:

    * https://wiki.asterisk.org/wiki/display/AST/Using+Menuselect+to+Select+Asterisk+Options
    * http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html-chunk/installing_base_configuration.html#Installing_id293213

################################################################################

2015年4月13日月曜日

FreeBSD の portupgrade は当面使用せず

どうも調子が悪い portupgrade ですが、一度 pkg upgrade -f で、すべてのパッケージを再インストールしてみました。
# pkg update
# pkg upgrade -f

courier-imap などのカスタムビルドが必要なものは、再ビルドをしました。このとき portupgrade を使用すると、あの make deinstall を求める表示を出力して、停止してしまいました。そこで単純にcourier-imapのあるディレクトリへ移動して make で再ビルドを行なってみたところ正常に再インストールまでできました。
# cd /usr/ports/mail/courier-imap
# make clean
# make reinstall
# make clean

これで依存関係にある ports も一緒に再ビルドと再インストールを行なってくれました。もうすっかり忘れてしまった手法でした(笑)。

ここで ports のツリーを portsnap で更新してみたところ、Asterisk の新しいアップデート(1.8.32.3 から 1.8.32.3_1 へ)が到着していました。 これも同様に make で更新を行なっておきました。
# cd /usr/ports/net/asterisk
# make clean
# make reinstall
# make clean

やはり依存関係にある ports も一緒に再ビルドとインストールが行われました。依存関係にあるもの全てを再ビルドしているので、従来より時間が掛かってしまうようです。ちなみに Asterisk を make clean した時の結果が次のとおりでした。随分と多くの ports をビルドしていたようです。
# make clean
===>  Cleaning for libpri-1.4.15
===>  Cleaning for speex-1.2.r2,1
===>  Cleaning for newt-0.52.17
===>  Cleaning for libexecinfo-1.1_3
===>  Cleaning for curl-7.41.0
===>  Cleaning for openr2-1.3.3
===>  Cleaning for freetds-0.91.103_2,1
===>  Cleaning for gsm-1.0.13_2
===>  Cleaning for pwlib-1.12.0_10,1
===>  Cleaning for openh323-1.19.0.1_8
===>  Cleaning for iksemel-1.4_6
===>  Cleaning for unixODBC-2.3.2_1
===>  Cleaning for libltdl-2.4.6
===>  Cleaning for sqlite-2.8.17_2
===>  Cleaning for sqlite3-3.8.8.3
===>  Cleaning for libvorbis-1.3.5,3
===>  Cleaning for libxml2-2.9.2_2
===>  Cleaning for libogg-1.3.2_1,4
===>  Cleaning for speexdsp-1.2.r3_1
===>  Cleaning for libslang2-2.3.0
===>  Cleaning for popt-1.16_1
===>  Cleaning for gettext-runtime-0.19.4
===>  Cleaning for libgcrypt-1.6.3
===>  Cleaning for libiconv-1.14_6
===>  Cleaning for expat-2.1.0_2
===>  Cleaning for openldap-client-2.4.40_1
===>  Cleaning for gnutls-3.2.21
===>  Cleaning for pcre-8.35_2
===>  Cleaning for png-1.6.16
===>  Cleaning for nettle-2.7.1
===>  Cleaning for libtasn1-4.2
===>  Cleaning for libidn-1.29
===>  Cleaning for p11-kit-0.22.1
===>  Cleaning for trousers-tddl-0.3.10_7
===>  Cleaning for gmp-5.1.3_2
===>  Cleaning for libffi-3.2.1
===>  Cleaning for asterisk18-1.8.32.3_1

今回の一連の portupgrade の不具合で、すっかり pkg の虜になってしまいました。インストール済みの全ての ports の再インストールの時間の短さに驚きました。これからは pkg install で処理を行ったあと、一部のカスタムビルドが必要なものだけを make コマンドで再ビルドしたいと思っています。

2015年4月12日日曜日

FreeBSD Asterisk 1.8.32_3 は PKG のパッケージで

先日 portupgrade で更新を行おうとした Asterisk18-1.8.32_3 ですが、その後も portupgrade で更新ができない状態です。

そこで PKG のパッケージ・インストールを試みてみました。基本的に標準オプションに何かを加えたりしておらず、以前のようにひかり電話の PR-400NE 用にパッチも当てていないことから、標準ビルドでも問題ないと思って実行してみました。

# pkg install asterisk18Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
Updating database digests format: 100%
The following 3 packages will be affected (of 0 checked):

New packages to be INSTALLED:
    newt: 0.52.17
    libslang2: 2.3.0

Installed packages to be UPGRADED:
    asterisk18: 1.8.32.2 -> 1.8.32.3

The process will require 4 MiB more space.
19 MiB to be downloaded.

Proceed with this action? [y/N]: y
Fetching asterisk18-1.8.32.3.txz: 100%   18 MiB   3.2MB/s    00:06   
Fetching newt-0.52.17.txz: 100%   77 KiB  79.2kB/s    00:01   
Fetching libslang2-2.3.0.txz: 100%  946 KiB 969.6kB/s    00:01   
Checking integrity... done (0 conflicting)
[1/3] Installing libslang2-2.3.0...
[1/3] Extracting libslang2-2.3.0: 100%
[2/3] Installing newt-0.52.17...
[2/3] Extracting newt-0.52.17: 100%
[3/3] Upgrading asterisk18 from 1.8.32.2 to 1.8.32.3...
==> You should manually remove the "asterisk" user.
===> Creating users and/or groups.
Using existing group 'asterisk'.
Using existing group 'dahdi'.
Using existing user 'asterisk'.
[3/3] Extracting asterisk18-1.8.32.3: 100%

あっさりとインストールが完了しました。そして動作確認を簡単に行なってみましたが、内線電話や 050 の IP 電話、ひかり電話も問題なく通話ができました。

もしかして portupgrade のトラブル?

この Asterisk18 だけでなく、他の ports においても、依存関係にある ports をビルドしては、インストール時に以前にビルドしたオブジェクトをアンインストールするように指示を表示してビルドを中止する現象が、あちこちの ports で見られるようになりました。もしかして portupgrade のトラブルなのでしょうか? それとも仕様変更があり、何か新しいオプションの指定が必要なのでしょうか? とりあえず man portupgrade で、オプション類を調査してみましたが、どうもよく解りませんでした(涙)。

2015年1月30日金曜日

FreeBSD Asterisk 1.8.32.2 へアップデート

FreeBSD の ports へ Asterisk のアップデート(1.8.32.1_3 から 1.8.32.2 へ)が到着していました。

いつものように portupgrade で更新を行なっておきました。

我が家では問題なく動作しています。

Asterisk 1.8.32.2 のビルド・オプション

2014年12月25日木曜日

FreeBSD Asterisk 1.8.32.1_3 へアップデート

FreeBSD の ports へ Asterisk のアップデート(1.8.32.1_2 から 1.8.32.1_3 へ)が到着していました。

portupgrade で更新を行なっておきました。

Asterisk 1.8.32.1_3 のビルド・オプション

2014年12月16日火曜日

FreeBSD Asterisk 1.8.32.1_2 へアップデート

FreeBSD の ports へ Asterisk 1.8.32.1_2 へのアップデートが到着していました。

いつものように portupgrade で更新を行なっておきました。

我が家では、動作上の問題はありませんでした。

Asterisk 1.8.32.1_2 のビルド・オプション

2014年11月22日土曜日

FreeBSD Asterisk 1.8.32.1 へアップデート

表題の通り FreeBSD の Asterisk が 1.8.32.0 から 1.8.32.1 へアップデートしました。

portupgrade を使って再ビルドを行いました。

アップデートの内容は不明ですが、動作に問題はないようです。

Asterisk 1.8.32.1 のビルドオプション