「Asterisk NAT」の版間の差分

提供: VoIP-Info.jp
移動先: 案内検索
(対応2)
(内容を「カテゴリ:Asterisk カテゴリ:NAT chan_sipは廃止されるので、SIPチャネルを使用する場合にはPjSIPを使ってください。 *chan_sip NAT...」で置換)
 
1行目: 1行目:
==a) Asteriskサーバがグローバル、端末がNAT背後==
+
[[カテゴリ:Asterisk]]
[[画像:Asterisk NAT1.gif|thumb|イメージ図]]
+
[[カテゴリ:NAT]]
Asteriskサーバ側がグローバルIPアドレスを持ち、それにアクセスする端末側がNAT背後にある場合の対応は比較的簡単です。<br>
 
sip.confの各セクションに次のように記述します。<br>
 
[201]
 
type=friend
 
username=201
 
secret=*****
 
context=default
 
host=dynamic
 
canreinvite=no
 
callgroup=1
 
pickupgroup=1
 
dtmfmode=rfc2833
 
disallow=all
 
allow=ulaw
 
qualify=1000
 
nat=yes
 
'''nat=yes'''を記述します。また相手(端末側)のNATテーブルをキープするために'''qualify=1000'''(単位はミリ秒)を記述しておくと良いでしょう。遅延の大きい端末相手ならば2000あたりに設定します。<br>
 
この方法でフリースポットやM-Zoneなどのホットスポット系から使用できることを確認しています。<br>
 
  
==b) AsteriskサーバがNAT背後==
+
chan_sipは廃止されるので、SIPチャネルを使用する場合にはPjSIPを使ってください。
この場合は、かなりやっかいです。接続ないしRegisterする相手側がAsteriskの場合で、グローバルIPアドレスを持つ場合には相手にnat=yesを記述してもらえれば解決しますが、そうでない場合には対向先の状況にかなり依存するようです。<br>
+
*chan_sip NAT
===対応1===
+
:[[Asterisk chan SIP NAT]]
sip.confのgeneralセクションに以下のように記述してみます。
+
*PjSIP NAT
externip=xxx.xxx.xxx.xxx
+
:[[Asterisk pjsip NAT]]
externhost=sip.hogehoge.net
 
localnet=192.168.0.0/255.255.0.0
 
外側のIPアドレスが不明な場合にはDDNS(Dynamic DNS)サービスを利用するなどしてexternhost=を記述します。<br>
 
ルータのNATを調整し、SIP(5060/UDP)とRTP(デフォルトでは10000~20000/UDP)をAsteriskサーバのローカルIPアドレスに向けます。<br>
 
ただし、これらの対処を行ってもRegisterできないITSPがあります。<br>
 
 
 
===対応2===
 
上記の方法で解決しない場合、SIP-NAT機能を持つルータを使えば解決する場合があります。SIP-NAT機能を利用することでAsteriskをNAT背後で動作させることが可能です。ヤマハのルータにはSIP-NAT機能を持つものがあり動作実績があります。ただし、この方法についてはヤマハが保証しているわけではありませんので、ヤマハには問い合わせないで下さい。<br>
 
*ルータ自体のVoIP(IP電話)機能はオフにします
 
*(当然ながら)SIPとRTPのポートはフィルタで開けます
 
*以下のコマンドでSIP-NATと静的マスカレードを設定します
 
nat descriptor type 200 masquerade
 
nat descriptor address outer 200 primary
 
nat descriptor sip 200 on
 
nat descriptor masquerade static 200 1 192.168.xxx.xxx udp 5000-5060
 
nat descriptor masquerade static 200 2 192.168.xxx.xxx udp 4569
 
この例ではRTPのポートに5000~5059/UDPを使用しています。またIAXも静的マスカレードを行っています。<br>
 
 
 
Asterisk側では対応1と同じように外側のIPアドレスまたはホスト名を記述します。
 
externip=xxx.xxx.xxx.xxx
 
externhost=sip.hogehoge.net
 
localnet=192.168.0.0/255.255.0.0
 
対応1の方法ではRegisterできなかったITSPも、これで使用できる場合があります。
 
 
 
===qualify===
 
NATテーブルの保持のためITSP接続時でも相手に対してqualifyを指定するとテーブル維持に効果があります。ただし、ITSP側から文句を言われる可能性はあります。
 
==c) Asteriskも端末もNAT背後==
 
a)とb)の方法を組み合わせます。なお、b)の方法を実施するには外側IPアドレスがわからなくてはなりませんので、DDNSを使用する必要があります。端末側からAsteriskに接続するにはDDNSで取得したFQDNを指定します。<br>
 
==d) どうしてもダメな場合==
 
IAXで接続させてくれるITSPを選択するのがベストでしょう。
 

2024年8月20日 (火) 13:59時点における最新版


chan_sipは廃止されるので、SIPチャネルを使用する場合にはPjSIPを使ってください。

  • chan_sip NAT
Asterisk chan SIP NAT
  • PjSIP NAT
Asterisk pjsip NAT