本記事はソラコムが提供する「SORACOM公式ブログ」に掲載された「ルーター配下の IoT デバイスとクラウドとで NAT なし双方向通信を実現する方法」を再編集したものです。
目次
ネットワーク構成手順概要
ステップ 1. ルーターと IoT デバイス を 設定する (IoT デバイス から VPG へ疎通できる)
ステップ 2. SORACOM Canal を設定する (IoT デバイス から Gate Peer へ疎通できる)
ステップ 3. SORACOM Gate C2D を設定する (Gate Peer とルーターで双方向通信できる)
ステップ 4. SIM ベースルーティングを設定する (Gate Peer と IoT デバイス で双方向通信できる)
ステップ 5. SORACOM Junction Redirection を設定する (IoT デバイス とサーバーで双方向通信できる)
ステップ 6. ルーターの NAT を無効化する (IoT デバイス とサーバーで NAT なしに双方向通信できる)
(参考) 費用の目安
初期費用
月額のランニング費用
まとめ
こんにちは、Customer Reliability Engineer(CRE)の三國です。
このブログでは SORACOM Discovery 2023で発表された 「SIMベースルーティング機能」を使ってどのようなネットワーク構成ができるようになったのか、手順を踏まえて紹介します。
ネットワーク構成
今回ご紹介する構成は以下のとおりです。
- IoT SIM:SORACOM Air for セルラー plan-D D300MB
- IoT Device(IoT デバイス):Rapsberry Pi
- Router(ルーター):RUT240
- 接続先の Cloud network:Amazon VPC
- Gate Peerおよび Server(サーバー):Amazon Elastic Compute Cloud(EC2)
ポイントは大きく3つあります。
- ルーター配下のIoTデバイスとサーバーとで双方向通信ができる
- IoTデバイスやサーバーが増えても多対多の双方向通信ができる
- IoTデバイスとサーバー間で送信元 IPアドレスを維持したまま(NATなしに)双方向通信ができる
特に1については、多くのユーザー様よりご要望をいただいておりました。今まではルーターでのポートフォワーディングが必要といった制約があったのですが、SIM ベースルーティングの登場によって制約が大きく緩和されました。
なお、前提として VPGや Gate Peerといった SORACOM の用語については以下のドキュメントを参照してください。AWSの用語についての解説は、当ブログでは割愛します。
- https://users.soracom.io/ja-jp/docs/vpg/
- https://users.soracom.io/ja-jp/resources/glossary/#gate-peer
また、今回は AWS と接続した構成手順を紹介していますが、SORACOM Doorで Azure VPN Gatewayなどへ繋いだ場合も同様な構成が可能です。その他にも様々な構成が可能であり、今回紹介する構成が最適ではない場合もあります。ネットワーク設計について相談したい場合は IoT導入相談会を是非ご利用ください。
手順概要
手順は大きく6ステップです。
- ルーターと IoTデバイスを設定する(IoTデバイスから VPGへ疎通できる)
- SORACOM Canalを設定する(IoT デバイスから Gate Peerへ疎通できる)
- SORACOM Gate C2Dを設定する(Gate Peerとルーターで双方向通信できる)
- SIMベースルーティングを設定する(Gate Peerから IoTデバイスで双方向通信できる)
- SORACOM Junction Redirectionを設定する(IoTデバイス とサーバーで双方向通信できる)
- ルーターの NATを無効化する(IoTデバイスとサーバーで NATなしに双方向通信できる)
現時点では、今回のようなネットワークを構成するにはルーター・Gate Peerに幾らかの設定が必要になります。主なポイントを紹介します。
●ルーターや Gate Peerの設定については、デバイスや OSに依存する部分もあります。Priorityサポートプランを利用すると、これらの SORACOM外の設定でお困りの場合にベストエフォートで支援できます。
●ルーターによっては今回の構成をサポートしていない場合もあるので注意してください。
●今回実施する各コマンドはルーティングや転送設定の永続化をしません(再起動後は再設定が必要です)。永続化が必要な場合はカーネルモジュールの読み込みや sysctlといった、それぞれの設定について手順を確認してください。
ステップ 1. ルーターと IoTデバイス を 設定する(IoTデバイス から VPGへ疎通できる)
以下の手順で設定します。
●SORACOM Webコンソール上での操作は 日本カバレッジで行ってください。
●お手元のグローバルカバレッジのSIMをご利用の場合は グローバルカバレッジで行ってください。
- VPG Type-Fを作成する(参考:https://users.soracom.io/ja-jp/docs/vpg/create-vpg/)
- ルーターの SIMを VPGへ所属させる(参考:https://users.soracom.io/ja-jp/docs/vpg/use-vpg/)
- ルーターにAPNなどを設定して SORACOMへ繋げる(参考:https://users.soracom.io/ja-jp/guides/devices/rut240/setup/)
- IoTデバイスをルーターへ繋げる
注意点は以下のとおりです。
- 必要に応じて、IoTデバイスへはルーターから固定 IPアドレスを割り当てておく
- VPGのデバイスサブネット IPアドレスレンジはデフォルトで 10.128.0.0/9であるが、LANやクラウド側のネットワークと重複する場合は変更する
上記が完了すると、IoTデバイスから VPGへ疎通できるようになります。以下のような方法で確認してください。
確認 1. セッション履歴に作成した VPGの名前がある
SORACOMユーザーコンソールにてセッション履歴に作成した VPGの名前があることを確認します。名前がない場合は上記の手順2ができているか確認してください。
- 参考ドキュメント: IoT SIM が利用する VPG や IP アドレスを確認するには
確認 2. IoTデバイスから VPGへ pingが通る
以下のコマンドで PING用のエンドポイント(pong.soracom.io)へ疎通できることを確認します。疎通できない場合は上記の手順3および手順4ができているか確認してください。
ping pong.soracom.io -c 4
ステップ 2. SORACOM Canalを設定する(IoTデバイス から Gate Peerへ疎通できる)
以下の手順で設定します。
- VPCと EC2(Gate Peer)を作成する(参考ドキュメント:https://users.soracom.io/ja-jp/docs/canal/peering/)
- VPGと VPCを SORACOM Canalで繋ぐ(参考ドキュメント:同上)
注意点は以下のとおりです。
- Gate Peerには Ubuntuまたは Amazon Linux 2を使用すること
- VPCのピアリング設定、ルーティングテーブル
- 確認パートの疎通で使うプロトコル(たとえば ICMP)もセキュリティーグループで許可すること
上記が完了すると、IoTデバイスから Gate Peerへ疎通できるようになります。この段階ではまだ Gate Peerから IoTデバイスへの疎通はできません。以下のような方法で確認してください。
確認: IoTデバイスから Gate Peerへ pingが通る
以下のコマンドで Gate Peerへ疎通できることを確認します。172.16.1.11は今回の構成例の IPアドレスなので、自身の環境に置き換えてください。疎通できない場合は上記の各手順ができているか確認してください。
ping 172.16.1.11 -c 4
ステップ 3. SORACOM Gate C2Dを設定する (Gate Peer とルーターで双方向通信できる)
以下の手順で設定します。
- SORACOM Gate C2Dを設定する(参考:https://users.soracom.io/ja-jp/docs/gate/cloud-to-device/)
注意点は以下のとおりです。
- Gate Peerに割り当てたセキュリティーグループにて SORACOMからの VXLAN用の通信 UDP Port 4789を許可すること
- VPG設定画面で Gate Peerを設定したときに表示されたスクリプトを使うこと
- Amazon Linux 2の場合は、スクリプト中の eth0を enX0へ置き換えること
上記が完了すると、Gate Peerからルーターへ疎通できるようになります。この段階ではまだ Gate Peerから IoTデバイスへの疎通はできません。以下のような方法で確認してください。
確認 1. Gate Peerからルーターへ疎通できる
ルーターへ取り付けた SIMの IPアドレスへ疎通できることを確認します。10.128.128.10は今回の構成例の IPアドレスなので、自身の環境に置き換えてください。疎通できない場合は上記の手順1ができているか確認してください。また、ルーターによっては WANからの PINGを拒否する場合もあるので、ルーターの説明書を確認してください。
ping 10.128.128.10 -c 4
確認 2. ルーターから Gate Peerへ疎通できる
もしルーターから PINGを送ることができるのであれば、Gate Peerの VXLANインターフェースへ疎通できることを確認します。10.128.128.11は今回の構成例の IPアドレスなので、自身の環境に置き換えてください。疎通できない場合は上記の手順 1ができているか確認してください。
ping 10.128.128.11 -c 4
確認 3. IoTデバイスから Gate Peerへ疎通できる
IoTデバイスから Gate Peerの VXLANインターフェースへ疎通できることを確認します。10.128.128.11は今回の構成例の IPアドレスなので、自身の環境に置き換えてください。疎通できない場合は上記の手順1ができているか確認してください。
ping 10.128.128.11 -c 4
解説
SORACOM Canalを設定したステップ2において Gate Peerでパケットをキャプチャすると、送信元が 100.67.xx.xxのような IPアドレスとの通信を確認できます。これはつまりSIMからクラウドへの通信が VPGで NATされていることを示しています。
一方で、ステップ 3の確認 1~3の際に Gate Peerで VXLANインターフェース vxlan0をパケットキャプチャすると 10.128.128.11や 10.128.128.10といった IPアドレスを確認できます。つまり、Gate Peerとルーターは同じ IPアドレスレンジ 10.128.0.0/9内で通信しているように見えます。ステップ 3のように、クラウド上の Gate Peerと SIMを取り付けたデバイスとを VXLAN を用いて同じ L2ネットワークへ所属させるのが SORACOM Gateです。詳細は以下のドキュメントをご参照ください。
ステップ 4. SIMベースルーティングを設定する(Gate Peerと IoTデバイス で双方向通信できる)
以下の手順で設定します。
- ルーターの IP転送を設定する(参考:https://users.soracom.io/ja-jp/docs/vpg/sim-based-routing/)
- VPGの SIMベースルーティングを設定する(参考:同上)
- 上記手順のステップ3では宛先ネットワークに 192.168.1.0/24を指定してください。
- Gate Peerのルーティングでルーターの LAN宛のネクストホップを VXLANインタフェース にする
手順 1については、RUT240以外のルーターを使っている場合はルーターのドキュメントを確認してください。
手順 3については、たとえば以下のようなコマンドをサーバーで実行します。 10.195.17.94と 10.195.17.100 は今回の構成例の IPアドレスです。自身の環境の IPアドレスは VPG詳細画面の「デバイス LAN設定」タブ >「VPGの Gate Peer一覧」 >「デバイスサブネット内 IPアドレス」にあるアドレスです。
sudo ip route add 192.168.1.0/24 nexthop via 10.195.17.94 weight 1 nexthop via 10.195.17.100 weight 1 dev vxlan0
上記が完了すると、Gate Peerと IoTデバイス で双方向通信できるようになります。以下のような方法で確認してください。
確認 1. Gate Peerから IoTデバイスへ疎通できる
IoTデバイスへ疎通できることを確認します。192.168.1.10は今回の構成例の IPアドレスなので、自身の環境に置き換えてください。疎通できない場合は上記の各手順ができているか確認してください。
ping 192.168.1.10 -c 4
確認 2. IoTデバイスから Gate Peerへ疎通できる
IoTデバイスから Gate Peerの VXLANインターフェースへ疎通できることを確認します。10.128.128.11は今回の構成例の IPアドレスなので、自身の環境に置き換えてください。疎通できない場合は上記の各手順ができているか確認してください。
ping 10.128.128.11 -c 4
解説
このステップでは Cloud networkから LAN向けの通信をルーターへ向けるように Gate Peerと VPGのルーティングを設定し、ルーターも WANから LAN向けの通信を転送できるように設定しました。
ステップ 5. SORACOM Junction Redirectionを設定する(IoTデバイスとサーバーで双方向通信できる)
以下の手順で設定します。今回のブログで最も手順が多いパートですので、1つずつ作業していきましょう。クラウド側のネットワークを設定する必要があります。
- VPGの Junction Redirectionを有効化する(参考: https://users.soracom.io/ja-jp/docs/junction/use-redirection/)
- Gate Peerの EC2管理画面で送信元/送信先チェックを無効化する(参考:https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck)
- Gate Peerで転送設定を有効にする
- サーバー(EC2)を作成する
- サーバーの所属するサブネットのルーティングテーブルにてデバイスサブネットとルーターの LANの宛先を Gate Peerにする
手順3は以下のコマンドを Gate Peerで実施します。
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" sudo sysctl -p
手順 5は AWSの場合、以下の画像のようなルーティングテーブルになります。設定する IPアドレスレンジは自身の環境へ置き換えてください。
Destination | Target |
---|---|
172.16.0.0/16 | local |
100.67.xx.xx/27 | Peering Connection(VPG との Peering Connection) |
192.168.1.0/24 | Network Interface(Gate Peer の ENI) |
10.128.0.0/9 | Network Interface(Gate Peer の ENI) |
注意点は以下のとおりです。
- 手順 4で作成するサーバーが用いるセキュリティグループにて ルーター配下の LANの CIDR(今回の例では 192.168.1.0/24)からの通信を許可すること
- このステップで行った設定により、Gate Peerは VPG以外から通信が来た場合も転送ができるため、意図した通信だけ許可すること
上記が完了すると、サーバーと IoTデバイス で双方向通信できるようになります。以下のような方法で確認してください。
確認 1. IoTデバイスからサーバーへ疎通できる
IoTデバイスからサーバーへ疎通できることを確認します。172.16.1.10は今回の構成例の IPアドレスなので、自身の環境に置き換えてください。疎通できない場合は上記の手順1から手順5ができているか確認してください。
ping 172.16.1.10 -c 4
確認 2.サーバーからIoTデバイスへ疎通できる
EC2から IoTデバイスへ疎通できることを確認します。192.168.1.10は今回の構成例の IPアドレスなので、自身の環境に置き換えてください。疎通できない場合は上記の手順4から手順5ができているか確認してください。
ping 192.168.1.10 -c 4
解説
このステップでは LANから Cloud network向けの通信を Gate Peerへ向けるように Junction Redirectionを設定しました。また、Gate Peerの転送設定により、LANから Cloud network向けの通信を転送できるようにしました。加えて、サーバーから LANへ向かうためのルーティングを設定しました。 Gate Peerの転送設定ではデフォルトで送信元・送信先の IPアドレスを保持していますが、ルーターでは NATしています。最後のステップではルーターの NATを無効化します。
ステップ 6. ルーターの NATを無効化する(IoT デバイス とサーバーで NAT なしに双方向通信できる)
- [設定手順] ルーターの設定にて、LANから WAN宛の通信で NAT を無効化する
- [設定手順] ルーターの設定にて、WANから LAN宛の通信で NAT を無効化する
RUT240の場合、コンソールから Network >FIREWALL >ZONESの MASQUERADINGをすべて OFFにします。
上記が完了すると、EC2と IoTデバイスで NATなしに双方向通信できるようになります。以下のような方法で確認してください。
確認1. 送信元 IPアドレスを保持したまま IoTデバイスからサーバーへ疎通できる
サーバーでパケットをキャプチャすることで送信元を確認してください。Amazon Linux 2ではない場合は enX0をデバイス名に置き換えてください。
sudo tcpdump -i enX0 -n icmp
サーバーでパケットキャプチャしたまま、IoTデバイスからサーバーへ疎通できることを確認します。172.16.1.10は今回の構成例の IPアドレスなので、自身の環境に置き換えてください。疎通できない場合は上記の手順1から手順4ができているか確認してください。
ping 172.16.1.10 -c 4
確認2. 送信元 IPアドレスを保持したままサーバーから IoTデバイスへ疎通できる
IoTデバイスでパケットをキャプチャすることで送信元を確認してください。
sudo tcpdump -i eth0 -n icmp
IoTデバイスでパケットキャプチャしたまま、サーバーから IoTデバイスへ疎通できることを確認します。192.168.1.10は今回の構成例の IPアドレスなので、自身の環境に置き換えてください。疎通できない場合は上記の手順5および手順6ができているか確認してください。
ping 192.168.1.10 -c 4
(参考)費用の目安
2023年 11月 15日現在の料金において、以下のような費用が発生します。実際の費用については各サービスの見積ツールなどを利用して確認してください。
初期費用
総額:30,360円+Raspberry Piの費用
- IoTデバイスの費用(Raspberry Pi):個別に調達してください
- ルーターの費用:RUT240の場合 28,380円
- SIMの初期費用:plan-D D-300MBの場合 902円
- VPG Type-Fのセットアップ費用:1,078円
※金額は税込・送料別です
月額のランニング費用
総額:約 44,750円~(データ通信量によって変動します)
- SIMの費用:300MBのデータ通信量込みの基本料金が 330円(300MBを超えると以降 500MBあたり 110円の追加)
- VPGの費用:40,920円(SORACOM Canalの利用は1接続まで無料)
- AWSの費用 (t2.micro 2台、Elastic IPなし):約 3,500円(データ通信量や為替によって変動します)
※金額は税込・送料別です
まとめ
ネットワーク間で通信をしたい際、通信要件によっては NATが課題になることもあります。SORACOMは SORACOM Gateでクラウド・デバイス間の NATを解決し、SORACOM Jucntion Redirectionと SIMベースルーティングで更に広い範囲の NATを解決できるようにしました。柔軟なネットワーク構成でお客様の要件を満たせれば幸いです。
―ソラコム三國(mick)
投稿 ルーター配下の IoT デバイスとクラウドとで NAT なし双方向通信を実現する方法は SORACOM公式ブログ に最初に表示されました。
この連載の記事
-
第485回
デジタル
省電力通信LTE-M対応の小型マイコンボードをSORACOM IoTストアで提供開始、ローコードIoTアプリケーションビルダー「SORACOM Flux」の料金プランを発表 takuyaのほぼ週刊ソラコム 11/30-12/13 -
第484回
デジタル
AWS re:Invent 2024に見る、IoTの成熟と生成AIとの融合 -
第483回
デジタル
二歳半の子供を持つエンジニアの一日の働き方 -
第482回
デジタル
VPN 対応の産業用 LTE ルーターの価格改定【30%オフ】 -
第481回
デジタル
時間帯に応じたメール通知の構築方法 : SORACOM LTE-M Button と SORACOM Flux の活用 -
第480回
デジタル
SORACOM Flux 料金プランを発表しました -
第479回
デジタル
12/11-13 商業施設・店舗DX展に出展:最新IoTソリューションや事例をご紹介 -
第478回
デジタル
コープさっぽろが、クラウド型カメラ「ソラカメ」を全店舗で導入、現場主導の改善を実現、サーバールームの異常な温度上昇を通知する新規掲載レシピ takuyaのほぼ週刊ソラコム 11/16-11/29 -
第476回
デジタル
WebRTCとMedia over QUIC Transportの性能比較 -
第475回
デジタル
SORACOM Lagoon 3 の [Math] 機能で、複数データを組み合わせた通知の手順
この記事の編集者は以下の記事もオススメしています
-
デジタル
衛星通信「Starlink」をビジネス活用する方法や注意点は? ― SORACOM Starlink Businessキット セミナーレポート -
デジタル
エンジニアが今知っておきたい生成AIやLLMの今と、これからの付き合い方 ― オープンセミナー@広島 2023 登壇レポート -
デジタル
モーターやファン等の産業機器を後付けセンサーで予知保全するには? ― 11/8開催セミナーレポート -
デジタル
ソラコム、再び東証上場を申請。取り下げからの再開発表 -
デジタル
(日本語訳あり)Working at Soracom as a Bilingual Engineer/バイリンガルのエンジニアの働き方