web-dev-qa-db-ja.com

後ろのアスタリスクNAT間違った連絡先ヘッダーを設定します

静的に構成されたNATの背後にアスタリスク13.1.0を付けてSIPを使用しています。サーバーprivate_ipは、アクセスできるpublic_ipとは異なります。これらのオプションはすでに_sip.conf_ファイル。

_externaddr=public_ip:5060
media_address=public_ip
localnet=private_ip/24
_

ここで通話を開始しようとすると、サーバーがOKメッセージをクライアントに送信するまでメッセージは機能する可能性があります。このメッセージでは、アスタリスクはContactヘッダーをパブリックIPではなくプライベートIPに設定します。

_SIP/2.0 200 OK
From: "Test799" <sip:799@HOSTNAME>;tag=7ajcnltflq
To: <sip:62@HOSTNAME;user=phone>;tag=as08a05471
Call-ID: 54b6479ed3e3-io8z54pk25ve
CSeq: 2 INVITE
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
Session-Expires: 1800;refresher=uas
Contact: <sip:62@PRIVATE_IP:5060>
Content-Type: application/sdp
Require: timer
Content-Length: ...

v=0
o=root 1234 1234 IN IP4 PUBLIC_IP
c=IN IP4 PUBLIC_IP
...
_

Contactヘッダーがあるため、UAは次のACKをPRIVATE_IPに送信するようになりました。

私の構成の何が問題になっていますか?これはアスタリスクのバグですか?

3
Lukas Bernhard

IPv4externaddrをIPv6bindaddr設定と組み合わせて使用​​すると、この問題が発生します。

;  c) Listen on the IPv4 wildcard.            Example: bindaddr=0.0.0.0
;  d) Listen on the IPv4 and IPv6 wildcards.  Example: bindaddr=::
...
; (Note that using bindaddr=:: will show only a single IPv6 socket in netstat.
;  IPv4 is supported at the same time using IPv4-mapped IPv6 addresses.)

bindaddr = ::はIPv4ワイルドカードにバインドされないことを知っておくことが重要です。 IPv4にマップされたIPv6アドレスにバインドします!

2
Lukas Bernhard