Soracom

Users

ドキュメント

クラウドからデバイスへアクセスする (SORACOM Gate C2D)

Canal と Gate を組み合わせ、Amazon Web Services (AWS) 上に構築したお客様の仮想プライベートクラウド環境 Amazon VPC と、IoT SIM を利用するデバイスが双方向で通信できる環境を構築できます。

VPG Type-E では、Gate C2D は利用できません。

システム概要 システム概要

操作を始める前に準備が必要です (クリックして確認してください)

(1) SORACOM Canal の環境を構築する

Amazon VPC と EC2 インスタンス (以下、Gate Peer と呼びます) を構築し、IoT SIM を利用するデバイスから Gate Peer にプライベート IP アドレスで接続できることを確認してください。詳しくは、SORACOM Canal を使用して閉域網で接続する (Amazon VPC ピアリング接続) を参照してください。

ここではお客様の Amazon VPC 内に EC2 インスタンスを作成し、そのインスタンスを Gate Peer として構成します。なお、EC2 インスタンス以外のサーバーも、Gate Peer として利用できます。たとえば、Canal の代わりに SORACOM DoorSORACOM Direct を使用すると、オンプレミスのサーバーやネットワーク機器を Gate Peer として利用できます。

準備完了

ステップ 1: Gate Peer を VPG に登録する

Gate Peer を VPG に登録します。

  1. Gate を使用する VPG の VPG 設定画面で [デバイス LAN 設定] をクリックします。

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

  2. [お客様の Gate Peer 一覧][+ Gate Peer を追加] をクリックします。

    VPG登録ボタン VPG登録ボタン

    「Gate Peer を追加」画面が表示されます。

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

    項目説明
    [トンネル接続用 IP アドレス]VPG からお客様のネットワークにアクセスするときの、トンネル (仮想 L2 接続) の終端の IP アドレスを指定します。具体的には、Gate Peer (EC2 インスタンス) の、お客様の VPC のサブネットのプライベート IP アドレスを指定します。
    [デバイスサブネット内 IP アドレス]デバイスが Gate Peer (EC2 インスタンス) にデータを送信するときの IP アドレス (デバイスサブネット内 IP アドレス) を固定できます。空欄にすると、VPG 設定画面の [デバイスサブネット IP アドレスレンジ] 内の IP アドレスが自動的に割り当てられます。

    トンネル接続用 IP アドレスと、デバイスサブネット内 IP アドレスの役割については、トンネリング技術とオーバレイネットワークの概要 を参照してください。

    VPG登録ダイアログ VPG登録ダイアログ

SORACOM CLI の場合

VirtualPrivateGateway:registerGatePeer API を使って Gate Peer のプライベート IP アドレスを登録します。

$ soracom vpg register-gate-peer --outer-ip-address {gate_peer_private_ip} --vpg-id {vpg_id}
{
  "innerIpAddress": "{gate_peer_innerIpAddress}",
  "netmask": null,
  "outerIpAddress": "{gate_peer_outerIpAddress}",
  "ownedByCustomer": true
}

API のレスポンスとして Gate Peer の設定情報が返ってきます。outerIpAddress が Amazon VPC 上で Gate Peer に割り当てられた IP アドレス、innerIpAddress は VXLAN で使われる IP アドレスです。

この設定を行った後、ステップ 2: [AWS の設定] Gate Peer に VXLAN の設定を投入する で説明する VXLAN の設定を投入することで、Gate Peer を経由してデバイスへの通信ができるようになります。

ステップ 2: [AWS の設定] Gate Peer に VXLAN の設定を投入する

Gate Peer の登録が完了したら、続いて VXLAN の設定を行います。

AWS マネジメントコンソールでの設定

まず、AWS マネジメントコンソールにて、以下のポート/プロトコルで通信ができるよう Gate Peer の EC2 セキュリティグループの設定を行います。

  • 22/tcp (SSH): 設定を行う PC から SSH 接続できるように設定
  • 4789/udp (VXLAN): SORACOM Canal を使用して閉域網で接続する (Amazon VPC ピアリング接続) で設定した Amazon VPC ピアリング接続の「説明」タブに記載されている「リクエスタ VPC CIDR」(下図参照) を指定して、VPG からの通信を許可するように設定
  • ICMP (ping): 0.0.0.0/0 からの ping に応答するように設定
  • 同一 VPC 内からデバイスへの通信に使用するプロトコル: たとえば、デバイスへ http アクセスしたいなら 80/tcp を通す、すべての通信を許可するのであればアクセス元としてお客様の Amazon VPC CIDR を指定しすべての通信を許可するよう設定

VPGのCIDR確認画面 VPGのCIDR確認画面

次に、AWS マネジメントコンソールで Gate Peer の送信元/送信先チェックを外します。この設定は、Gate Peer 以外のサーバから Gate Peer を経由して通信するために必要な設定です。具体的な設定方法は Amazon VPC ユーザーガイド「送信元/送信先チェックを無効にする」 を参照してください。

Gate Peer の情報を確認する

  1. Gate を使用する VPG の VPG 設定画面で [デバイス LAN 設定] をクリックします。

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

  2. [VPG の Gate Peer 一覧][トンネル接続用 IP アドレス] の IP アドレスをメモします。

    VPGのIP確認画面 VPGのIP確認画面

SORACOM CLI の場合

soracom vpg list-gate-peers (VirtualPrivateGateway:listGatePeers API) を使って、VXLAN の設定に必要なトンネル接続用 IP アドレス (VPG の IP アドレス) を確認します。

$ soracom vpg list-gate-peers --vpg-id {vpg_id}
[
  {
    "innerIpAddress": "xxx.xxx.x.68",
    "netmask": "255.128.0.0",
    "outerIpAddress": "100.67.xxx.68",
    "ownedByCustomer": false
  },
  {
    "innerIpAddress": "xxx.xxx.xxx.84",
    "netmask": "255.128.0.0",
    "outerIpAddress": "100.67.xxx.84",
    "ownedByCustomer": false
  },
  {
    "innerIpAddress": "{gate_peer_innerIpAddress}",
    "netmask": "255.128.0.0",
    "outerIpAddress": "{gate_peer_outerIpAddress}",
    "ownedByCustomer": true
  }
]

API のレスポンスのうち、"ownedByCustomer": false となっているエントリの outerIpAddress が トンネル接続用 IP アドレス (VPG の IP アドレス) です。上記の例では、100.67.xxx.68100.67.xxx.84 をメモします。

"ownedByCustomer": true となっているエントリは、outerIpAddress が Gate Peer の IP アドレスです。

Gate Peer に SSH 接続し、VXLAN の設定を投入する

続いて Gate Peer に VXLAN の設定を投入します。Gate Peer に SSH 接続し、以下の手順で設定用のスクリプトを実行します。

  • 本ステップは Amazon Linux 2 AMI または Ubuntu を Gate Peer として利用する想定で書かれています。他の OS では設定方法が異なる場合があります。
  • 本ステップでのルーティング設定、パケットの転送設定は Gate Peer を再起動すると設定が削除されます。 Gate Peer を永続的に利用する場合には、設定スクリプトを作成するなどして、再起動時に自動的に設定が行われるようにしてください。

まず、VXLAN の設定を行うためのスクリプト (gate_init_vxlan.sh) をダウンロードし、実行権限を付けます。

$ wget https://soracom-files.s3-ap-northeast-1.amazonaws.com/gate-peer-tools/gate_init_vxlan.sh
$ chmod +x gate_init_vxlan.sh

続いて、設定スクリプト gate_init_vxlan.sh に引数を付けて root 権限で実行します。

$ sudo ./gate_init_vxlan.sh \
 {1. Gate Peer のネットワークインタフェース名} \
 {2. Gate Peer のトンネル接続用 IP アドレス} \
 {3. VXLAN に割り当てる ネットワークインタフェース名} \
 {4. Gate Peer のデバイスサブネット内 IP アドレス} \
 {5. デバイスサブネット IP アドレスレンジのサブネットマスク} \
 {6. VXLAN ID} \
 {7. VPG のトンネル接続用 IP アドレス 1} \
 {8. VPG のトンネル接続用 IP アドレス 2}

引数に指定する値は、以下のとおりです。

引数説明
1Gate Peer のネットワークインタフェース名。例: eth0
2Gate Peer のトンネル接続用 IP アドレス。VPG 設定画面の [デバイス LAN 設定][お客様の Gate Peer 一覧] に表示されている [トンネル接続用 IP アドレス]
3VXLAN に割り当てる ネットワークインタフェース名。例: vxlan0
4Gate Peer のデバイスサブネット内 IP アドレス。VPG 設定画面の [デバイス LAN 設定][お客様の Gate Peer 一覧] に表示されている [デバイスサブネット内 IP アドレス]
5デバイスサブネット IP アドレスレンジのサブネットマスク。例: 9
6VXLAN ID。1-16777215 の範囲で任意に指定できます。例: 10
7VPG のトンネル接続用 IP アドレス 1。VPG 設定画面の [デバイス LAN 設定][VPG の Gate Peer 一覧] に表示されている 1 つ目の Gate Peer の [トンネル接続用 IP アドレス]。例: 100.67.xxx.68
8VPG のトンネル接続用 IP アドレス 2。VPG 設定画面の [デバイス LAN 設定][VPG の Gate Peer 一覧] に表示されている 2 つ目の Gate Peer の [トンネル接続用 IP アドレス]。例: 100.67.xxx.84
  • 各 VPG で「VXLAN に割り当てる ネットワークインタフェース名」「VXLAN ID」「デバイスに割り当てるプライベート IP アドレスレンジ」が重複しないようにしてください。「デバイスに割り当てるプライベート IP アドレスレンジ」は、VPG 設定画面の [デバイスサブネット IP アドレスレンジ] に表示されています。

  • SORACOM Door をご利用でルータサーバを Gate Peer として動作させる場合は設定スクリプトとして代わりに door_gate_init_vxlan.sh を使用してください。

  • door_gate_init_vxlan.sh の実行には gate_init_vxlan.sh, check_bgp_neighbor_state.py も必要となります。以下のようにダウンロードし実行権限をつけてください。

    $ wget https://soracom-files.s3-ap-northeast-1.amazonaws.com/gate-peer-tools/door_gate_init_vxlan.sh
    $ wget https://soracom-files.s3-ap-northeast-1.amazonaws.com/gate-peer-tools/gate_init_vxlan.sh
    $ wget https://soracom-files.s3-ap-northeast-1.amazonaws.com/gate-peer-tools/check_bgp_neighbor_state.py
    $ chmod +x door_gate_init_vxlan.sh gate_init_vxlan.sh check_bgp_neighbor_state.py
    
  • door_gate_init_vxlan.sh に引数を付けて root 権限で実行してください。引数は gate_init_vxlan.sh と同様です。

EC2 インスタンスと接続する VPG が複数ある場合は、以下のように対応してください。

  • gate_init_vxlan.sh を VPG ごとに適切なパラメータを指定して実行してください。
  • gate_init_vxlan.sh の実行前に、既存の VXLAN 設定を削除する処理 rmmod vxlan をコメントアウトしてください。

なお、コマンド実行の際に以下のようなメッセージが出力されることがありますが、そのまま次のステップに進んで問題ありません。このメッセージは vxlan の設定投入前など、カーネルモジュール (vxlan) の読み込みが行われていない場合に出力されるものです。

==出力例==
rmmod: ERROR: Module vxlan is not currently loaded

また、上記の他に以下のようなメッセージが出力されることもあります。こちらも問題ないメッセージですので、そのまま次のステップに進んでください。

==出力例==
vxlan: destination port not specified
Will use Linux kernel default (non-standard value)
Use 'dstport 4789' to get the IANA assigned value
Use 'dstport 0' to get default and quiet this message

上記はコマンド引数の指定形式に対するメッセージです。今回は port オプションを使って VXLAN の src/dst port を指定しているため、そのまま次に進んでください。

(オプション) NAT による Gate Peer 以外からのパケット転送の有効化

Gate Peer 以外の EC2 インスタンスからデバイスに接続するためには、Gate Peer を NAT インスタンスとして動作させるために iptables パケット転送を有効化する必要があります。デバイスにアクセスするときに Gate Peer に ssh などでログインしてからさらにもう一度デバイスに ssh でログインする、いわゆる「踏み台サーバ」として Gate Peer を利用する場合はこのパケット転送の設定は必要ありません。

Gate Peer を NAT インスタンスとして利用する場合は Gate Peer で以下を実行してください。

$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
$ sudo iptables -t nat -A POSTROUTING  -o vxlan0 -j MASQUERADE

上記 2 行目の iptables の設定は OS を再起動すると消えてしまいます。必要に応じてご利用の Linux ディストリビューションにあわせた iptables 設定の永続化を実行してください。

Amazon Linux AMI の例

$ sudo /etc/init.d/iptables save

次に、AWS マネジメントコンソールで Amazon VPC のルートテーブルで、デバイスサブネット IP アドレスレンジ宛のルートの Target として Gate Peer のインスタンスを指定します。具体的な設定方法は Amazon VPC ユーザーガイド「メインルートテーブルを更新する」 を参照してください。その際には [Destination] の入力値として 0.0.0.0/0 ではなく、デバイスサブネット IP アドレスレンジを指定する必要があります。

ステップ 3: Gate を有効化する

Gate を有効化すると、以下の 2 種類の通信ができるようになります。

Gate を有効化する手順は、以下のとおりです。

  1. Gate を使用する VPG の VPG 設定画面で [デバイス LAN 設定] をクリックします。

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

  2. [Gate を有効にする] のスイッチを ON にします。

    Gate有効化 Gate有効化

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

    項目説明
    [VXLAN NETWORK IDENTIFIER (1-16777215)]Gate Peer に SSH 接続し、VXLAN の設定を投入する で、第 6 引数に指定した VXLAN ID を入力します。
    [プライバシーセパレーター]

    IoT SIM を利用するデバイス間の通信 (Gate D2D) について有効 / 無効を指定できます。

    • チェックを入れる : Gate D2D を無効にします。
    • チェックを外す : Gate D2D を有効にします。
  4. [保存] をクリックします。

Gate の有効 / 無効を切り替える際には、数秒間の通信断が発生します。

SORACOM CLI の場合

soracom vpg open-gate (VirtualPrivateGateway:openGate API) を使用して Gate を有効化します。この操作を行うと、お客様の Amazon VPC とデバイスが VXLAN で接続されて Gate Peer からデバイスへの直接アクセスやデバイス間での通信が可能となります。有効化が完了すると、API レスポンスとして VPG や Amazon VPC ピアリング接続の詳細が返ってきます。

$ soracom vpg open-gate --vpg-id {vpg_id}
{
  "allowedOperators": null,
  "createdTime": 1593533599322,
  "deviceSubnetCidrRange": "10.128.0.0/9",
  "fixedIpAddressesEnabled": false,
  "gateOpened": true,
  "gateVxlanId": 10,
  "junctionEnabled": false,
  "lastModifiedTime": 1594052964835,
  "operatorId": "OP9999999999",
  "placement": {
    "infrastructureProvider": "aws",
    "region": "ap-northeast-1"
  },
  "primaryServiceName": "Canal",
  "size": "small",
  "status": "running",
  "tags": {
    "name": "Gate-Test01"
  },
  "type": 15,
  "ueSubnetCidrRange": "10.128.0.0/9",
  "useInternetGateway": true,
  "virtualInterfaces": null,
  "vpcPeeringConnections": {
    "pcx-xxxxxx": {
      "destinationCidrBlock": "10.0.0.0/16",
      "id": "pcx-xxxxxx",
      "peerOwnerId": "999999999999",
      "peerRegion": "ap-northeast-1",
      "peerVpcId": "vpc-xxxxxx"
    }
  },
  "vpgId": "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Gate の有効 / 無効を切り替える際には、数秒間の通信断が発生します。

ステップ 4: Gate Peer からデバイスに接続できることを確認する

ここまでの設定が終わると、お客様の Amazon VPC とデバイスが Gate で接続された状態になっています。Gate Peer からデバイスに接続できることを確認しましょう。

まず、IoT SIM を使ってデバイスをネットワークに接続します。

デバイスの接続例は、各種デバイスで SORACOM Air を使用する を参照してください。

IoT SIM でデバイスを接続できたら、Gate Peer からデバイスに ping や http でアクセスしてみましょう。

以下は Gate Peer でコマンドを実行し、USB ドングルでネットワーク接続した Raspberry pi に 対して ping と http でアクセスした例です。プライベート IP アドレスで疎通が取れています。

[ec2-user@Gate Peer]$ ping 10.219.96.63
PING 10.219.96.63 (10.219.96.63) 56(84) bytes of data.
64 bytes from 10.219.96.63: icmp_seq=1 ttl=64 time=816 ms
64 bytes from 10.219.96.63: icmp_seq=2 ttl=64 time=403 ms
64 bytes from 10.219.96.63: icmp_seq=3 ttl=64 time=423 ms
64 bytes from 10.219.96.63: icmp_seq=4 ttl=64 time=422 ms

[ec2-user@Gate Peer]$ curl http://10.219.96.63
Hello World!

以上で Gate のセットアップと動作確認は終了です。Gate を設定したことで、お客様の Amazon VPC からデバイスへの通信が可能となりました。

Gate を無効化する

Gate の機能を使わないときには Gate を無効化できます。Gate を無効化すると、お客様のネットワークからデバイスへの通信、デバイス間の通信を停止できます。この方法の特徴は、以下のとおりです。

Gate を無効化する手順は、以下のとおりです。

  1. Gate を無効化する VPG の VPG 設定画面で [デバイス LAN 設定] をクリックします。

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

  2. [Gate を有効にする] のスイッチを OFF にして、[保存] をクリックします。

VPG の利用料金は継続して発生します

VPG を削除するまでは、VPG の利用料金が発生します。不要になった VPG は速やかに削除してください。VPG の利用料金について詳しくは、Virtual Private Gateway のご利用料金 を参照してください。

Gate の有効 / 無効を切り替える際には数秒間の通信断が発生します。

SORACOM API の場合

VirtualPrivateGateway:closeGate API を使用して、Gate を無効化できます。

ステップ 5: 使い終わったリソースを削除する

VPG、および Gate Peer で利用する AWS EC2 にはそれぞれ利用料金が発生します。不要であれば削除してください。

  • Gate の利用料金は、VPG セットアップ料金、基本料金で構成されます。詳しくは 課金体系のページ をご覧ください。
  • VPG セットアップ料金は VPG 作成のタイミングごとに課金されます。
  • VPG 基本料金は起動時間に応じて課金されます。VPG 起動後は課金を一時的に停止することはできません。課金を止めたい場合には、VPG 自体と、関連するネットワーク接続 (Amazon VPC ピアリング接続、VPN、専用線接続など) を削除してください。

VPG の利用を終了する / 削除する

詳しくは、VPG の利用を終了する / 削除する を参照してください。

Gate Peer を削除する

Gate Peer として利用した EC2 インスタンスは AWS マネジメントコンソール、または API から削除します。詳しくは Amazon EC2 ユーザーガイド を参照してください。