入口
| 入口 | 到達先 | 詳細 |
|---|---|---|
| キューブのアドレス、または独自ドメイン | アプリのインスタンス(HTTP)。リクエストがインスタンスを復帰させるか、作成する | キューブのアドレス、プロキシとダイレクトな名前 |
| サンドボックスのポートへのリンク | 1 つのサンドボックスの 1 つのポート(HTTP)。リンクが認証情報になる | リンク |
| SSH | SSH ゲートウェイを通じた、サンドボックス内のシェルやコマンド。登録したキーを使用 | SSH |
| プロジェクトのプライベートネットワーク | プロジェクトのサービスとサンドボックス同士(名前で) | プライベートネットワーク |
| サンドボックス専用の IPv6 アドレス | そこで開いたポート(TCP または UDP)。それぞれ開いた送信元に対して | 後述 |
サンドボックス専用の IPv6 アドレス
IPv6 アドレスのプールを持つマシン上で作られたサンドボックスは、存続する間ずっと、専用のパブリック IPv6 アドレス(サンドボックスの ipv6)を持ちます。ipv6 が null なら、そのサンドボックスは IPv4 だけです。
- **アドレスはサンドボックスのものであり続けます。**スリープ、スナップショット、ディスクからの再起動、移動を経ても変わりません。フォークや、スナップショットから作ったサンドボックスは、別のアドレスを持ちます。
- 送信:サンドボックスが IPv6 で送るものは、変換されずにそのアドレスから出ていくため、呼び出す先のサーバーはその 1 つのアドレスを許可できます。
- **受信:デフォルトで閉じています。**ポートは、TCP または UDP で、指定した送信元だけに対して開きます。送信元は IPv6 のプレフィックスかアドレスで、全員なら
::/0を明示します。1 つのサンドボックスで最大 64 ポート、1 つのポートで最大 32 の送信元です。サンドボックスが張った接続への応答と ping は届き、それ以外はすぐに拒否されます(TCP 接続ならリセット)。プログラムは::で待ち受ける必要があります。 - ポートを閉じると、それ以降の新しい接続は拒否され、既存の接続は続きます。
- スリープ中も、開いたものは開いたままです。マシンが既存の接続のキープアライブと ping にサンドボックスの代わりに応答するため、それらでサンドボックスが稼働し続けることはなく、接続が失われることもありません。そうした接続に届くデータ、開いているポートへの新しい接続、待ち受けている UDP ポートへのデータグラムで復帰します。一時停止中のサンドボックスは、どのパケットでも再開します。
glac sandboxes ports open web 5432 --from 2001:db8:1::/48
glac sandboxes ports open web 53/udp --from ::/0
glac sandboxes ports ls web
glac sandboxes ports close web 5432{"from": […]} を付けた PUT /v1/sandboxes/{id}/tcp/{port}(または udp)でポートを開くか、別の送信元を設定し、DELETE で閉じ、GET /v1/sandboxes/{id}/tcp で開いているポートを、それぞれの接続先([address]:port)とともに一覧表示します。サンドボックスの作成と更新の inbound は一覧全体で、glac sandboxes create --inbound 8080=2001:db8::/32 なら最初から設定できます。キー別インスタンスのポートはそのサンドボックスのもので、/v1/apps/{app}/instances/{key}/tcp の下にあります。専用のアドレスを持たないサンドボックスでポートを開こうとすると拒否されます(409 no_ipv6)。
出口
- インターネットへの、サンドボックスやインスタンスのトラフィックは、IPv4 ではマシンから、IPv6 ではサンドボックス専用のアドレスから出ていきます。これは送信トラフィックで、出ていくマシンのリージョンの料金で課金されます。1 台のマシン上のサンドボックス間のトラフィックは課金されません。
- ネットワークルールは、IPv4 でも IPv6 でも、サンドボックスの接続先と送れるリクエストを決めます(ネットワークルール)。ホストを指定したルールでは、どちらの場合もすべての TCP 接続がマシンのエグレスプロキシを通り、プロキシはアカウントを接続の割り当て内に抑えます(制限)。IPv6 では、プロキシはサンドボックス専用のアドレスから接続し、IPv6 が通らない場合は同じホストへの IPv4 も並行して試みます。
- マシン自身のパブリックアドレスには、インターネットからと同じように到達します。API、キューブのアドレス、サンドボックスのポートへのリンクは、名前がどこを指していても、サンドボックスが動いているマシンであっても、サンドボックスに応答し、送信トラフィックの出ていくアドレス(IPv4 ではマシンのもの、IPv6 ではサンドボックス専用のもの)からのアクセスとして扱います。そこへ送るものは、ほかのマシンへ送るのと同じく送信トラフィックです。マシンのそれ以外の部分は応答しません。
- ルールにかかわらず到達できない場所:プライベートアドレス範囲、クラウドのメタデータアドレス、マシン自体のその他の部分。IPv6 ではユニークローカル、リンクローカル、マルチキャストのアドレスも同様です。別のサンドボックスには、ほかのホストと同じく、その専用の IPv6 アドレスの、開かれたポートで到達します。