4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Cloudflare Zero Trust の Dedicated Egress IP オプションについて整理

Last updated at Posted at 2023-09-28

目的

Cloudflare Zero Trust の Enterprise オプションである Dedicated Egress IP について挙動を整理します。

出口 IP を固定化したい場合、アーキテクチャ上、Dedicated Egress IP オプションを購入するやり方が最もシンプルでおすすめです。

出口 IP を固定化する他のやり方については、以下の記事を参考にしてください。

Dedicated egress IP

特徴

  • Static = 出口 IP は動的に変わらず、固定
    • 通常は Cloudflare Default IP Pool から動的に割り当てられた出口 IP が使用される
  • Dedicated = 購入したアカウントだけで専有
    • 通常は、他のアカウントと共有の Shared IP が出口 IP として使用される
  • 1 IP は 1 データセンタに対して紐づき、その地理情報が適用される
    • 最小単位で、Cloudflareは2つの異なるデータセンターに対応する2つのDedicated Egress IPをアカウントに提供。追加の Dedicated Egress IP も購入可。

image.png

No Egress Policy Match

Egress ポリシーがない、もしくはマッチしない場合、デフォルトの挙動としては、接続ユーザーに最も近い Dedicated Egress IP を使って出ていく形になります。
ただし、IPv4/IPv6 による接続か、サイトが Cloudflare によってプロキシされているか(Grey/Orange)によって挙動が異なります。

IPv4 Grey Web Sites

宛先が IPv4 かつ Cloudflare によってプロキシされていない場合、以下の挙動になります。

宛先 IP 宛先サイトが Cloudflare によってプロキシされているか 物理的な Egress 場所 ソース IP と地理情報
IPv4 No (Grey) Dedicated Egress IP が紐づけられたデータセンターから出ていく Dedicated Egress IP の情報を使用

IPv4 Orange Web Sites (IPv6 の場合も含む)

一方で、宛先が IPv4 かつ Cloudflare によってプロキシされている場合、以下の挙動になります。

(宛先が IPv6 のケースも同様の挙動となるため、省略します。)

宛先 IP 宛先サイトが Cloudflare によってプロキシされているか 物理的な Egress 場所 ソース IP と地理情報
IPv4 Yes (Orange) ローカルに接続されたデータセンターから出ていく Dedicated Egress IP の情報を使用
IPv6 No (Grey) ローカルに接続されたデータセンターから出ていく Dedicated Egress IP の情報を使用
IPv6 Yes (Orange) ローカルに接続されたデータセンターから出ていく Dedicated Egress IP の情報を使用

また、一旦 Reverse Proxy サービスに入ってしまえば、Smart RoutingTiered Cache 機能により、PoP 同士の横のつながり Cloudflare Backbone Network を経由して、実際の Origin Pull PoP が変わることも考えられます。

Egress ポリシー

Egress ポリシーを使って、条件にマッチした場合に特定の Egress 挙動をさせることが可能です。

ポリシーは上から順番に評価され、最初にマッチしたものが実行されます。

  • Order of enforcement · Cloudflare Zero Trust docs
    Gatewayでは、優先順位は最初の一致の原則に従います - サイトがAllowまたはBlockポリシーに一致すると、評価は停止され、後続のポリシーは決定を上書きできません。したがって、最も具体的なポリシーと例外をリストの一番上に、最も一般的なポリシーを一番下に置くことをお勧めします。

Egress メソッドとしては、以下の2つを選べます。

  • Default Cloudflare egress
    • すべてのZero Trustアカウントで共有されるデフォルトのソースIPレンジを使用します。ユーザーのトラフィックが最も近いCloudflareデータセンターから排出されるため、最もパフォーマンスの高いインターネット体験を保証します。
  • Dedicated Cloudflare egress IPs
    • ドロップダウンメニューで選択されたプライマリIPv4アドレスとIPv6範囲を使用します。オプションで別のデータセンターのセカンダリIPv4アドレスを指定できます。プライマリデータセンターがダウンした場合、ゲートウェイはセカンダリデータセンターからイグジットし、リルート中のトラフィック低下を回避します。IPv6トラフィックはどのCloudflareデータセンターからもイグジットできるため、セカンダリIPv6は必要ありません。

例えば、以下のような設定が可能です。

image.png

IPv4 Grey Web Sites

宛先が IPv4 かつ Cloudflare によってプロキシされていない場合、以下の挙動になります。

宛先 IP 宛先サイトが Cloudflare によってプロキシされているか 物理的な Egress 場所 ソース IP と地理情報
IPv4 No (Grey) Dedicated Egress IP が紐づけられたデータセンターから出ていく Dedicated Egress IP の情報を使用

IPv4 Orange Web Sites (IPv6 の場合も含む)

一方で、宛先が IPv4 かつ Cloudflare によってプロキシされている場合、以下の挙動になります。

(宛先が IPv6 のケースも同様の挙動となるため、省略します。)

宛先 IP 宛先サイトが Cloudflare によってプロキシされているか 物理的な Egress 場所 ソース IP と地理情報
IPv4 Yes (Orange) ローカルに接続されたデータセンターから出ていく Dedicated Egress IP の情報を使用
IPv6 No (Grey) ローカルに接続されたデータセンターから出ていく Dedicated Egress IP の情報を使用
IPv6 Yes (Orange) ローカルに接続されたデータセンターから出ていく Dedicated Egress IP の情報を使用

catch-all シナリオ

一般的なインターネット体験を確実にするには、リストの一番下に catch-all ポリシーを配置する設定が推奨されます。

Dedicated Egress IP を使う必要がない場合には、すべてのZero Trustアカウントで共有されるデフォルトの Egress IPレンジを使用して、ユーザーの接続元ソースIPの地理情報を維持する形で、近いCloudflareデータセンターから排出されるような設定です。

基本的には、ユーザが接続されたデータセンターからそのまま排出されることがほとんどですが、
例えば、ユーザの接続元ソースIPがメキシコで、ユーザがロサンゼルスに接続した場合には、共有 Egress IP プールの中でメキシコの地理情報を持つデータセンターから排出されます。

image.png

Dedicated Egress IP ジオロケーション情報

以下のサイトで確認できます。

image.png

ログ

Network Session Logs を Logpush することで確認できます。

例えば以下のログだと "EgressRuleName": "" マッチがなく
ユーザは大阪 PoP "IngressColoName": "KIX" に接続し
東京 PoP "EgressColoName": "NRT" から
"EgressIP": "x.x.x.x" を使って
"OriginIP": "y.y.y.y" に通信をおこなったことがわかります。

zero_trust_network_sessions.json
{
  "AccountID": "xxx",
  "BytesReceived": 158443,
  "BytesSent": 214346,
  "ClientTCPHandshakeDurationMs": 0,
  "ClientTLSCipher": "",
  "ClientTLSHandshakeDurationMs": 0,
  "ClientTLSVersion": "none",
  "ConnectionCloseReason": "UNKNOWN",
  "ConnectionReuse": false,
  "DestinationTunnelID": "00000000-0000-0000-0000-000000000000",
  "DetectedProtocol": "",
  "DeviceID": "76e2f2a9-5da5-11ee-a515-deeb8ec3d15a",
  "DeviceName": "my-osaka-device",
  "EgressColoName": "NRT",
  "EgressIP": "x.x.x.x",
  "EgressPort": 48963,
  "EgressRuleID": "00000000-0000-0000-0000-000000000000",
  "EgressRuleName": "",
  "Email": "non_identity@xxx.cloudflareaccess.com",
  "IngressColoName": "KIX",
  "Offramp": "INTERNET",
  "OriginIP": "y.y.y.y",
  "OriginPort": 7844,
  "OriginTLSCertificateIssuer": "",
  "OriginTLSCertificateValidationResult": "NONE",
  "OriginTLSCipher": "",
  "OriginTLSHandshakeDurationMs": 0,
  "OriginTLSVersion": "none",
  "Protocol": "UDP",
  "RuleEvaluationDurationMs": 0,
  "SessionEndTime": 1695869611744000000,
  "SessionID": "1b7b315a7500000a7646525400000001",
  "SessionStartTime": 1695867748982000000,
  "SourceIP": "100.96.0.29",
  "SourceInternalIP": "",
  "SourcePort": 55395,
  "UserID": "b7761faf-27e6-4d08-a35a-802db584b739",
  "VirtualNetworkID": "604aa865-1642-405c-a745-3d448f69b8f1"
}

まとめ

Dedicated Egress IP オプションを使えば、Cloudflare Zero Trust 全体としてパフォーマンスを最適化しつつ、固定 IP のニーズをシンプルなアーキテクチャで満たすことができることを確認できました。

アーキテクチャを複雑にしたくない場合は、ぜひ Enterprise プランもご検討ください。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?