Canal と Gate を組み合わせ、Amazon Web Services (AWS) 上に構築したお客様の仮想プライベートクラウド環境 Amazon VPC と、IoT SIM を利用するデバイスが双方向で通信できる環境を構築できます。
VPG Type-E では Gate C2D は利用できません
VPG Type-E では、Gate C2D は利用できません。詳しくは、VPG の サービスのサポート状況 を参照してください。
VPG Type-F2 は特別な設定を必要とせずにクラウドとデバイスの間で双方向に通信できます
VPG Type-F2 では、特別な設定を必要とせずにクラウド (お客様システム) とデバイス (IoT SIM) の間で双方向の IP 通信が利用できます。
クラウドからデバイスへアクセスするために、このページで説明する Gate C2D の設定や、お客様システムにおける VXLAN 設定 (SORACOM Gate C2D) は必要ありません。
トンネリング技術 (トンネル接続) とオーバーレイネットワーク
Gate C2D では、トンネリング技術 (トンネル接続) とオーバーレイネットワークと呼ばれる技術を利用して、クラウドからデバイスへのアクセスを実現しています。Gate C2D の設定を始める前に、SORACOM Gate C2D のトンネリング技術とオーバーレイネットワークの概要 を理解しておくことを推奨します。
- デバイス間通信機能だけを有効化する手順については、デバイス間で通信する (SORACOM Gate D2D) を参照してください。
- 既存の VPG Type-C/D でも、Gate C2D を利用できます。VPG タイプについては、VPG のタイプ を参照してください。
操作を始める前に準備が必要です (クリックして確認してください)
(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 Door や SORACOM Direct を使用すると、オンプレミスのサーバーやネットワーク機器を Gate Peer として利用できます。
ステップ 1: Gate Peer を VPG に登録する
Gate Peer (Amazon VPC 内に作成した EC2 インスタンス) を VPG に登録します。
Gate を使用する VPG の VPG 設定画面を表示します。
VPG 設定画面を表示する操作について詳しくは、VPG の設定を変更する を参照してください。
をクリックして、 の をクリックします。
「Gate Peer を追加」画面が表示されます。
以下の項目を設定します。
項目 説明 VPG からお客様のネットワークにアクセスするときの、トンネル (仮想 L2 接続) の終端の IP アドレスを指定します。具体的には、EC2 ダッシュボード にアクセスして、Gate Peer (EC2 インスタンス) の に表示されているプライベート IP アドレスを指定します。
デバイスが Gate Peer (EC2 インスタンス) にデータを送信するときの IP アドレス (デバイスサブネット内 IP アドレス) を固定できます。空欄にすると、VPG 設定画面の 内の IP アドレスが自動的に割り当てられます。をクリックします。
「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 を VPG に登録したら、続いて EC2 インスタンスに VXLAN の設定を投入します。
AWS マネジメントコンソールでの設定
AWS の EC2 ダッシュボード にアクセスして、 の をクリックします。
Gate Peer となる EC2 インスタンスのインスタンス ID をクリックし、
タブ → セキュリティグループ ID の順にクリックします。タブをクリックして、 をクリックします。
以下のようにルールを設定します。
タイプ ポート範囲 ソース 説明 SSH 22 0.0.0.0/0 設定を行う PC からの SSH 接続を許可します。 カスタム UDP 4789 SORACOM Canal を使用して閉域網で接続する (Amazon VPC ピアリング接続) で扱った Amazon VPC ピアリング接続の
VPG から Gate Peer への通信を許可します。 すべての ICMP - IPv4 すべて 0.0.0.0/0 ping に応答します。 そのほか、同一 VPC 内からデバイスへの通信に使用するプロトコルについて、ルールを設定します。たとえば、以下のような設定が考えられます。
- デバイスへ HTTP アクセスする: HTTP (プロトコル: TCP、ポート範囲: 80) を許可します。
- すべての通信を許可する: すべてのトラフィック (プロトコル: すべて、ポート範囲: すべて) を許可し、ソースに SORACOM Canal を使用して閉域網で接続する (Amazon VPC ピアリング接続) で扱った Amazon VPC ピアリング接続の を指定します。
をクリックします。
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 を永続的に利用する場合には、設定スクリプトを作成するなどして、再起動時に自動的に設定が行われるようにしてください。
Gate Peer に SSH 接続します。
「VXLAN の設定を投入する」画面に表示されている 1 つ目のコマンドを実行します。
$ wget https://soracom-files.s3-ap-northeast-1.amazonaws.com/gate-peer-tools/gate_init_vxlan.sh
--2024-08-14 03:52:48-- https://soracom-files.s3-ap-northeast-1.amazonaws.com/gate-peer-tools/gate_init_vxlan.sh Resolving soracom-files.s3-ap-northeast-1.amazonaws.com (soracom-files.s3-ap-northeast-1.amazonaws.com)... 3.5.158.180, 52.219.8.118, 52.219.8.250, ... Connecting to soracom-files.s3-ap-northeast-1.amazonaws.com (soracom-files.s3-ap-northeast-1.amazonaws.com)|3.5.158.180|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 2147 (2.1K) [text/plain] Saving to: ‘gate_init_vxlan.sh’ gate_init_vxlan.sh 100%[=================================================>] 2.10K --.-KB/s in 0s 2024-08-14 03:52:48 (73.6 MB/s) - ‘gate_init_vxlan.sh’ saved [2147/2147]
$ 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
へのアクセスがインターネットゲートウェイを通るように設定されている。
ifconfig で Gate Peer のネットワークインターフェース名を確認します。
以下の例の場合は、
enX0
が Gate Peer のネットワークインターフェース名です。$ ifconfig
enX0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001 inet 172.16.2.4 netmask 255.255.240.0 broadcast 172.16.15.255 inet6 fe80::456:7eff:fe69:e26f prefixlen 64 scopeid 0x20<link> ether 06:56:7e:69:e2:6f txqueuelen 1000 (Ethernet) RX packets 24481 bytes 32001616 (30.5 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4353 bytes 474934 (463.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 :
ifconfig コマンドがインストールされていないときは
sudo apt install net-tools
などを実行して、ifconfig コマンドをインストールしてください。「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}
引数に指定する値は、以下のとおりです。
引数 説明 1 Gate Peer のネットワークインターフェース名。手順 3 で確認したものに置き換えます。例: enX0
2 Gate Peer のトンネル接続用 IP アドレス。VPG 設定画面の → に表示されている3 VXLAN に割り当てるネットワークインターフェース名。例: vxlan0
4 Gate Peer のデバイスサブネット内 IP アドレス。VPG 設定画面の → に表示されている5 VPG のデバイスサブネット IP アドレスレンジのサブネットマスク。例: 9
6 VXLAN ID。1-16777215 の範囲で任意に指定できます。例: 10
7 VPG のトンネル接続用 IP アドレス 1。VPG 設定画面の → に表示されている 1 つ目の Gate Peer の 。例:100.67.xxx.68
8 VPG のトンネル接続用 IP アドレス 2。VPG 設定画面の → に表示されている 2 つ目の Gate Peer の 。例:100.67.xxx.84
各 VPG で「VXLAN に割り当てるネットワークインターフェース名」「VXLAN ID」「デバイスサブネット IP アドレスレンジ」が重複しないようにしてください。
SORACOM Door を利用していて、Gate Peer を VPN サーバーとして動作させる場合は、設定スクリプトとして代わりに
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
以下のメッセージは、引数の指定形式に対するメッセージです。
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 ユーザーガイド「メインルートテーブルを更新する」 を参照してください。その際には の入力値として 0.0.0.0/0
ではなく、VPG のデバイスサブネット IP アドレスレンジを指定する必要があります。
ステップ 3: Gate を有効化する
Gate を有効化すると、以下の 2 種類の通信ができるようになります。
- Gate Peer と VPG での通信 (Gate C2D)
- 同じ VPG を利用する デバイス間での通信 (Gate D2D)
Gate を有効化する手順は、以下のとおりです。
Gate を使用する VPG の VPG 設定画面で
をクリックします。VPG 設定画面を表示する操作について詳しくは、VPG の設定を変更する を参照してください。
のスイッチを On にして、以下の項目を設定します。
項目 説明 Gate Peer に SSH 接続し、VXLAN の設定を投入する で、第 6 引数に指定した VXLAN ID を入力します。 IoT SIM を利用するデバイス間の通信 (Gate D2D) について有効 / 無効を指定できます。
- チェックを入れる : Gate D2D を無効にします。
- チェックを外す : Gate D2D を有効にします。
をクリックします。
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 を無効化すると、お客様のネットワークからデバイスへの通信、デバイス間の通信を停止できます。この方法の特徴は、以下のとおりです。
- VPG はそのまま残るため、VPG の利用料金は継続して発生します。
- グループ設定もそのまま残るため、アプリケーションサービス等利用料割引 は、継続して適用されます。
- 再びデバイス間通信が必要になったときは、ステップ 3: Gate を有効化 すると、同じ設定をもう一度利用できます。
Gate を無効化する手順は、以下のとおりです。
Gate を無効化する VPG の VPG 設定画面で
をクリックします。VPG 設定画面を表示する操作について詳しくは、VPG の設定を変更する を参照してください。
のスイッチを 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 ユーザーガイド を参照してください。