MENU

Soracom

Users

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

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

ミラーリング

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

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

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

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

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

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

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

VPC-ACL

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

VPC-ACL

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

VPC-ACL

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

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

SG

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

SG

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

SG

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

SG

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

SG

ステップ 4: Junction のミラーリング機能を使用して VPG を通過するパケットをコピーして EC2 インスタンスに転送する

次に、Junction のミラーリング機能を設定します。

VPG の作成

SORACOM のユーザーコンソールにログインします。 画面左上部のプルダウンメニューから「VPG」を選択します。

VPG

「VPG を追加」をクリックします。

VPG

VPG の名前を入力し、タイプは「Type-F」を選択します。 「作成」をクリックすると、「状態」が「作成中」となります。しばらく(3 分程度)して、「実行中」となれば作成完了です。

  • 「Type-C/D」でもこれまでどおり「SORACOM Junction のミラーリング機能」をご利用いただけます。
  • グローバルカバレッジで VPG を作成する場合はランデブーポイントを指定できます。詳細は VPG を作成する > 「VPG ランデブーポイント」を参照ください。

グループの作成と SIM の所属グループの変更

SORACOM ユーザーコンソールの左上のプルダウンメニューより「グループ」を選択します。

Group

「追加」をクリックして、グループ名を入力し、グループを作成します。 作成したグループをクリックしグループ画面の「基本設定」から「SORACOM Air 設定」を開きます。

Group

「SORACOM Air 設定」内に、以下のように「VPG (Virtual Private Gateway) 設定」があるので、「ON」とし、先ほど作成した「VPG」を選択します。

Group

「保存」をクリックします。

VPG を指定したグループに含まれる IoT SIM は VPG を利用することになります。

次に、IoT SIM をグループに所属させます。「SIM 管理」メニューから、接続を行う SIM を選択し、「所属グループ変更」をクリックします。

Group

先ほど作成したグループに所属させます。

注意

  • グループの VPG の設定変更をしたら、既に接続中のデバイスについては、設定変更後に一旦接続を切ってから繋ぎ直してください。セッション切断・再接続を行わないと、設定が反映されません。
  • スマートフォンの場合、Air Plain (機内)モードの On/Off を行うと、簡単にセッションを再作成できます。

ミラーリング機能を設定

作成した VPG の設定画面を開きます。 「Junction 設定」タブを開きます。

Mirroring

「SORACOM Junction: ミラーリング設定」の「ミラーリング先を追加ボタンをクリックし、「ミラーリング先を追加」を表示させます。

AWS マネジメントコンソールで Canal を使用して VPC ピアリングを行う で作成した EC2 インスタンスのプライベート IP アドレスをコピーします。

Mirroring

「ミラーリング先を追加」中の「ミラーリング先 IP アドレス」にコピーした EC2 インスタンスのプライベート IP アドレスを貼り付けます。また、「ステータス」トグルスイッチを「ON」にし、「保存」ボタンを押します。作成した VPG の設定画面へ戻るので、先程入力した項目がミラーリングのリストに追加されていることを確認してください。

Mirroring

Mirroring

以上で Junction のミラーリング機能の設定は完了です。

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

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

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

GlobalIP

次に SORACOM Canal を使用して閉域網で接続するのステップ 1、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 などでもインストールできます。

次に以下の手順で Canal を使用して 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

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 -

「Junction のミラーリング機能を使用して、VPG を通過するパケットを VPC 内の EC2 インスタンスへ転送する」は以上となります。