PJSIP B2BUA OpenGate に接続できない

42 views
Skip to first unread message

菅村覚

unread,
Jun 23, 2024, 8:20:19 AMJun 23
to 日本Asteriskユーザ会
B2BUA OpenGateに接続できない状況に有り、情報を頂きたく投稿しました。

私はインフラ技術やサーバ構築は10年以上の経験があるのである程度のスキルは有ります。
以前にAsterisk1,4で構築しており、この時にB2BUAには接続できています。
今回サーバ入れ替えの為にAsterisk20で構築してますが、PJSIPでの接続ができません。
SIPでもトライしましたが別のエラーが出て断念しています。

サーバの環境は下記のとおりです。
AWS
Ubuntu
Asterisk 20.7.0
ソースをダウンロードしてコンパイルしています。

PJSIPの設定はテストの為に下記と同じようにしています。
[opengate1]
type = aor
contact = sip:ユーザ名@okj.sip.0038.net
qualify_frequency = 30
authenticate_qualify = no

[opengate1]
type = identify
endpoint = opengate1
match = okj.sip.0038.net

[opengate1]
type = auth
username = ユーザ名
password = パスワード

[opengate1]
type = registration
transport = transport-udp
outbound_auth = opengate1
server_uri = sip:okj.sip.0038.net
client_uri = sip:ユーザ名@okj.sip.0038.net
retry_interval = 60

[opengate1]
type = endpoint
context = from-opengate
dtmf_mode = inband
disallow = all
allow = ulaw
direct_media = no
send_pai = yes
inband_progress = yes
from_user = ユーザ名
from_domain = okj.sip.0038.net
language = ja
auth = opengate1
outbound_auth = opengate1
aors = opengate1

起動すると下記のエラーが表示されます。
[Jun 23 19:51:44] WARNING[646619]: res_pjsip_outbound_registration.c:1397 handle_registration_response: Fatal response '401' received from 'sip:okj.sip.0038.net' on registration attempt to 'sip:5830...@okj.sip.0038.net', stopping outbound registration

着信はできています。
発信時はbusyになり通話できません。

下記はログになります。
ip-172-31-43-152*CLI> pjsip send register opengate1
<--- Transmitting SIP request (453 bytes) to UDP:61.213.230.145:5060 --->
REGISTER sip:okj.sip.0038.net SIP/2.0
Via: SIP/2.0/UDP 172.31.43.152:5060;rport;branch=z9hG4bKPj2eba647d-b398-4709-97ca-edcde0b042ca
From: <sip:5830...@okj.sip.0038.net>;tag=910efe1c-2a0d-42c8-b778-be717d43d466
To: <sip:5830...@okj.sip.0038.net>
Call-ID: 9d30d97b-7e6b-432d-9fd1-facf4cd33fea
CSeq: 40458 REGISTER
Contact: <sip:s...@172.31.43.152:5060>
Expires: 0
Max-Forwards: 70
User-Agent: Asteriski/20.7(172.31.43.152)
Content-Length:  0

<--- Received SIP response (428 bytes) from UDP:61.213.230.145:5060 --->
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 172.31.43.152:5060;rport;branch=z9hG4bKPj2eba647d-b398-4709-97ca-edcde0b042ca
From: <sip:5830...@okj.sip.0038.net>;tag=910efe1c-2a0d-42c8-b778-be717d43d466
To: <sip:5830...@okj.sip.0038.net>;tag=as7ae3d8b7
Call-ID: 9d30d97b-7e6b-432d-9fd1-facf4cd33fea
CSeq: 40458 REGISTER
WWW-Authenticate: Digest algorithm=MD5, realm="okj.sip.0038.net", nonce="1677156c"
Content-Length: 0

<--- Transmitting SIP request (628 bytes) to UDP:61.213.230.145:5060 --->
REGISTER sip:okj.sip.0038.net SIP/2.0
Via: SIP/2.0/UDP 172.31.43.152:5060;rport;branch=z9hG4bKPjbc7a07e4-c8c6-470e-80f1-82cf2aa51bb5
From: <sip:5830...@okj.sip.0038.net>;tag=910efe1c-2a0d-42c8-b778-be717d43d466
To: <sip:5830...@okj.sip.0038.net>
Call-ID: 9d30d97b-7e6b-432d-9fd1-facf4cd33fea
CSeq: 40459 REGISTER
Contact: <sip:s...@172.31.43.152:5060>
Expires: 0
Max-Forwards: 70
User-Agent: Asteriski/20.7(172.31.43.152)
Authorization: Digest username="58307939", realm="okj.sip.0038.net", nonce="1677156c", uri="sip:okj.sip.0038.net", response="3e172f2d42ce256b8d22ced7254a976c", algorithm=MD5
Content-Length:  0

<--- Received SIP response (440 bytes) from UDP:61.213.230.145:5060 --->
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 172.31.43.152:5060;rport;branch=z9hG4bKPjbc7a07e4-c8c6-470e-80f1-82cf2aa51bb5
From: <sip:5830...@okj.sip.0038.net>;tag=910efe1c-2a0d-42c8-b778-be717d43d466
To: <sip:5830...@okj.sip.0038.net>;tag=as51400edc
Call-ID: 9d30d97b-7e6b-432d-9fd1-facf4cd33fea
CSeq: 40459 REGISTER
WWW-Authenticate: Digest algorithm=MD5, realm="okj.sip.0038.net", nonce="3623a15d", stale=true
Content-Length: 0

[Jun 23 20:57:51] WARNING[647498]: res_pjsip_outbound_registration.c:1061 schedule_retry: Temporal response '401' received from 'sip:okj.sip.0038.net' on registration attempt to 'sip:5830...@okj.sip.0038.net', retrying in '60'

<--- Transmitting SIP request (455 bytes) to UDP:61.213.230.145:5060 --->
OPTIONS sip:5830...@okj.sip.0038.net SIP/2.0
Via: SIP/2.0/UDP 172.31.43.152:5060;rport;branch=z9hG4bKPj32169841-6b5c-4e53-b72b-070915367187
From: <sip:5830...@okj.sip.0038.net>;tag=e084855d-34fc-4179-92d2-715ee5b32055
To: <sip:5830...@okj.sip.0038.net>
Contact: <sip:5830...@172.31.43.152:5060>
Call-ID: ef4da9d8-d5e3-43e0-b0b9-eb602c4ae024
CSeq: 20415 OPTIONS
Max-Forwards: 70
User-Agent: Asteriski/20.7(172.31.43.152)
Content-Length:  0


<--- Received SIP response (318 bytes) from UDP:61.213.230.145:5060 --->
SIP/2.0 200 OK
Via: SIP/2.0/UDP 172.31.43.152:5060;rport;branch=z9hG4bKPj32169841-6b5c-4e53-b72b-070915367187
To: <sip:5830...@okj.sip.0038.net>
From: <sip:5830...@okj.sip.0038.net>;tag=e084855d-34fc-4179-92d2-715ee5b32055
Call-ID: ef4da9d8-d5e3-43e0-b0b9-eb602c4ae024
CSeq: 20415 OPTIONS
Content-length: 0

ip-172-31-43-152*CLI> pjsip show registrations
 <Registration/ServerURI..............................>  <Auth....................>  <Status.......>
==========================================================================================
 opengate1/sip:okj.sip.0038.net                          opengate1                   Registered        (exp. 3505s)

よろしくお願いします。

梁瀬大右

unread,
Jun 23, 2024, 10:02:56 AMJun 23
to 日本Asteriskユーザ会
以下、もし的外れな内容でしたら申し訳ありません。
B2BUA OpenGateではないのですが、
何故か不定時間が経過すると401 UnAuthorizedを表示してくる内線端末にぶち当たったことがあります。
その時に得た知見を元に、いくつかご確認させていただきたく思います。

確認なのですが、AWSのインスタンスのプライベートIPが見えていて、
パブリックIPが当たっているように見えませんが、
これは情報保護のため置き換えてありますか?

着信はできているとのことですから、ACLもテストと同様の設定が行われており、
音声も通っている(接続している内線電話機のエコーテストも成功している)
という認識でお間違い無いでしょうか。

着信はできているということですから、外から内宛の制御信号とその応答は通っており、
その逆がNGであるという状況と拝察いたしました。

内から外宛のSIPプロトコルが401(UnAuthorized)ということになっているように見えます。
SIP信号をB2BUA OpenGate宛に吐き出した際に、
「B2BUA OpenGate側で認識したIP」と、
「AWSのインスタンスが吐き出したSIP信号の戻り宛先IPアドレス」の記述が不一致
(おそらく戻り宛先IPがパブリックIPではなくプライベートIP宛)になっていないでしょうか?

例えばですが、FreePBX17(beta)ではPJSIPの場合以下のようなTransport設定が自動で吐き出されます。
(Port番号、IPアドレス等は適宜読み替えをお願いいたします)

/etc/asterisk/pjsip.transports.conf
<前略>
[0]
#include pjsip.transports_custom.conf
[0.0.0.0-udp]
type=transport
protocol=udp
external_media_address=<Your Public IP>
external_signaling_address=<Your Public IP>
external_signaling_port=5060
allow_reload=no
tos=cs3
cos=3
local_net=<Your Local Area Network Segment>
<後略>

「external_media_address」
「external_signaling_address」
がAWSに割り当てられたパブリックIPである必要があるのではないかと存じます。

恐れ入りますが、ご確認いただけますでしょうか。
よろしくお願いいたします。

2024年6月23日日曜日 21:20:19 UTC+9 菅村覚:

菅村覚

unread,
Jun 24, 2024, 12:07:36 AMJun 24
to 日本Asteriskユーザ会
梁瀬さんありがとうございます。
「external_media_address」
「external_signaling_address」
に関しては一度テストしていて接続できませんでした。

Hideyuki Takenaka

unread,
Jun 25, 2024, 3:04:34 AMJun 25
to 日本Asteriskユーザ会
初めて投稿します。
竹中と申します。

当方もPJSIPにてB2BUA OpenGateを使っているので、いくつか確認してみました。

・opengate1のユーザ名、パスワードを当方のアカウントに置き換えて設定したところ、
 opengate1からの発信および着信はできました。
 したがって、opengate1の構成自体は問題なさそうです。
 transport-udpは当方の構成を使っていますので、
 もしかしたらそちらのtransport-udpの内容に問題があるかもしれません。

・「pjsip send register」というコマンドがわからないのですが、
 試しに「pjsip send register opengate1」を打ってみましたが、
 401エラーが発生しました。

 何回か「pjsip show registrations」にて状態を確認したのですが、
 ・Asteriskを再起動すると、opengate1は「Registered」となっている。→発着信可能
 ・「pjsip send register opengate1」を実行した後は、opengate1は「Rejected」になった。
  →この状態でも発着信可能でした

 401エラーは再現できましたが、通話中という状態は再現できませんでした。


transport-udpを再度ご確認ください。
当方のpjsipo.confのtransport-udpは次の通りです。

[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060
;パブリックIPを設定
external_media_address = <グローバルIP>
external_signaling_address = <グローバルIP>
;プライベート IPを設定
local_net = XXX.XXX.XXX.0/16
local_net = 127.0.0.1/32


またAWSをご利用されている場合、VPCのセキュリティグループとネットワークACLの設定も
念のため見直していただくといかがでしょうか。
着信の場合はインバウンドの設定ですが、発信の場合はアウトバウンドの設定となります。
ネットワークACLはステートレスのため、インアウトともにフルオープンにした方が
確認しやすいかと思います。

2024年6月23日(日) 21:20 菅村覚 <s-sug...@senet.co.jp>:
> --
> このメールは Google グループのグループ「日本Asteriskユーザ会」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには asterisk-ug...@googlegroups.com にメールを送信してください。
> このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/asterisk-ug/918ed788-a01e-47c9-ab02-1ca9d140dd6dn%40googlegroups.com にアクセスしてください。
Message has been deleted

菅村覚

unread,
Jun 25, 2024, 7:58:43 PMJun 25
to 日本Asteriskユーザ会
竹中様
情報ありがとうございます。

AWSのLightSaleでテスト環境を構築したところ正常に動作しました。
FusionでIPアドレス制限がかかっていないかを心配しています。
EC2でテスト環境を作成してテストしてみます。

2024年6月25日火曜日 16:04:34 UTC+9 Hideyuki Takenaka:

菅村覚

unread,
Jun 26, 2024, 12:55:20 AMJun 26
to 日本Asteriskユーザ会
なんとか解決しました。
みなさんの時間を頂いたので結果ご報告します。

当初接続できなかった原因は恐らくfrom_userが無かったからかと思います。
サンプルでうまく行かなかったのは私の判断ミスです。
順を追って説明します。
①うまくつながらない => この時点でパラメータのミスだった。
②pjsip send register と unregisterで401のエラーが出た。
③本番環境でテスト的にで https://voip-info.jp/index.php/Asterisk_pjsip_trunk_opengate の設定で実行した際にはじめ②でおこなっていてエラーが出た為に環境がおかしいと判断した => 実はこの挙動は正しかった(竹中様情報ありがとうございまs)
④改めてテスト環境を構築しテストした(LightSail)。ポートは5060に制限をかけない。この結果はうまく行った。
⑤EC2に再度テスト環境を構築しテストした。ここもうまく行った。
⑥本番環境で設定したらエラーになった。この際にfrom_userを設定ていなかったのを発見し対処したら発信ができるようになった。
--- ここから更にはまっています ---
⑦初めは着信できていたが、着信ができなくなった。1回線は着信できるが2回線設定すると2回線目が着信しなくなった。
⑧いろいろ調べた所endpointのauthの設定が入ると複数回線時に着信できない状態だった。

以上で解決しました。
今回の件で複数回線時にendpointにauthが有ると2回線目以降が着信できなくなりました。
エラーは failed to authenticate でした。
match_headerで解決した記事もみて試しましたが解決しませんでした。
この方法が正しいかは判りませんがこのまま運用してみます。

2024年6月26日水曜日 8:58:43 UTC+9 菅村覚:
Reply all
Reply to author
Forward
0 new messages