Raspberry PiでPBXとFAXの構築 - トラブルと対応

投稿 金 7/ 5 16:28:56 2024 | パソコン | hotall

今回のシステムを構築するに当り、遭遇したトラブルとその対応についてメモします。

この文書は個人的なものであり、内容について一切の責任を負いかねます。



[PBX]内線発信ができない。
現象
エラー:401 Notfound

原因
発信した番号が認識されていない

対策
extensions.confに間違いがないか調べる

[PBX]ひかりGW(外線)からの着信が行われない。
現象
AsteriskがGWに対しエラーを返している
SIP/2.0 500 Server Internal Error
Via: SIP/2.0/UDP 192.168.1.1:5060;rport=5060;received=192.168.1.1;branch=xxxxxxxxxx
Record-Route:
Call-ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxx@192.168.1.1
From: ;tag=xxxxxxxxxxxxxxxxxxxxxxxx
To: "0123456789" ;tag=xxxxxxxxxxxxxxxx
CSeq: 1 INVITE
Server: Asterisk PBX 16.28.0~dfsg-0+deb11u3
Content-Length: 0

原因
ひかりGWからAsteriskへの接続が失敗している

対策
pjsip.confの定義に誤りがないか調べる。

[PBX]子機からAsteriskに登録ができないことがある。
現象
見かけ上、認証が失敗している
Registration from '' failed for '192.168.0.3:16244' - Wrong password
成功した時も登録数が超過するとの警告が出る
Registration attempt from endpoint '1001' (192.168.0.3:11412) to AOR '1001' will exceed max contacts

原因
子機がunregisterせずにregisterすると。前の登録が消えずに新たに登録を追加しようとする

対策
pjsip.confのAOR定義に追加登録時に既存の定義を削除するように設定
remove_existing = yes

[PBX]REGISTORできるが、着信できない子機がある。外線なら全く着信できない。
現象
一部の子機だけ不具合が発生する。

原因
不具合のある子機は、別のWiFiルーターに繋がっており、このルータのnat越えの問題が発生している。

対策
pjsip.confの不具合のある子機のendpoint定義をnat対応とする
rtp_symmetric = yes
rewrite_contact = yes
direct_media = no

[PBX]VPNを常時ONにした状態でWiFi環境にいるときに、Network not connectedあるいは「ネットワークが見つかりません」になる。
現象
一部の子機だけ不具合が発生する。

原因
VPNの場合、インターネットと接続しているルーターを経由するので、このルータのnat越えの問題が発生している。

対策
VPN接続する可能性がある端末について、上記と同様にpjsip.confのendpoint定義をnat対応とする
rtp_symmetric = yes
rewrite_contact = yes
direct_media = no

[PBX]再起動すると子機からAuthenticaion failedで登録できない。
現象
エラーが複数発生している。
ERROR[595] res_config_ldap.c: Cannot load LDAP RealTime driver.
...
config_transport.c: Transport 'hikari-trans' could not be started: Cannot assign requested address
...

原因
ログにエラーが記録されている。これが原因で正常に動作していない可能性がある。
  • 使用していないモジュールのロードをが失敗
  • 使用していないchan_sip通信が悪影響している。
  • その他、推奨していないモジュールの使用
対策
エラーをつぶしていきます。
modules.confで不要なモジュールのロードを抑制
noload => res_config_ldap.so
noload => chan_sip.so
noload => chan_mgcp.so
noload => res_monitor.so
noload => res_adsi.so
noload => app_adsiprog.so
noload => app_url.so
noload => app_nbscat.so
noload => app_getcpeid.so
noload => app_macro.so
noload => app_ices.so
noload => app_image.so
noload => res_pjsip_publish_asterisk.so
noload => chan_skinny.so
noload => cel_sqlite3_custom.so
noload => cdr_sqlite3_custom.so
noload => cel_tds.so
noload => cdr_pgsql.so
noload => cdr_radius.so
noload => cel_radius.so
noload => cdr_tds.so
noload => chan_unistim.so
noload => pbx_dundi.so
noload => res_hep_rtcp.so
noload => res_hep_pjsip.so

[PBX]cronでasterisk自動起動した際、エラーメールが送信される。
現象
件名:Cron sudo bash /usr/share/asterisk/custom-bin/endpointstat (failed)
本文:Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)

原因
端末ステータスLEDを操作するためにendpointstat.shシェルスクリプトを定期的に実行しているが、毎日Asteriskを再起動するタイミングで、このシェルスクリプトが実行されるため、エラーとなる。
asterisk.ctlファイルはAsteriskの起動を制御するファイルで、起動時に生成され、終了時に削除される。

対策
cronは時刻指定で秒を指定できないので、毎分実行されるシェルスクリプトとAsteriskの再起動がかち合わないよう、再起動の実行をsleepを入れて遅らせる。
sudo crontab -e
10 4 * * * sleep 30; sudo service asterisk restart

[FAX]通知メールの受信日時が日本時刻になっていない。
原因
/etc/hfaxd.congでTimeZone=localと定義している。
タイムゾーンの確認
date
Wed 16 Aug 08:10:56 BST 2023
OSのローカル時刻が設定されていない

対策
現在のタイムゾーンをバックアップし、タイムゾーンを設定する
sudo cp /etc/localtime /etc/localtime.org
sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
タイムゾーンの確認
date
Wed 16 Aug 16:15:42 JST 2023
JSTとなっていることを確認する。

[FAX]連続稼働中にYajHFCから接続できなくなった。
現象
FaxStatを実行すると、パスワードを求められる
systemctl statusのログにエラーが記録されている
pi@xxxxxxxx:/etc/hylafax $ sudo systemctl status hfaxd
● hfaxd.service - HylaFAX client-server protocol server
Loaded: loaded (/lib/systemd/system/hfaxd.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2023-10-01 03:45:11 JST; 2 days ago
Docs: man:hfaxd
Main PID: 614 (hfaxd)
Tasks: 1 (limit: 1595)
CPU: 9.771s
CGroup: /system.slice/hfaxd.service
└─614 /usr/sbin/hfaxd -d -i 4559 -s 444
Oct 03 22:04:55 xxxxxxxx HylaFAX[501]: command: pass hirado403
Oct 03 22:04:55 xxxxxxxx HylaFAX[501]: PASS Oct 03 22:04:55 xxxxxxxx HylaFAX[501]: pam_unix(hylafax:auth): check pass; user unknown
Oct 03 22:04:55 xxxxxxxx HylaFAX[501]: pam_unix(hylafax:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhos>
Oct 03 22:04:57 xxxxxxxx HylaFAX[501]: pam_authenticate failed in pamCheck with 0x7: Authentication failure
Oct 03 22:04:57 xxxxxxxx HylaFAX[501]: <--- 530 Login incorrect.
Oct 03 22:04:57 xxxxxxxx HylaFAX[501]: Login failed from 192.168.0.1 [192.168.0.1], xxxxxxx
Oct 03 22:04:57 xxxxxxxx HylaFAX[501]: command: quit
Oct 03 22:04:57 xxxxxxxx HylaFAX[501]: QUIT
Oct 03 22:04:57 xxxxxxxx HylaFAX[501]: <--- 221 Goodbye.

原因
原因は不明。
hfaxdをリスタートすると回復する。

対策
systemctl statusを定期的に実行し、Login incorrectがあればhfaxdをリスタートするシェルを作成し、定期的に実行していました。
現在は、毎日リスタートすることで、再現しなくなりました。

[FAX]送信済みJOB(エラーあり)が削除できない。
現象
コマンドで削除(JOB IDを調べ、削除)
faxstat -d
faxrm アクセス制限で削除できない。

原因
原因は不明

対策
とりあえず、直接ファイルを削除
ディレクトリ:/var/spool/hylafax/doneq
ファイル: q

[FAX]送信するとエラーになる。
現象
エラー:Connection timeout connect

hylafax付属のプリミティブな送信クライアントを実行してみる
sudo sendfax -n -d 1001 test.txt
request id is 17 (group id 17) for host localhost (1 file)
何も起きない

状態を見る
sudo faxstat -d
HylaFAX scheduler on xxxxxxxx: Running
Modem ttyIAX (+81.XX.XXX.XXXX): Running and idle
JID S Number Pages Dials Date Time Status
15 F 1001 0:0 0:12 2023/08/07 07.43.27 Job aborted by request
16 F 1001 0:0 0:12 2023/08/07 10.43.10 Kill time expired
要求したID:17が無い
YajHFCのtransmittingタブには表示されている

faxmodemを実行すると、送信できた。

faxmodemのマニュアルにはhylafaxの起動にはfaxgettyかfaxmodemの実行が必要と書いてある
しかしfaxgettyを明示的に実行するとハングアップする
asteriskを再起動すると復帰する

原因
通常、hylafaxはfaxgettyを起動し、これと通信するが、faxgettyが自動起動していない。
これは、faxgettyのサービス定義に問題がある。

対策
faxgettyのサービス定義を修正する。

[FAX]受信ができない。
現象
子機は呼び出される
受話するとしばらくして勝手に切れる
留守番電話にしても受信処理が行われない

IAX2及びPJSIPのログを取る
子機を取るとき、IAX経由でデータを受信しているが、理由コード16でハングアップしている
留守番電の時、同じくIAX経由で受信しているが理由コード3でハングアップしている
どちらも受信しようとはしているが、途中で中断しているようだ
/var/spool/hylafax/tmp上にはファイルは存在していない
システムログを見ると、faxgettyがdependエラーになって起動できない

原因
上記「送信するとエラーになる」と同じく、faxgettyの起動に問題がある

対策
上記「送信するとエラーになる」と同じく、faxgettyのサービス定義を修正する。

調査の過程で、ログにファイルアクセスエラーが見つかり、これに対応
FaxGetty[745]: Couldn't get next seqnum for session log: Unable to open sequence number file log/seqf; Permission denied.
:/var/spool/hylafax/log $ ls -l
。。。。
-rw------- 1 root root 2 Aug 16 18:21 seqf
:/var/spool/hylafax/log $ sudo chmod 644 seqf
:/var/spool/hylafax/log $ ls -l
。。。。
-rw-r--r-- 1 root root 2 Aug 16 18:21 seqf

[FAX]受信したファイルが見えない。
原因
受信フォルダー上に作成された受信データファイルの属性が、Hylafaxで見えないパーミッションになっている

対策
ソフトウェアモデムの定義を修正する
RecvFileMode:           0666
LogFileMode: 0666

[FAX]受信通知メールが送られない。
原因
FaxDispatchの配置場所が異なっていた
/var/spool/hylafax/etc/FaxDispatch

対策
FaxDispatchを/etc/hylafax/FaxDispatchに配置する。

[FAX]受信通知メールがuucp@XXXXXに送ろうとする。
原因
/etc/ssmtp/smtp.confのhostnameが送信に利用するsmtpのドメイン以外だと勝手に送信元を生成してしまう。

対策
smtp.confに次の定義を追加すればhost名は自由に付けることができる。
FromLineOverride=YES
RewriteDomain=<送信したいドメイン>

[FAX]送信完了メールが送られない。
原因
NotifyスクリプトのコメントにFaxNotifyにmailaddrを設定するように記述してある。

対策
FaxNotifyにmailaddr=<送信先メールアドレス>;を追加

[FAX]受信完了メールにテンプレートが反映されない。
現象
発信元がuucpで添付ファイルのみのメールが送られる。

原因
不明。

対策
faxdサービスを定期的(毎日)に再起動

[FAX]FAX受信通知メールのタイトル、本文が消える。
現象
ログにエラーが記録されている
Oct 23 10:23:39 xxxxxxxx FaxGetty[807]: log/seqf: open: Permission denied
Oct 23 10:23:39 xxxxxxxx FaxGetty[807]: Couldn't get next seqnum for session log: Unable to open sequence number file log/seqf
; Permission denied.

原因
ログ管理ファイルのパーミッションの問題

対策
/var/spool/hylafax/log/seqfのモードを変更 644->666
/var/spool/hylafax/log $ sudo chmod 666 seqf
OSを再起動



■ 目次 ■
  1. 構成
  2. ひかり電話RV-230SEの設定
  3. OSのセットアップ
  4. LANアダプタの接続
  5. ユーティリティのセットアップ
  6. PBXのセットアップ
  7. ソフトウェアモデムのセットアップ
  8. FAXのセットアップ
  9. 自動再起動
  10. ステータスLEDの接続
  11. ケースに収納・設置
  12. ▶トラブルと対応