Asterisk pjsip NAT

提供: VoIP-Info.jp
2020年8月14日 (金) 13:16時点におけるTakatyan (トーク | 投稿記録)による版 (ページの作成:「== Asteriskサーバがグローバル、端末がNAT背後の場合 == Asteriskサーバ側がグローバルIPアドレスを持ち、それにアクセスする端末...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

Asteriskサーバがグローバル、端末がNAT背後の場合

Asteriskサーバ側がグローバルIPアドレスを持ち、それにアクセスする端末側がNAT背後にある場合、pjsip.confのtype=endpoint、type=aorのセクションに次のように記載します。

[201]
type = aor
max_contacts = 1
qualify_frequency = 1000

[201]
type = endpoint
context = default
disallow = all
allow = ulaw
rtp_symmetric = yes
rewrite_contact = yes
direct_media = no
auth = 201
outbound_auth = 201
aors = 201

重要なのはdirect_media, rtp_symmetric, rewrite_contactです。direct_mediaをnoにすると、端末間通話で常にAsteriskが映像・音声を中継しますから、NATの背後の端末同士の通話が可能となります。
rtp_symmetric, rewrite_contactの設定は従来のsip.confではnat=yesに相当します。 また相手(端末側)のNATテーブルをキープするためにtype=aorのセクションにqualify_frequency=1000(単位はミリ秒)を記述しておくと良いでしょう。遅延の大きい端末相手ならば2000あたりに設定します。

AsteriskサーバがNAT背後

この場合は、通信相手となる端末または回線(ITSP)の状況にも大きく依存するようですが、下記の手段が有用と思われます。

対応1

pjsip.confのtype=transportのセクションで次のように記載します。

external_media_address=fqdnhostname.example.com
external_signaling_address=fqdnhostname.example.com
local_net=192.168.0.0/16
local_net=127.0.0.1/32

external_media_address, external_signaling_addressにはグローバルIPアドレス、またはDDNS(Dynamic DNS)サービスを利用しホスト名(FQDN)を記載します。

ルータのNATを調整し、SIP(5060/UDP)とRTP(デフォルトでは10000~20000/UDP)をAsteriskサーバのプライベートIPアドレスに向けます。
ただし、これらの対処を行ってもRegisterできないITSPがあります。

対応2

上記の方法で解決しない場合、SIP-NAT機能を持つルータを使えば解決する場合があるとのことですがpjsipを使用する場合の詳細は未検証。