Soracom

Users

ドキュメント
Home ドキュメント SORACOM Gate Getting Started

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

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

VPG Type-E では、Gate C2D は利用できません。詳しくは、VPG の サービスのサポート状況 を参照してください。

トンネリング技術 (トンネル接続) とオーバーレイネットワーク

Gate C2D では、トンネリング技術 (トンネル接続) とオーバーレイネットワークと呼ばれる技術を利用して、クラウドからデバイスへのアクセスを実現しています。Gate C2D の設定を始める前に、SORACOM 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 (Amazon VPC 内に作成した EC2 インスタンス) を VPG に登録します。

  1. Gate を使用する VPG の VPG 設定画面を表示します。

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

  2. [デバイス LAN 設定] をクリックして、[お客様の Gate Peer 一覧][+ Gate Peer を追加] をクリックします。

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

  3. 以下の項目を設定します。

    項目説明
    [トンネル接続用 IP アドレス]

    VPG からお客様のネットワークにアクセスするときの、トンネル (仮想 L2 接続) の終端の IP アドレスを指定します。具体的には、Gate Peer (EC2 インスタンス) の [プライベート IPv4 アドレス] に表示されているプライベート IP アドレスを指定します。

    [デバイスサブネット内 IP アドレス]デバイスが Gate Peer (EC2 インスタンス) にデータを送信するときの IP アドレス (デバイスサブネット内 IP アドレス) を固定できます。空欄にすると、VPG 設定画面の [デバイスサブネット IP アドレスレンジ] 内の IP アドレスが自動的に割り当てられます。

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

  4. [作成] をクリックします。

    「VXLAN の設定を投入する」画面が表示されます。この画面を表示したまま、ステップ 2: [AWS の設定] Gate Peer に VXLAN の設定を投入する に進みます。

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 マネジメントコンソールでの設定

  1. AWS の EC2 ダッシュボード にアクセスして、[インスタンス][インスタンス] をクリックします。

  2. Gate Peer となる EC2 インスタンスのインスタンス ID をクリックし、[セキュリティ] タブ → セキュリティグループ ID の順にクリックします。

  3. [インバウンドルール] タブをクリックして、[インバウンドのルールを編集] をクリックします。

  4. 以下のようにルールを設定します。

    タイプポート範囲ソース説明
    SSH220.0.0.0/0設定を行う PC からの SSH 接続を許可します。
    カスタム UDP4789

    SORACOM Canal を使用して閉域網で接続する (Amazon VPC ピアリング接続) で扱った Amazon VPC ピアリング接続の [リクエスタ CIDR]

    VPG から Gate Peer への通信を許可します。
    すべての ICMP - IPv4すべて0.0.0.0/0ping に応答します。

    そのほか、同一 VPC 内からデバイスへの通信に使用するプロトコルについて、ルールを設定します。たとえば、以下のような設定が考えられます。

    • デバイスへ HTTP アクセスする: HTTP (プロトコル: TCP、ポート範囲: 80) を許可します。
    • すべての通信を許可する: すべてのトラフィック (プロトコル: すべて、ポート範囲: すべて) を許可し、ソースに SORACOM Canal を使用して閉域網で接続する (Amazon VPC ピアリング接続) で扱った Amazon VPC ピアリング接続の [アクセプタ CIDR] を指定します。
  5. [ルールを保存] をクリックします。

  6. AWS マネジメントコンソールで Gate Peer のソース/宛先チェックを無効化します。

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

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

続いて Gate Peer に VXLAN の設定を投入します。Gate Peer に SSH 接続し、「VXLAN の設定を投入する」画面に表示されたコマンドを実行します。

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

  2. 「VXLAN の設定を投入する」画面に表示されている 1 つ目のコマンドを実行します。

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

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

    gate_init_vxlan.sh がダウンロードできないときは

    Gate Peer がインターネットにアクセスできることを確認してください。特に以下の点について確認します。

    • VPC にインターネットゲートウェイが設定されている。
    • https://soracom-files.s3-ap-northeast-1.amazonaws.com へのアクセスがインターネットゲートウェイを通るように設定されている。
  3. ifconfig がインストールされていることを確認します。

    $ ifconfig --version
    net-tools 2.10-alpha
    
    ifconfig コマンドがインストールされていないときは

    sudo apt install net-tools などを実行して、ifconfig コマンドをインストールしてください。

  4. 「VXLAN の設定を投入する」画面に表示されている 2 つ目のコマンドを実行します。

    「VXLAN の設定を投入する」画面に表示されているコマンドは、標準的な設定です。お客様の用件にあわせて適宜修正してください。

    $ 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 アドレス]
    5VPG のデバイスサブネット 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 アドレスレンジ」が重複しないようにしてください。

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

  • door_gate_init_vxlan.sh の実行には gate_init_vxlan.shcheck_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
    
  • 以下のメッセージは、引数の指定形式に対するメッセージです。gate_init_vxlan.sh では port オプションを使って VXLAN の src/dst port を指定しています。

    ==出力例==
    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
    

(オプション) 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 のルートテーブルで、VPG のデバイスサブネット IP アドレスレンジ宛のルートの Target として Gate Peer のインスタンスを指定します。具体的な設定方法は Amazon VPC ユーザーガイド「メインルートテーブルを更新する」 を参照してください。その際には [Destination] の入力値として 0.0.0.0/0 ではなく、VPG のデバイスサブネット IP アドレスレンジを指定する必要があります。

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

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

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

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

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

  2. [Gate を有効にする] のスイッチを On にして、以下の項目を設定します。

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

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

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

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 XXX.XXX.XXX.XXX
PING XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX) 56(84) bytes of data.
64 bytes from XXX.XXX.XXX.XXX: icmp_seq=1 ttl=64 time=816 ms
64 bytes from XXX.XXX.XXX.XXX: icmp_seq=2 ttl=64 time=403 ms
64 bytes from XXX.XXX.XXX.XXX: icmp_seq=3 ttl=64 time=423 ms
64 bytes from XXX.XXX.XXX.XXX: icmp_seq=4 ttl=64 time=422 ms
[ec2-user@Gate Peer]$ curl http://XXX.XXX.XXX.XXX
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 ユーザーガイド を参照してください。