ネットワーキング
最終更新日 2024年12月03日(火)
各 dyno には独自のネットワークインターフェースがあります。周辺のネットワーク設定はランタイムのタイプによって異なります。
Common Runtime のネットワーキング
Common Runtime では、ファイアウォールを設定することによって、すべての dyno が相互に強力に分離されます。dyno に到達できる唯一のトラフィックは、$PORT
環境変数で指定されるポート番号をリッスンする Web プロセスにルーターから転送される Web リクエストです。受信リクエストを受信できるのは Web dyno のみです。
dyno 内の個々のプロセスは任意のアドレスやポートにバインドされ、バインドされたプロセス間で標準 TCP を使用して通信することができます。各 dyno の外部ネットワークインターフェース (eth0
など) は、範囲が 172.16.0.0/12 の /30 プライベートサブネット (172.16.83.252/30、172.30.239.96/30 など) の一部となります。1 つの dyno 内のプロセスは、IP またはサブネットを他の dyno と共有することも、他の dyno の TCP セッションの状態を監視することもありません。
Common Runtime のすべての dyno タイプは、インターネット上の他の場所で実行されているサービスにアウトバウンドリクエストを行うことができます。ユーザーはこれらのリクエストの発信元となる IP アドレスを制御できません。
Private Spaces Runtime ネットワーキング
Private Spaces Runtime には Cedar と Fir の 2 世代があります。
Cedar の Private Spaces
Cedar 世代の Private Space または Shield Space の dyno は、スペースの一部として設定されている仮想プライベートネットワークを通じてすべて接続されています。スペースにインストールされているすべてのデータサービスも、このネットワークに接続されています。
Common Runtime と同様、Web プロセスは $PORT
環境変数で指定されているポート番号をリッスンすることによって Web リクエストを受信できます。さらに、dyno 内のすべてのプロセスは任意のポート番号をリッスンし、プライベートネットワーク上の他の dyno から接続を受信することができます。
信頼できる IP 範囲を使用して、スペース内のアプリケーションと通信できるクライアント IP を制御します。
さらに、Private Space 内のアプリはアプリの作成時に Internal Routing を有効にできます。他のアプリとは異なり、これらの内部アプリは Web プロセスタイプ宛ての外部 Web トラフィックを受信できません。代わりに、アプリの Web プロセスタイプは以下からトラフィックを受信できます。
スペース内の dyno は、すべての接続が一連の固定のアウトバウンド IP アドレスから発信されるようにする NAT ゲートウェイ経由で、他のインターネットサービスへのアウトバウンド接続を行います。
Fir Private Spaces
カスタムの信頼できる IP、Internal Routing、VPC ピアリング、VPN 接続は、 Fir 世代の Private Space では使用できません。これらの機能が Fir に追加されたときに通知を受け取るには、Changelog の受信登録を行ってください。
Cedar 世代の Private Space と同様に、Fir 世代のスペース内の dyno はすべて、スペースの一部として設定されている仮想プライベートネットワークを通じて接続されています。スペースにインストールされているすべてのデータサービスも、このネットワークに接続されています。
Common Runtime や Private Space と同様、Web プロセスは $PORT
環境変数で指定されているポート番号をリスンすることによって Web リクエストを受信できます。
dyno は VPC ピアリングまたは VPN 接続ネットワークで実行されているサービスに接続できます。これらのサービスは、Fir 世代のスペース内の dyno に直接アクセスできません。アプリのパブリック DNS 名を介してインターネット経由でこれらの dyno に接続する必要があります。
スペース内の dyno は、すべての接続が一連の固定のアウトバウンド IP アドレスから発信されるようにする NAT ゲートウェイ経由で、他のインターネットサービスへのアウトバウンド接続を行います。
外部サービスへの接続
dyno 上で実行されているアプリケーションは、外部サービスに接続できます。Heroku ではアプリを複数のリージョンで実行できるため、レイテンシーを最適にするには、アプリと同じリージョンでサービスを実行してください。