3

カスタム SIP ソフトウェアを EC2 インスタンスで動作させようとしています。現在、私のソフトウェアには NAT 処理機能がありません。EC2 インスタンスに関連付けられたパブリック (エラスティック) IP で透過的に動作させることができるかどうか疑問に思っていました。

EC2ボックスで実行した「iconfig -a」の出力は次のとおりです。

eth0 Link encap:Ethernet HWaddr XXXXXX
inet addr: PRIVATE-IP-ADDRESS Bcast:10.48.195.255 Mask:255.255.254.0
inet6 addr: XXXXXX/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX パケット:3825 エラー: 0 ドロップ:0 オーバーラン:0 フレーム:0
TX パケット:3596 エラー:0 ドロップ:0 オーバーラン:0 キャリア:0
衝突:0 txqueuelen:1000
RX バイト:259666 (253.5 KiB) TX バイト:1106872 (1.0 MiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX パケット:78 エラー:0 ドロップ:0 オーバーラン:0フレーム:0
TX パケット:78 エラー:0 ドロップ:0 オーバーラン:0 キャリア:0
衝突:0 txqueuelen:0
RX バイト:6892 (6.7 KiB) TX バイト:6892 (6.7 KiB)

アプリケーションが PUBLIC (エラスティック) IP アドレスで透過的に UDP ソケットを開くことができるように、これを変更する方法はありますか? 基本的に、パブリック IP が通常 eth0 に割り当てられているかのように機能します。

iptables DNAT/SNAT を使用するか、IP アドレスを手動で追加することを考えましたが、これまでのところ成功していません。

4

5 に答える 5

3

EC2 用の静的 IP を購入することをお勧めします。多くの労力を節約できます。それにもかかわらず、一般的な SIP 通信における NAT について考える必要があります。ところで、ほとんどの場合、nat トラバーサルはインフラストラクチャ (sip ルーター/ゲートウェイ/sip サーバー) から処理され、SIP メッセージの「ルート」ヘッダーを追加/削除します。SIP サービスはパブリック エンドポイントを持つことを意図しているため、NAT 機能を実装する必要があるかどうかはわかりません。あなたが話しているこのカスタム SIP ソフトウェアは、サーバーではなくクライアントだと思います。

于 2012-04-04T15:46:46.900 に答える
3

答えはノーだ。プライベート IP アドレスを使用している場合、SIP サーバー アプリケーションをインターネット上で透過的に動作させる良い方法はありません。サーバー アプリケーションは、そのパブリック IP アドレスと、プライベート IP アドレスより優先してその IP アドレスを使用する必要があるという事実の両方を認識する必要があります。SIP では、Record-Route、Route、Contact などの多数のヘッダーにパブリック アドレスを挿入する必要があります。サーバーとして、INVITE 要求と応答の SDP ペイロードでパブリック IP アドレスを使用する必要もあります。ほとんどの SIP サーバー アプリケーションにはこれを行う機能があり、カスタム サーバーを作成している場合は、その機能を独自のサーバーに追加することをお勧めします。

上記とは別に、プライベート IP アドレスを使用して回避できる方法が 1 つあります。それは、アプリケーションの前に SIP アプリケーション層ゲートウェイ (ALG) をインストールし、それを使用して SIP 内のすべてのプライベート IP アドレスをマングルすることです。サーバーからのパケット。ただし、SIP ALG は災害であり、常に解決するよりも多くの問題を引き起こすため、この道をたどらないことを強くお勧めします。

于 2012-04-04T23:05:55.797 に答える
2

これに似た問題がいくつかありましたが、sip_nat.conf ファイルを次のように編集して解決しました。

externip=x.x.x.x
localnet=10.0.0.0/255.0.0.0
nat=yes

もちろん、走行距離は異なる場合がありますが、これにより多くの問題が解決されたようです. もちろん、IP が変更された場合や新しいインスタンスを起動した場合は、Asterisk の構成を更新して設定をリロードする方法を考え出す必要があります。

私の理解では、IPアドレスを伝えずに、常にサーバーにpingを送信して元に戻しますが、Asteriskには、ping応答の前に他のデータを受信した場合、それがIPではないことを知るほど賢くないという問題があります住所。ハードコーディングは多くの問題を解決するようです。

于 2012-04-18T22:49:32.633 に答える
0

https://forums.aws.amazon.com/からの回答

Elastic IP アドレスは、1:1 NAT を使用してインスタンスにマッピングされます。インスタンス自体はパブリック アドレスを認識しません。このアドレスはインターフェイスにバインドできないため、別の方法で処理する必要があります。接続が失われる可能性があるため、ネットワーク構成の変更は避けてください。

于 2012-04-10T09:02:06.973 に答える