turnserver.conf に、外部 IP が aws のみに使用されている場合、「Amazon EC2 ユーザー向け」という世界が表示されますか? stun サーバーを k8s クラスターで実行し、それを nodeport サービスを使用してパブリック ネットワークに公開しますが、stun によって返される srflx はゲートウェイ アドレスであり、設定した外部 IP ではありません。私の k8s クラスターは Alibaba Cloud 上で実行されます。誰かがこの問題を解決するのを手伝ってくれることを願っています、ありがとう!!!</p>
1 に答える
AWS EC2 インスタンスは、ほとんどの場合、NAT の背後で実行されます。AWS コンソール経由でパブリック IP アドレス (例: 1.2.3.4
) を割り当てた場合でも、インスタンスはそのプライベート ネットワークのみを認識し、割り当てられたパブリック IP アドレスを認識しません。つまり、インスタンスは、その IP アドレスが172.31.5.6
オペレーティング システムの起動時に検出されたものであると考えます。ポート転送により、特定の TCP および UDP ポートをパブリック IP アドレスから、EC2 インスタンスが実行されているプライベート IP アドレスに転送できます。
これは通常、AWS EC2 インスタンスで実行されるほとんどのサービスでは問題になりません。完全な「2 IP アドレスと 2 ポート モード」で実行されている STUN では、クライアントが NAT 動作とフィルタリング テストを実行する場合、サーバーは代替 IP アドレスをクライアントに通知する必要があります。しかし、STUN サーバーが代替 IP として送り返すのは正しく172.31.5.7
ありません。クライアントはプライベートであるため、その IP に到達する方法がありません。
TURN の場合と同様に、ポートの割り当てが発生すると、サーバーは EC2 インスタンスのパブリック IP アドレスを、それを割り当てたクライアントに送り返す必要があります。クライアントが TURN ポートを別のピアと共有するように要求した場合、それは悪いことです。TURN サーバーが送り返すためだけです172.31.5.6
。
したがって、STUN または TURN サーバーを NAT の背後でホストするには、一連のコマンド ライン パラメータまたは構成パラメータを使用して、その「実際の」IP アドレスをサーバーに伝える必要があります。STUN/TURN ソフトウェアは、これらの IP アドレスを使用して、応答をクライアントに送り返します。