VPC トラフィックミラーリングは、フィルター条件に一致する ENI のインバウンドおよびアウトバウンドトラフィックをコピーし、リアルタイム検査のためにセキュリティ分析デバイスに転送する機能です。インスタンスのパフォーマンスに影響を与えることはありません。
一般的なユースケース
セキュリティ:侵入検知
特定のフローのすべてのパケットをキャプチャし、独自またはサードパーティのセキュリティソフトウェアで検査することで、脆弱性や侵入をリアルタイムで検出します。
監査:金融または政府のコンプライアンス
インスタンスのトラフィックを統一された監査プラットフォームにミラーリングし、金融または規制上のコンプライアンス要件を満たします。
O&M:ネットワークのトラブルシューティング
Elastic Compute Service (ECS) インスタンスにログインすることなく、TCP 再送やその他のトラフィックパターンを分析して、ネットワークの問題をトラブルシューティングします。
仕組み
ワークフロー
ミラーセッションは転送パスを定義します。セッションが開始されると、以下の手順が実行されます。
フィルター条件に一致するミラーソースからパケットをコピーします。
ミラーソースとしてサポートされているのは ENI のみです。
トラフィックミラーフィルターには、インバウンドルールとアウトバウンドルールが含まれます。各ルールは 5 タプル (送信元 CIDR ブロック、送信元ポート、宛先 CIDR ブロック、宛先ポート、プロトコル) によってトラフィックを照合し、優先度によって評価されます。
コピーされたパケットを 標準の VXLAN パケット形式 でカプセル化します。
VXLAN ネットワーク識別子 (VNI):セッション間でミラーリングされたデータを区別します。指定しない場合はランダムに割り当てられます。
送信元 IP:ミラーソースのプライマリ IP。
送信元ポート:パケットの 5 タプルのハッシュから派生します。
宛先 IP:ミラーターゲットのプライマリ IP。
宛先ポート:デフォルトでポート 4789 が使用され、変更はできません。
ミラーリングされたパケットをミラーターゲットに転送します。ソースとターゲットが異なる VPC にある場合は、VPC ピアリング接続を設定します。
サポートされているミラーターゲット:ENI、内部向け Classic Load Balancer (CLB)、および Gateway Load Balancer (GWLB) エンドポイント。
GWLB エンドポイントへのトラフィック転送をサポートしているリージョンは、中国 (杭州)、中国 (上海)、中国 (青島)、中国 (北京)、中国 (フフホト)、中国 (深セン)、シンガポール、米国 (シリコンバレー)、および 米国 (バージニア) です。
コピーされたパケットは、ソース側のセキュリティグループとネットワーク ACL をバイパスします。ただし、ミラーターゲット側のセキュリティグループとネットワーク ACL は、ポート 4789 でのインバウンド UDP トラフィックを許可する必要があります。
ミラーターゲットが内部向け CLB の場合、ポート 4789 で UDP リスナーを設定します。GWLB はすべてのポートをリッスンします。
マッチングルール
特定のソースからの各パケットは、複数のセッションに一致する場合でも、一度しかミラーリングできません。
インバウンドトラフィックを例に説明します。
ソースが 1 つのセッションに属している場合、インバウンドルールは 5 タプルに対して優先度順に評価されます。最初に一致したルールのアクションが決定されます。一致しないトラフィックはミラーリングされません。
ソースが複数のセッションに属している場合、フィルターはセッションの優先度順に評価されます。あるセッションで一致するルールがない場合、次のセッションがチェックされます。すべてのセッションで一致しないトラフィックはミラーリングされません。
送信先でのパケットサイズ
フラグメント化されたサービスパケット
サービスパケットがリンクの MTU を超える場合、送信前にフラグメント化されます。
例:2,000 バイトのパケットでリンクの MTU が 1,500 バイトの場合、1,500 バイトと 500 バイトにフラグメント化されます。
Alibaba Cloud のデフォルトのリンク MTU は 1,500 バイトです。VPN ゲートウェイなどの一部のコンポーネントは、より低い MTU を持ちます。
ソース ECS インスタンスで TSO または UFO が有効になっている場合、フラグメント化されたパケットのミラーリング動作が異なる場合があります。すべてのフラグメントを受信するには、TSO/UFO を無効にする (パフォーマンスに影響する可能性があります) か、第 7 世代以降の インスタンスファミリー を使用してください。
世代番号は、ecs.g7se.xlarge のようにインスタンスファミリー名に表示されます。
ミラーリングされたパケットの切り捨て:ミラーリングされたパケット (元のパケット + 50 バイトの VXLAN ヘッダー) が転送パスの MTU を超える場合、システムはそれを切り捨てます。
中国 (杭州)、中国 (上海)、中国 (青島)、中国 (北京)、中国 (フフホト)、中国 (深セン)、シンガポール、米国 (シリコンバレー)、および 米国 (バージニア) リージョンでは、ミラーリングされたパケットサイズは ミラーターゲットの MTU によって制限されます。第 8 世代のプライマリインスタンスファミリーはジャンボフレーム (MTU 8500) をサポートしています。切り捨てを防ぐために、ミラーターゲットでジャンボフレームを有効にしてください。
他のリージョンでは、ミラーリングされたパケットサイズは デフォルトのリンク MTU (1,500 バイト) によって制限されます。
特定の長さまでのパケットヘッダーのみをキャプチャするには、イメージメッセージの長さ を設定します。システムは、この長さを超えるサービスパケットを転送前に切り捨てます。
制限事項
ソースとターゲット:
同じ ENI をミラーソースとミラーターゲットの両方として使用することはできません。マネージド ENI は、ソースまたはターゲットとしてサポートされていません。
トラフィックミラーリングのミラーターゲットは、VPC 内でルーティング可能である必要があります。ミラーリングのミラーターゲットへの特定のルートがなく、ソースインスタンスの vSwitch に NAT ゲートウェイを指すデフォルトルートがある場合、ミラーリングされたトラフィックはデフォルトルートに従って NAT ゲートウェイに転送されます。これにより、NAT ゲートウェイが予期しないトラフィックを受信し、サービスが中断される可能性があります。
リージョンとアカウント:ソースとターゲットは同じアカウントとリージョンにある必要がありますが、異なる VPC に配置することは可能です。クロスリージョンおよびクロスアカウントのミラーリングはサポートされていません。
IP バージョン:IPv4 のみがサポートされています。
帯域幅:ミラーリングはインスタンスの帯域幅を消費します。帯域幅が完全に使用されると、サービストラフィックを優先するためにミラーリングされたパケットはドロップされます。
トラフィックタイプ:ネットワーク ACL またはセキュリティグループによってドロップされたトラフィック、フローログトラフィック、ARP トラフィック、および DHCP トラフィックはミラーリングできません。
ミラーセッションの作成または削除
システムは、関連付けられたフィルターのルールに基づいて、ソースのトラフィックを評価します。ルールの一致は、優先度、プロトコルタイプ、送信元の CIDR ブロック、宛先 CIDR ブロック、送信元ポート、および 宛先ポート によって決定されます。一致した場合、システムは指定されたアクションを実行してトラフィックをミラーリングするかどうかを決定します。ミラーリングされたデータは、その後ミラーターゲットに転送されます。
優先度 はルールの優先度を決定します。値の範囲は 1 から 16777216 です。値が小さいほど優先度が高くなります。同じトラフィックミラーフィルター内のインバウンドルールまたはアウトバウンドルールの優先度は一意である必要があります。
[TCP(6)] または [UDP(17)] の場合、ポート範囲 (0–65535) を
開始ポート/終了ポートの形式で設定します。他のプロトコルタイプはポート範囲をサポートしていません。デフォルト:-1/-1 (ポート制限なし)。
コンソール
初めてトラフィックミラーリングを使用する場合は、サービスを有効化する必要があります。トラフィックミラーリング有効化ページにログインし、指示に従ってください。
トラフィックミラーの作成
フィルター条件の作成
適切なフィルターが既にある場合は、この手順をスキップして直接セッションを作成できます。
VPC コンソール - フィルターページに移動します。上部ナビゲーションバーで、対象のリージョンを選択します。フィルターの作成 をクリックします。
インバウンドおよびアウトバウンドルールを設定して、ミラーリングするトラフィックを指定します。ルールがないフィルターは、どのトラフィックもミラーリングしません。
作成時に最大 10 個のインバウンドルールと 10 個のアウトバウンドルールを設定できます。作成後にルールを追加、編集、または削除できます。
フィルターを削除するには、まずすべての会話との関連付けを解除し、削除 を 操作 列でクリックします。
ミラーセッションの作成
VPC コンソール - トラフィックミラーセッション ページに移動します。上部のナビゲーションバーで、対象のリージョンを選択します。ミラーリングされたセッションの作成 をクリックします。
ミラーセッションを設定します:
VNI:セッション間でミラーリングされたデータを区別するための仮想ネットワーク ID。有効な値:0 から 16777215。指定しない場合、システムがランダムに割り当てます。
優先度: 1 つのソースが複数のセッションに属する場合、トラフィックはセッションの 優先度 に基づいてミラーリングされます。有効な値は 1 ~ 32766 で、値が小さいほど優先度が高くなります。優先度は、同一リージョンおよび同一アカウント内のセッション間で一意である必要があります。
特定の長さまでのパケットヘッダーのみをキャプチャするには、イメージメッセージの長さ を設定します。システムは、この長さを超えるサービスパケットを転送前に切り捨てます。
関連するフィルター、ソース、およびターゲットを設定します。
ミラーセッションの開始
会話を作成した後、有効化します。または、会話リストに戻り、[操作] 列の起動をクリックします。
ソース トラフィックがフィルターに一致する場合、送信先で
tcpdump -i 「ミラーターゲットに対応する NIC の名前」 udp port 4789 -nneを実行して、ミラーリングされたパケットを表示します。
トラフィックミラーの変更
「セッション詳細」ページで、送信先とフィルターを変更したり、ソースを追加または削除したり、VNI、優先度、ミラーリングされたパケット長を変更したりできます。
ミラーセッションの停止または削除
対象の会話の操作列で、停止または削除をクリックします。
API
トラフィックミラーの作成
初めて使用する前に、OpenTrafficMirrorService 操作を呼び出してサービスを有効化してください。
CreateTrafficMirrorFilter 操作を呼び出して、トラフィックミラーフィルターを作成します。
CreateTrafficMirrorFilterRules 操作を呼び出して、トラフィックミラーフィルターのインバウンドまたはアウトバウンドルールを作成します。
CreateTrafficMirrorSession 操作を呼び出して、ミラーセッションを作成します。
UpdateTrafficMirrorSessionAttribute 操作を呼び出し、
Enabledパラメーターをtrueに設定してミラーセッションを開始します。
トラフィックミラーの変更
AddSourcesToTrafficMirrorSession または RemoveSourcesFromTrafficMirrorSession 操作を呼び出して、セッションからソースを追加または削除します。
UpdateTrafficMirrorSessionAttribute 操作を呼び出して、セッションの構成を変更したり、ミラーターゲットやフィルターを変更したりします。
フィルター条件の変更または削除
CreateTrafficMirrorFilterRules 操作を呼び出して、トラフィックミラーフィルターのインバウンドまたはアウトバウンドルールを作成します。
DeleteTrafficMirrorFilterRules 操作を呼び出して、トラフィックミラーフィルターのインバウンドまたはアウトバウンドルールを削除します。
DeleteTrafficMirrorFilter 操作を呼び出して、トラフィックミラーフィルターを削除します。
トラフィックミラーの停止または削除
UpdateTrafficMirrorSessionAttribute 操作を呼び出し、
Enabledパラメーターをfalseに設定してミラーセッションを停止します。DeleteTrafficMirrorSession 操作を呼び出して、ミラーセッションを削除します。
Terraform
この例では、インバウンドおよびアウトバウンドの TCP トラフィックのみをミラーリングします。要件に応じてフィルターのルールを調整してください。
リソース:alicloud_vpc_traffic_mirror_filter、alicloud_vpc_traffic_mirror_session
# トラフィックミラーを作成するリージョンを指定します。
provider "alicloud" {
region = "cn-hangzhou"
}
# ミラーソースの ID を指定します。
variable "traffic_mirror_source_id" {
default = "eni-hp3e******" # 実際の ENI の ID に置き換えてください。
}
# ミラーターゲットの ID を指定します。
variable "traffic_mirror_target_id" {
default = "eni-hp3h******" # 実際の ENI の ID に置き換えてください。
}
# トラフィックミラーフィルターを作成し、ミラーソースに出入りするすべての TCP トラフィックを収集するようにインバウンドおよびアウトバウンドルールを設定します。
resource "alicloud_vpc_traffic_mirror_filter" "example_vpc_traffic_mirror_filter" {
traffic_mirror_filter_name = "example_vpc_traffic_mirror_filter_name"
egress_rules {
priority = 1
protocol = "TCP"
action = "accept"
destination_cidr_block = "0.0.0.0/0"
destination_port_range = "-1/-1"
source_cidr_block = "0.0.0.0/0"
source_port_range = "-1/-1"
}
ingress_rules {
priority = 1
protocol = "TCP"
action = "accept"
destination_cidr_block = "0.0.0.0/0"
destination_port_range = "-1/-1"
source_cidr_block = "0.0.0.0/0"
source_port_range = "-1/-1"
}
}
# ミラーセッションを作成します。
resource "alicloud_vpc_traffic_mirror_session" "example_vpc_traffic_mirror_session" {
traffic_mirror_session_name = "example_vpc_traffic_mirror_session"
priority = 1 # ミラーセッションの優先度を指定します。ミラーソースが複数のミラーセッションに追加された場合、トラフィックはミラーセッションの優先度に基づいてミラーターゲットにミラーリングされます。有効な値:1 から 32766。値が小さいほど優先度が高くなります。同じリージョンで同じアカウントで作成されたミラーセッションの優先度は一意である必要があります。
virtual_network_id = 10 # ミラーセッションの VNI を指定します。これは、異なるセッションからのミラーリングされたデータを区別するために使用されます。有効な値:0 から 16777215。VNI を指定しない場合、システムはランダムに 1 つを割り当てます。
traffic_mirror_filter_id = alicloud_vpc_traffic_mirror_filter.example_vpc_traffic_mirror_filter.id # 関連するトラフィックミラーフィルターを指定します。
traffic_mirror_source_ids = [var.traffic_mirror_source_id] # ミラーソースを指定します。
traffic_mirror_target_type = "NetworkInterface" # ミラーターゲットのタイプを指定します。
traffic_mirror_target_id = var.traffic_mirror_target_id # ミラーターゲットを指定します。
#packet_length = 1500 # 特定の長さのミラーリングされたパケットのヘッダーのみを表示する必要がある場合は、ミラーリングされたパケット長を設定できます。システムは、ミラーソースからのサービスパケットのうち、この値を超える部分を切り捨ててから、ミラーターゲットに転送します。
}例
インバウンド TCP トラフィックを ENI にミラーリングする
インバウンド TCP/UDP トラフィックを異なるミラーターゲットにミラーリングする
VPC の外部からのトラフィックを別の VPC にミラーリングする
外部ソースから VPC に出入りするトラフィックを監視するためのフィルターを設定します。
ルールの優先度を使用して VPC 内トラフィックを除外し、他のすべてのインバウンドトラフィックをミラーリングします。
ソースとターゲットが異なる VPC にある場合は、VPC ピアリング接続で接続し、両方の VPC でルートを設定します。
詳細情報
課金
課金項目
トラフィックミラーリング料金 = インスタンス料金 + データ処理料金
インスタンス料金 = アクティブなセッションを持つミラーソースの数 (個) × セッションのアクティブ期間 (時間) × インスタンス料金の単価 (USD/個/時間)
データ処理料金 = ミラーリングされた総データ量 (GB) × 単価 (USD/GB)
課金項目 | 単価 |
インスタンス料金 | 0.014 (USD/個/時間) |
データ処理料金 | 0.007 (USD/GB) |
課金ルール
データ処理料金は 2027 年 3 月 31 日まで免除されます。
アクティブなセッションを持つソースごとに時間単位で課金されます。1 時間未満の使用量は切り上げられます。
複数のセッションが 1 つのソースを共有する場合、インスタンス料金は一度だけ課金されます。課金時間は、すべてのセッションにわたる累積アクティブ時間です。例:セッション 1 で 5 時間 + セッション 2 で 4 時間 = 9 課金時間。
課金例
VPC 内の 5 つの ENI で、30 日間、1 日 24 時間ミラーセッションが有効になっています。ミラーリングされた総データ量:20 GB。
インスタンス料金 = 5 × 30 × 24 × 0.014 = 50.4 USD
データ処理料金 = 20 × 0.007 = 0.14 USD
トラフィックミラーリングの合計料金 = 50.4 + 0.14 = 50.54 USD
支払い遅延とチャージ
支払い遅延と更新
サポートされているリージョン
エリア | リージョン |
アジア太平洋 - 中国 | 中国 (杭州)、中国 (上海)、中国 (南京 - ローカルリージョン、閉鎖中)、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (フフホト)、中国 (ウランチャブ)、中国 (深圳)、中国 (河源)、中国 (広州)、中国 (成都)、中国 (香港)、中国 (福州 - ローカルリージョン、閉鎖中) |
アジア太平洋 - その他 | 日本 (東京)、韓国 (ソウル)、シンガポール、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、タイ (バンコク)、フィリピン (マニラ) |
ヨーロッパ & アメリカ | ドイツ (フランクフルト)、イギリス (ロンドン)、米国 (シリコンバレー)、および 米国 (バージニア) |
中東 | SAU (リヤド - パートナーリージョン) |
クォータ
クォータ名 | 説明 | デフォルトの制限 | 調整可能 |
trafficmirror_quota_source_num_per_session | ミラーセッションに追加できるミラーソースの最大数。 | 10 | |
vpc_quota_traffic_mirror_source_num_per_large_ecs_target | ミラーターゲットが以下のいずれかの ECS インスタンスタイプにアタッチされた ENI である場合の、ミラーソースの最大数。 | 200 | |
vpc_quota_traffic_mirror_source_num_per_small_ecs_target | ミラーターゲットが、以下以外のタイプの ECS インスタンスにアタッチされた ENI である場合の、ミラーソースの最大数。 | 20 | |
vpc_quota_traffic_mirror_rules_num_per_filter | 単一のフィルターに対して作成できるフィルターのルールの最大数。 | 20 | |
なし | 単一のアカウントで単一のリージョンに作成できるミラーセッションの最大数。 | 20,000 | いいえ |
ミラーソースあたりのミラーセッションの最大数。 | 3 | ||
ミラーターゲットがプライベート Classic Load Balancer (CLB) である場合に、単一のミラーターゲットでサポートされるミラーソースの最大数。 | 500 | ||
ミラーターゲットが Gateway Load Balancer エンドポイント (GWLBe) である場合の、ミラーソースの最大数。 | 500 | ||
単一のアカウントで単一のリージョンに作成できるフィルターの最大数。 | 100 | ||
フィルターあたりのミラーセッションの最大数。 | 2,000 |