目的
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 も購入可。
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 Routing や Tiered 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は必要ありません。
例えば、以下のような設定が可能です。
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 プールの中でメキシコの地理情報を持つデータセンターから排出されます。
Dedicated Egress IP ジオロケーション情報
以下のサイトで確認できます。
ログ
Network Session Logs を Logpush することで確認できます。
例えば以下のログだと "EgressRuleName": ""
マッチがなく
ユーザは大阪 PoP "IngressColoName": "KIX"
に接続し
東京 PoP "EgressColoName": "NRT"
から
"EgressIP": "x.x.x.x"
を使って
"OriginIP": "y.y.y.y"
に通信をおこなったことがわかります。
{
"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 プランもご検討ください。