
私は Raspberry Pi 1 (IP 192.168.2.2) 上で動作する Asterisk PBX をセットアップしており、いくつかのローカル IP 電話を問題なく実行しています。最近、アナログ電話を IP に接続し、IP を PSTN に接続するために、Grandstream HT813 ゲートウェイ (IP 192.168.2.3) を購入しました。
アナログ電話は完璧に機能し、ダイヤルインもからPSTN は完璧に動作します。ダイヤルアウトはもっと問題がありました。まず、sip.conf に次の内容があります: (他の電話機は含めず、FXO ポートのみを含めました)
[general]
context=default
sipdebug=yes
bindaddr=0.0.0.0
[FXO]
type=peer
context=inbound
host=192.168.2.3
insecure=port
dtmfmode=rfc2833
canreinvite=no
secret=secret_was_here
明らかな理由により、上記の秘密は編集しました。IP 電話 (IP 192.168.2.5) 経由で PSTN にダイヤルアウトすると、次のエラーが発生します[myphonenumber]
。テストのために電話をかけた携帯電話番号はどこにありますか。
== Setting global variable 'SIPDOMAIN' to '192.168.2.2'
-- Executing [[myphonenumber]@local:1] Goto("PJSIP/104-00000000", "dialout,[myphonenumber],1") in new stack
-- Goto (dialout,[myphonenumber],1)
-- Executing [[myphonenumber]@dialout:1] Dial("PJSIP/104-00000000", "SIP/FXO/[myphonenumber], 30") in new stack
== Using SIP RTP CoS mark 5
Audio is at 13370
Adding codec ulaw to SDP
Adding codec alaw to SDP
Adding codec gsm to SDP
Adding non-codec 0x1 (telephone-event) to SDP
Reliably Transmitting (no NAT) to 192.168.2.3:5060:
INVITE sip:[myphonenumber]@192.168.2.3 SIP/2.0
Via: SIP/2.0/UDP 192.168.2.2:5060;branch=z9hG4bK71b94203
Max-Forwards: 70
From: <sip:[email protected]>;tag=as162b0b68
To: <sip:[myphonenumber]@192.168.2.3>
Contact: <sip:[email protected]:5060>
Call-ID: [email protected]:5060
CSeq: 102 INVITE
User-Agent: Asterisk PBX 16.2.1~dfsg-1
Date: Thu, 15 Aug 2019 19:11:17 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 291
v=0
o=root 1202030057 1202030057 IN IP4 192.168.2.2
s=Asterisk PBX 16.2.1~dfsg-1
c=IN IP4 192.168.2.2
t=0 0
m=audio 13370 RTP/AVP 0 8 3 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=maxptime:150
a=sendrecv
---
[Aug 15 20:11:17] ERROR[23679][C-00000001]: chan_sip.c:4321 __sip_reliable_xmit: Serious Network Trouble; __sip_xmit returns error for pkt data
そこで、スイッチ ポートを設定して、Asterisk サーバー Pi の出力をミラーリングしました。このエラーが発生するとゲートウェイにデータが送信されないため、問題は Asterisk にあります。もちろん、これは権限またはファイアウォール エラーであるという投稿を多数見てきました。まず、テスト中に Asterisk サーバーのファイアウォールを無効にしました。(小規模なネットワークです) また、 を実行し、ゲートウェイがnmap -v -sU -p 5060 192.168.2.3
正常に動作していることを確認できました。そのコマンドを Asterisk ユーザーとして実行すると、もちろん権限エラーが発生します。syslog には他に何も表示されません。何かアイデアはありますか?
アップデート:もう一度確認して、C コードを通じて呼び出しをトレースしました。問題は、接続に UDP ソケットが必要であることを確認するsipsock
ときに (行 29503)、変数 (行 1101) が -1 に設定されていることですsip_prepare_socket
。これにより -1 が返され、 にエラーがスローされます__sip_xmit
。ログ ファイルを検索して追加情報を探します。また、私の Asterisk バージョンは v16.2.1 です。