楽天クラウド Red Hat OpenStack Platform
楽天クラウド Red Hat OpenStack Platformは楽天クラウドをリニューアルして、2019年にサービス提供を開始したIaaSです。
https://cloud.rakuten.co.jp/redhat/
OSはCentOS, Debian, FortiGate, Red Hat, Ubuntu, Windows server, VyOSを用意しています。
https://cloud.rakuten.co.jp/redhat/pricing/
CentOSでSIPサーバーを建てる

SIPサーバーからVoIPブロバイダにREGISTERを上げます。
しかし何かが変です。
172.18.1.231:6060から61.213.xxx.yyy:5060にREGISTERを上げていますが、応答が53136ポートに来ています。
本来なら送信した時と同じ6060に応答が来るはずです。
これではSIPサーバーは動作しません。
NAPT/IPマスカレード
NAPT/IPマスカレードは1つのグローバルIPを、NAT配下の複数のユーザーで共有する為の技術です。
パケットがNAT超えをする時にポート番号を変換します。
OpenStack PlatformではNAPT/IPマスカレードが標準で有効になっています。
その為、パケット本文内にIPアドレスやポート番号が記載されるプロトコルでは通信状態の不整合が発生する場合があります。
再帰NAT設定
公式:楽天クラウド Red Hat OpenStack Platform: 再帰NAT設定
https://customer.cloud.rakuten.co.jp/doc/osp/ja/help/nw_floatingip/stateless_nat/
このようなアプリケーション(SIP,RTPなどのVoIPアプリケーション)をご利用されるお客様については、弊社でポート番号変換が行われない静的NAT(再帰NAT)設定を実施いたしますので、弊社までご連絡をお願いいたします。
再帰NAT設定はOpenStack Platformの管理画面からは行なえません。
楽天クラウドのお問い合わせフォームから申し込む必要が有ります。
https://comm.rakuten.co.jp/toiawase/h_redhat-inquiry-support.shtml
再帰的NATを依頼すると通常管理画面からアサインするFloating IPとは別に、再帰的NATを有効にしたグローバルIPがインスタンスにアサインされます。
またFloatingIPの一覧には表示されません。
(2022年2月現在表示されませんが、将来実装されるとの事)
ルーターの詳細画面にはIPアドレスとSNAT有効と表示されます。
再帰的NATが有効になるとパケットがNAT超えする際に、ポート変換を行わなくなります。
その為応答が正しく送信元のポートに届きます。
NAT超えをサポートしているSIPトランクの場合

NAT超えをサポートしているSIPトランクの場合、NAPT/IPマスカレードが有効でも問題なくREGISTERが上がります。
B2BUA OpenGate
https://comm.rakuten.co.jp/houjin/asterisk_ip/b2buaog/
しかしNAT環境上の使用注意点が有ります。
ルータ環境によって通常1~5分程度でNATテーブルがクリアされ着信できなくなる可能性があります。着信環境を継続するために、ルータ内部のSIP端末からOpenGateサーバへ、ルータのNATテーブル維持時間より短い間隔で、空パケットもしくはOPTIONSリクエストを定期的に送信して下さい。
通常、NATは内側から外への通信に対する応答を通します。
NATが閉じてしまうと新規の着信パケットはNATの内側に入って来れなくなります。
その為NATを開け続ける為に定期的にパケットを送る必要が有ります。
まとめ
クラウドにSIPサーバーを建てる場合はNATに注意が必要です。
インスタンスに直にグローバルIPがアサインされている場合も有ります。
この様な場合はポート番号の変換を意識する必要は有りません。
NAT超えに対応したSIPトランクも有りますが、NATテーブルを維持する為に定期的なパケット送信が必要です。