Soracom

Users

ドキュメント

ミラーリング機能を使用して VPG を通過するパケットのコピーを転送する

当ガイドでは、SORACOM Junction (以下、Junction) のミラーリング機能を利用し、VPG を通過するパケットのコピーを Amazon VPC 内の EC2 インスタンスへ転送します。

ミラーリング ミラーリング

ステップ 1: Canal を使用して Amazon VPC ピアリング接続を行う

Junction のミラーリング機能はコピーしたパケットの転送に SORACOM Canal、SORACOM Direct または SORACOM Door によって接続されたネットワークを必要とします。この Getting Started ガイドでは SORACOM Canal を使用してピアリングした Amazon VPC 内の EC2 インスタンスへミラーリング機能によりコピーしたパケットを転送します。

まず、SORACOM Canal を使用して閉域網で接続する (Amazon VPC ピアリング接続) に従って SORACOM Canal により Amazon VPC ピアリング接続を行ない、作成した EC2 インスタンスへの接続ができることを確認してください。ガイド中のステップ 1 からステップ 4 までを確認する必要があることにご注意ください。

上記ガイドで作成した Amazon VPC のアドレスレンジは 10.0.0.0/16 ですが、本ガイドでは 172.10.0.0/16 となることに注意してくだい。また、作成した EC2 インスタンスの名前は「Junction-Mirroring-Test」であるとします。

設定が終ったら以下項目が正常に設定されていることを改めて確認してください。

また、ここで作成した EC2 インスタンスのプライベート IP アドレス (下図では 172.16.1.92) を、ミラーリング機能を設定する で使用します。メモしてください。

Mirroring Mirroring

ステップ 2: Amazon VPC のネットワーク ACL が GRE での通信を許可しているか確認する

AWS マネジメントコンソールのトップバーより「サービス」を選択し、「VPC」をクリックして Amazon VPC の管理画面へ移動します。次に SORACOM Canal を使用して閉域網で接続する (Amazon VPC ピアリング接続) でピアリングした Amazon VPC を選択し、詳細を表示します。詳細中の「ネットワーク ACL」のリンクをクリックします。

VPC-ACL VPC-ACL

ネットワーク ACL はデフォルトでは以下のようにすべてのトラフィックをインバウンドで許可する設定となっています。

VPC-ACL VPC-ACL

デフォルトの設定と異なる場合で GRE のトラフィックが許可されて いない 場合、「編集」ボタンをクリックし「別のルールの追加」ボタンをクリックして以下のように 100.64.0.0/10 からの GRE トラフィックを許可するルールを追加し、「保存」ボタンをクリックしてください。

VPC-ACL VPC-ACL

ステップ 3: EC2 インスタンスのセキュリティグループに GRE での通信を許可するルールを追加する

AWS マネジメントコンソールのトップバーより「サービス」を選択し、「EC2」をクリックして EC2 ダッシュボードへ移動します。画面左のメニューの「セキュリティグループ」をクリックし、セキュリティグループの管理ページへ移動します。「セキュリティグループの作成」ボタンをクリックして新しいセキュリティグループを作成します。

SG SG

「インバウンド」タブで以下のように Amazon VPC ピアリング接続した Amazon VPC の ID を指定し、「カスタムプロトコル」をタイプとして選択し 100.64.0.0/10 からの GRE (プロトコル番号 47) トラフィックを許可するセキュリティグループを、名前を Junction-Mirroring として作成します。ステップ 1: Canal を使用して Amazon VPC ピアリング接続を行う で SSH を許可する設定を行なって いない 場合には、SSH を許可する設定も追加してください。

SG SG

セキュリティグループを作成後、画面左メニューの「インスタンス」をクリックし、EC2 インスタンスの管理ページを表示します。ステップ 1: Canal を使用して Amazon VPC ピアリング接続を行う で作成した EC2 インスタンスを選択し、「アクション」ドロップダウンメニューより「ネットワーキング」、「セキュリティグループの変更」をクリックします。

SG SG

「セキュリティグループの変更」で作成したセキュリティグループのチェックボックスをクリックし、「セキュリティグループの割り当て」ボタンをクリックします。

SG SG

セキュリティグループを変更したインスタンスの詳細の「セキュリティグループ」に Junction-Mirroring セキュリティグループが追加されているのを確認し、「インバウンドルールの表示」をクリックしてすべてののポートで 100.64.0.0/10 からのプロトコル番号 47 、すなわち GRE トラフィックが許可されていることを確認します。また、SSH も許可されていることを確認します。

SG SG

ステップ 4: Junction のミラーリング機能を設定する

次に、Junction のミラーリング機能を設定します。ミラーリング機能を設定すると、VPG を通過するパケットがコピーされて、EC2 インスタンスに転送されます。

VPG を作成する

VPG Type-F (閉域網接続可能) を作成 します。

既存の VPG Type-C/D でも、SORACOM Junction のミラーリング機能を利用できます。

IoT SIM が利用する VPG を切り替える

IoT SIM が、VPG を作成する で作成した VPG を利用するように設定し、セッションを再確立します。詳しくは、IoT SIM が利用する VPG を切り替える を参照してください。

ミラーリング機能を設定する

ミラーリング先を追加します。

  1. VPG を作成する で作成した VPG の VPG 設定画面で、[JUNCTION 設定] をクリックします。

    VPG 設定画面を表示する操作について詳しくは、VPG の設定を変更する を参照してください。

  2. [SORACOM Junction: ミラーリング設定][ミラーリング先を追加] をクリックします。

    mirroring mirroring

    ミラーリング先を追加画面が表示されます。

  3. 各項目を設定します。

    項目説明
    [ミラーリング先 IP アドレス]ステップ 1: Canal を使用して Amazon VPC ピアリング接続を行う で作成した EC2 インスタンスのプライベート IP アドレスを入力します。例: 172.16.1.92
    [概要]任意の文字列を入力できます。
    スイッチON にします。ミラーリング先を無効にする場合は、OFF にします。

    Mirroring Mirroring

  4. [保存] をクリックします

    ミラーリング先が追加されます。

    Mirroring Mirroring

SORACOM API の場合

VirtualPrivateGateway:createMirroringPeer API を使用します。

$ curl -v -X POST https://api.soracom.io/v1/virtual_private_gateways/{vpg_id}/junction/mirroring/peers \
-H "X-Soracom-API-Key: $X_SORACOM_API_KEY" \
-H "X-Soracom-Token: $X_SORACOM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "enabled": true,
  "protocol": "gre",
  "description": "{概要}",
  "ipAddress": "{ミラーリング先IPアドレス}"
}'

ステップ 5: Junction のミラーリング機能を使用してコピーして転送したパケットを EC2 インスタンス上で確認する

ここでは SSH で ステップ 1: Canal を使用して Amazon VPC ピアリング接続を行う で作成した EC2 インスタンスへログインし、実際に Junction のミラーリング機能でコピーされたパケットが転送されているか確認します。

AWS マネジメントコンソールで ステップ 1: Canal を使用して Amazon VPC ピアリング接続を行う で作成した EC2 インスタンスのグローバル IP アドレスをコピーします。

GlobalIP GlobalIP

次に SORACOM Canal を使用して閉域網で接続する (Amazon VPC ピアリング接続)ステップ 1: Amazon VPC および EC2 インスタンスを作成する で行なったように以下コマンドで EC2 インスタンスにログインします。<public-ip> を先程コピーした EC2 インスタンスのグローバル IP アドレスに置き換えてください。

$ ssh -X -i "xxx-dev01.pem" ec2-user@<public-ip>

tcpdump でコピーされた GRE パケットを確認する

以下のように tcpdump を使用してコピーされたパケットが GRE でカプセル化されて転送されているかを確認します。以下の例では Ubuntu を使用していデフォルトで tcpdump がインストールされていますが、お使いの EC2 インスタンスの Linux ディストリビューションで tcpdump がインストールされているか確認し、もしされていない場合にはパッケーマネージャでインストールしてください。

ec2-user@ip-172-16-1-92:~$ sudo tcpdump -vvv -i eth0 proto gre
sudo: unable to resolve host ip-172-16-1-92
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
07:47:37.040340 IP (tos 0x0, ttl 64, id 62738, offset 0, flags [DF], proto GRE (47), length 135)
    100.64.138.132 > 172.16.1.92: GREv0, Flags [none], length 115
	IP (tos 0x0, ttl 64, id 39209, offset 0, flags [DF], proto TCP (6), length 97)
...

無事表示されればすべての手順が完了です。より詳しく GUI でパケットの中身を見たい場合には、次の Wireshark でコピーされた GRE パケットを確認する へ進んでください。

(オプション) Wireshark でコピーされた GRE パケットを確認する

Wireshark は tcpdump のようにパケットをキャプチャし、その中身を分かりすく GUI 上に表示するソフトウェアです。

まず、お使いのコンピュータで Wireshark がインストールされているか確認し、されていない場合には Wireshark をインストールしてください。公式サイト でインストーラが配布されています。また、Linux パッケージマネージャ、macOS では Homebrew などでもインストールできます。

次に以下の手順で ステップ 1: Canal を使用して Amazon VPC ピアリング接続を行う で作成したミラーリング対象の EC2 インスタンスでパケットをキャプチャし、その内容を SSH 経由でローカルのコンピュータへ転送し、それを Wireshark で表示します。

Linux または macOS の場合

名前付きパイプを作成します。

$ mkfifo /tmp/junction_mirroring

Wireshark を名前付きパイプに対してキャプチャを行なうようにし、バックグラウンドで起動します。

$ wireshark -k -i /tmp/junction_mirroring &

EC2 インスタンスへ SSH して tcpdump した結果を作成した名前付きパイプにリダイレクションするようにします。<public-ip> は EC2 インスタンスのグローバル IP アドレスに置き換えてください。

$ ssh -X -i "xxx-dev01.pem" ec2-user@<public-ip> "sudo /usr/sbin/tcpdump -s 0 -U -n -w - -i eth0 proto gre" > /tmp/junction_mirroring

以下のようにパケットがキャプチャできれば完了です。GRE の中身を確認できます。

Wireshark Wireshark

Windows の場合

Plink (PuTTY Link) を使用します。PuTTY をインストールしていない場合には ダウンロードページ) よりインストールしてください。

コマンドプロンプトで以下のコマンドを入力します。<public-ip> は EC2 インスタンスのグローバル IP アドレスに置き換えてください。

> plink -i "xxx-dev01.pem" ec2-user@<public-ip> "sudo /usr/sbin/tcpdump -s 0 -U -n -w - -i eth0 proto gre" | "C:¥Program Files¥Wireshark¥Wireshark.exe" -k -i -