Junction のミラーリング機能を利用し、VPG を通過するパケットのコピーを Amazon VPC 内の EC2 インスタンスへ転送します。
ステップ 1: Canal を使用して Amazon VPC ピアリング接続を行う
Junction のミラーリング機能は、コピーしたパケットの転送に Canal、Direct または Door によって接続されたネットワークを必要とします。ここでは Canal を使用してピアリングした Amazon VPC 内の EC2 インスタンスに、ミラーリング機能でコピーしたパケットを転送します。
まず、SORACOM Canal を使用して閉域網で接続する (Amazon VPC ピアリング接続) に従って、Canal で Amazon VPC ピアリング接続を行い、作成した EC2 インスタンスへの接続ができることを確認してください。
上記の説明で作成した Amazon VPC のアドレスレンジは 172.20.0.0/16
ですが、ここでは 172.10.0.0/16
になることに注意してくだい。また、作成した EC2 インスタンスの名前は「Junction-Mirroring-Test」であるとします。
設定が終ったら以下項目が正常に設定されていることを改めて確認してください。
- ピアリング接続が受諾されており、Amazon VPC のルートテーブルに
100.64.0.0/10
に対するルールが存在する - VPG にグループが設定されており、IoT SIM がグループに所属している
また、ここで作成した EC2 インスタンスのプライベート IP アドレス (下図では 172.16.1.92
) を、ミラーリング機能を設定する で使用します。メモしてください。
ステップ 2: Amazon VPC のネットワーク ACL が GRE での通信を許可しているか確認する
AWS マネジメントコンソールのトップバーより「サービス」を選択し、「VPC」をクリックして Amazon VPC の管理画面へ移動します。次に SORACOM Canal を使用して閉域網で接続する (Amazon VPC ピアリング接続) でピアリングした Amazon VPC を選択し、詳細を表示します。詳細中の「ネットワーク ACL」のリンクをクリックします。
ネットワーク ACL はデフォルトでは以下のようにすべてのトラフィックをインバウンドで許可する設定となっています。
デフォルトの設定と異なる場合で GRE のトラフィックが許可されて いない 場合、「編集」ボタンをクリックし「別のルールの追加」ボタンをクリックして以下のように 100.64.0.0/10
からの GRE トラフィックを許可するルールを追加し、「保存」ボタンをクリックしてください。
ステップ 3: EC2 インスタンスのセキュリティグループに GRE での通信を許可するルールを追加する
AWS マネジメントコンソールのトップバーより「サービス」を選択し、「EC2」をクリックして EC2 ダッシュボードへ移動します。画面左のメニューの「セキュリティグループ」をクリックし、セキュリティグループの管理ページへ移動します。「セキュリティグループの作成」ボタンをクリックして新しいセキュリティグループを作成します。
「インバウンド」タブで以下のように Amazon VPC ピアリング接続した Amazon VPC の ID を指定し、「カスタムプロトコル」をタイプとして選択し 100.64.0.0/10
からの GRE (プロトコル番号 47
) トラフィックを許可するセキュリティグループを、名前を Junction-Mirroring として作成します。ステップ 1: Canal を使用して Amazon VPC ピアリング接続を行う で SSH を許可する設定を行なって いない 場合には、SSH を許可する設定も追加してください。
セキュリティグループを作成後、画面左メニューの「インスタンス」をクリックし、EC2 インスタンスの管理ページを表示します。ステップ 1: Canal を使用して Amazon VPC ピアリング接続を行う で作成した EC2 インスタンスを選択し、「アクション」ドロップダウンメニューより「ネットワーキング」、「セキュリティグループの変更」をクリックします。
「セキュリティグループの変更」で作成したセキュリティグループのチェックボックスをクリックし、「セキュリティグループの割り当て」ボタンをクリックします。
セキュリティグループを変更したインスタンスの詳細の「セキュリティグループ」に Junction-Mirroring セキュリティグループが追加されているのを確認し、「インバウンドルールの表示」をクリックしてすべてののポートで 100.64.0.0/10
からのプロトコル番号 47
、すなわち GRE トラフィックが許可されていることを確認します。また、SSH も許可されていることを確認します。
ステップ 4: Junction のミラーリング機能を設定する
次に、Junction のミラーリング機能を設定します。ミラーリング機能を設定すると、VPG を通過するパケットがコピーされて、EC2 インスタンスに転送されます。
VPG を作成する
ミラーリング機能を利用するには、VPG Type-F を作成します。VPG を作成する手順について詳しくは、VPG を作成する を参照してください。
なお、「VPG を追加」画面では、以下の項目の設定に注意してください。それ以外の項目については、このページの説明には影響がありません。適宜設定を行ってください。
項目 | 説明 |
---|---|
VPG の名前 (任意) を入力します。例: Mirroring-Test01 | |
「Type-F」を選択します。 |
既存の VPG Type-C/D でも、SORACOM Junction のミラーリング機能を利用できます。
IoT SIM が利用する VPG を切り替える
IoT SIM が、VPG を作成する で作成した VPG を利用するように設定し、セッションを再確立します。詳しくは、IoT SIM が利用する Virtual Private Gateway (VPG) を切り替える を参照してください。
ミラーリング機能を設定する
ミラーリング先を追加します。
VPG を作成する で作成した VPG の VPG 設定画面で、 をクリックします。
VPG 設定画面を表示する操作について詳しくは、VPG の設定を変更する を参照してください。
の をクリックします。
ミラーリング先を追加画面が表示されます。
各項目を設定します。
項目 説明 ステップ 1: Canal を使用して Amazon VPC ピアリング接続を行う で作成した EC2 インスタンスのプライベート IP アドレスを入力します。例: 172.16.1.92
任意の文字列を入力できます。 スイッチ ON にします。ミラーリング先を無効にする場合は、OFF にします。 をクリックします
ミラーリング先が追加されます。
SORACOM API の場合
- SORACOM API を利用するには、API キーと API トークンが必要です。詳しくは、API キーと API トークンの取り扱いについて を参照してください。
{vpg_id}
は、VirtualPrivateGateway:listVirtualPrivateGateways 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 アドレスをコピーします。
次に 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 の中身を確認できます。
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 -