「Asterisk NAT」の版間の差分
(→qualify) |
(→対応2) |
||
(2人の利用者による、間の2版が非表示) | |||
1行目: | 1行目: | ||
==a) Asteriskサーバがグローバル、端末がNAT背後== | ==a) Asteriskサーバがグローバル、端末がNAT背後== | ||
+ | [[画像:Asterisk NAT1.gif|thumb|イメージ図]] | ||
Asteriskサーバ側がグローバルIPアドレスを持ち、それにアクセスする端末側がNAT背後にある場合の対応は比較的簡単です。<br> | Asteriskサーバ側がグローバルIPアドレスを持ち、それにアクセスする端末側がNAT背後にある場合の対応は比較的簡単です。<br> | ||
sip.confの各セクションに次のように記述します。<br> | sip.confの各セクションに次のように記述します。<br> | ||
26行目: | 27行目: | ||
externhost=sip.hogehoge.net | externhost=sip.hogehoge.net | ||
localnet=192.168.0.0/255.255.0.0 | localnet=192.168.0.0/255.255.0.0 | ||
− | 外側のIPアドレスが不明な場合にはDDNS(Dynamic DNS) | + | 外側のIPアドレスが不明な場合にはDDNS(Dynamic DNS)サービスを利用するなどしてexternhost=を記述します。<br> |
ルータのNATを調整し、SIP(5060/UDP)とRTP(デフォルトでは10000~20000/UDP)をAsteriskサーバのローカルIPアドレスに向けます。<br> | ルータのNATを調整し、SIP(5060/UDP)とRTP(デフォルトでは10000~20000/UDP)をAsteriskサーバのローカルIPアドレスに向けます。<br> | ||
ただし、これらの対処を行ってもRegisterできないITSPがあります。<br> | ただし、これらの対処を行ってもRegisterできないITSPがあります。<br> | ||
+ | |||
===対応2=== | ===対応2=== | ||
− | + | 上記の方法で解決しない場合、SIP-NAT機能を持つルータを使えば解決する場合があります。SIP-NAT機能を利用することでAsteriskをNAT背後で動作させることが可能です。ヤマハのルータにはSIP-NAT機能を持つものがあり動作実績があります。ただし、この方法についてはヤマハが保証しているわけではありませんので、ヤマハには問い合わせないで下さい。<br> | |
*ルータ自体のVoIP(IP電話)機能はオフにします | *ルータ自体のVoIP(IP電話)機能はオフにします | ||
*(当然ながら)SIPとRTPのポートはフィルタで開けます | *(当然ながら)SIPとRTPのポートはフィルタで開けます | ||
46行目: | 48行目: | ||
localnet=192.168.0.0/255.255.0.0 | localnet=192.168.0.0/255.255.0.0 | ||
対応1の方法ではRegisterできなかったITSPも、これで使用できる場合があります。 | 対応1の方法ではRegisterできなかったITSPも、これで使用できる場合があります。 | ||
+ | |||
===qualify=== | ===qualify=== | ||
NATテーブルの保持のためITSP接続時でも相手に対してqualifyを指定するとテーブル維持に効果があります。ただし、ITSP側から文句を言われる可能性はあります。 | NATテーブルの保持のためITSP接続時でも相手に対してqualifyを指定するとテーブル維持に効果があります。ただし、ITSP側から文句を言われる可能性はあります。 |
2009年1月12日 (月) 09:14時点における版
目次
a) Asteriskサーバがグローバル、端末がNAT背後
Asteriskサーバ側がグローバルIPアドレスを持ち、それにアクセスする端末側がNAT背後にある場合の対応は比較的簡単です。
sip.confの各セクションに次のように記述します。
[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あたりに設定します。
この方法でフリースポットやM-Zoneなどのホットスポット系から使用できることを確認しています。
b) AsteriskサーバがNAT背後
この場合は、かなりやっかいです。接続ないしRegisterする相手側がAsteriskの場合で、グローバルIPアドレスを持つ場合には相手にnat=yesを記述してもらえれば解決しますが、そうでない場合には対向先の状況にかなり依存するようです。
対応1
sip.confのgeneralセクションに以下のように記述してみます。
externip=xxx.xxx.xxx.xxx externhost=sip.hogehoge.net localnet=192.168.0.0/255.255.0.0
外側のIPアドレスが不明な場合にはDDNS(Dynamic DNS)サービスを利用するなどしてexternhost=を記述します。
ルータのNATを調整し、SIP(5060/UDP)とRTP(デフォルトでは10000~20000/UDP)をAsteriskサーバのローカルIPアドレスに向けます。
ただし、これらの対処を行ってもRegisterできないITSPがあります。
対応2
上記の方法で解決しない場合、SIP-NAT機能を持つルータを使えば解決する場合があります。SIP-NAT機能を利用することでAsteriskをNAT背後で動作させることが可能です。ヤマハのルータにはSIP-NAT機能を持つものがあり動作実績があります。ただし、この方法についてはヤマハが保証しているわけではありませんので、ヤマハには問い合わせないで下さい。
- ルータ自体の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も静的マスカレードを行っています。
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を指定します。
d) どうしてもダメな場合
IAXで接続させてくれるITSPを選択するのがベストでしょう。