センサーデバイスへの仮想IP割り当て実験

Similar documents
2

本資料について

TFTP serverの実装

使用する前に

4-5. ファイアウォール (IPv6)

4-4. ファイアウォール (IPv4)

presen1.pptx

FUJITSU Software Systemwalker Centric Manager Lite Edition V13.5 機能紹介資料

9.pdf

アマチュア無線のデジタル通信

FTP_RW_ProgramDescription_jp_V100

GIGA光SW-HUB

システムインテグレータのIPv6対応

PowerPoint プレゼンテーション

conf_example_260V2_inet_snat.pdf

Real4Dumps Real4dumps - Real Exam Dumps for IT Certification Exams

吉田坂本.pptx

MIRACLE LoadBalancerを使用したネットワーク構成と注意点

VPN 接続の設定

SAMBA Stunnel(Windows) 編 1. インストール 1 セキュア SAMBA の URL にアクセスし ログインを行います xxx 部分は会社様によって異なります xxxxx 2 Windows 版ダウンロード ボ

インターネットVPN_IPoE_IPv6_fqdn

CommCheckerManual_Ver.1.0_.doc

PC にソフトをインストールすることによって OpenVPN でセキュア SAMBA へ接続することができます 注意 OpenVPN 接続は仮想 IP を使用します ローカル環境にて IP 設定が被らない事をご確認下さい 万が一仮想 IP とローカル環境 IP が被るとローカル環境内接続が行えなくな

Mobile IPの概要

スライド 1

ESMPRO/ServerManager Ver. 6 変更履歴

障害およびログの表示

NGN IPv6 ISP接続<トンネル方式>用 アダプタガイドライン概要

PowerPoint Presentation

novas HOME+CA WEB 設定画面アクセス方法 novas HOME+CA の WEB 設定画面接続方法 本製品の設定は WEB 設定画面から変更できます WEB 設定画面のアクセス方法は以下のとおりです 1 本製品と有線または無線 LAN で接続した端末で WEB ブラウザを起動します

本製品に接続された端末の IPv6 情報が表示されます 端末に割り当てられた IPv6 アドレス IPv6 アドレスを取得した端末の MAC アドレスが確認できます 注意 : 本ページに情報が表示されるのは本製品が 上位から IPv6 アドレスを取得した場合のみとなります DDNSサービス :DDN

延命セキュリティ製品 製品名お客様の想定対象 OS McAfee Embedded Control 特定の業務で利用する物理 PC 仮想 PC や Server 2003 Server 2003 ホワイトリスト型 Trend Micro Safe Lock 特定の業務で利用するスタンドアロン PC

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

Microsoft Word - xfinderマニュアル.docx

bitvisor_summit.pptx

スライド 1

目次 2 1 PC Control Utility PD 1 について 動作環境

インストール手順 2 セットアップの種類 [ 標準インストール (S)] [Thunderbird を既定のメールプログラムとして使用する (U)] にチェックを入れ [ 次へ (N)] をクリックします インストール手順 3 セットアップ設定の確認 [ インストール (I)] をクリックします 2

Microsoft PowerPoint ppt [互換モード]

2. ネットワークアプリケーションと TCP/IP 2.1. クライアント / サーバモデル TCP/IP プロトコルに従うネットワークアプリケーションの典型的モデルは, クライアント / サーバモデルである. クライアント / サーバモデルでは, クライアントからの要求に対してサーバがサービスを提

ServerView RAID Manager VMware vSphere ESXi 5 インストールガイド

おらんかにクライアント操作マニュアル

Microsoft Word - トンネル方式(3 UNI仕様書5.1版)_ _1910.doc

ip nat outside source list コマンドを使用した設定例

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

CloudEdgeあんしんプラス月次レポート解説書(1_0版) _docx

ANABUS Ethernet システム 二重化設定要領

第1回 ネットワークとは

Microsoft Word - nvsi_090198_quantum dxi7500_nvb.doc

スライド 1

F O M A P P P 接続参考資料 DTE~FOMA パケット網間インタフェース 第 1.4 版 株式会社 NTT ドコモ Unpublished copyright 2007 NTT DoCoMo, Inc. All rights reserved. Unpublished copyrigh

アライドテレシス・コアスイッチ AT-x900 シリーズとディストリビューションスイッチ AT-x600 シリーズで実現するACLトラフィックコントロール

ServerView RAID Manager VMware vSphere ESXi 5 インストールガイド

第一章 LPC2478 ボードの概要...3 第二章 uclinux の初体験 SD カードのテスト USB メモリのテスト USB Devices のテスト network のテスト...6 第三章 uclinux のコンパイル...

スライド 1

Raspberry Pi (Windows10 IoT Core) を使用したリーダ ライタの制御例 (UART 接続 ) 2018 年 12 月 18 日第 版 株式会社アートファイネックス

内容 1 本書の目的 用語 WiMAX WiMAX LTE WiMAX2+ サービス WiMAX サービス WiMAX2+ デバイス ノーリミットモード

2010年4月~6月 協業実績報告

SiTCP ユーティリティユーザガイド 2014 年 6 月 18 日 0.73 版 Bee Beans Technologies 1

新製品 Arcserve Backup r17.5 のご紹介 (SP1 対応版 ) Arcserve Japan Rev. 1.4

NetLec17TCPIP1.ppt

1. Microsoft Loopback Adapter のインストール 1) ノートパソコンにおいて そのパソコンの管理者アカウントによりログオンします 2) [ スタート ] > コントロールパネルを開きます 3) 表示方法 : カテゴリの場合には ハードウェアとサウンド > デバイスマネージ

R80.10_FireWall_Config_Guide_Rev1

X-MON3

Microsoft Word - ssVPN MacOS クライアントマニュアル_120版.doc

ESMPRO/JMSS Ver6.0

情報処理学会研究報告 IPSJ SIG Technical Report Vol.2015-CE-131 No /10/10 1,a) 1,b) 1,c) 2,d) 1,e) 1,f) Raspberry Pi GPIO I2C Raspberry Pi Linux HTTP, Rasp

実習 :VLAN 間ルーティングのトラブルシューティング トポロジ 2014 Cisco and/or its affiliates. All rights reserved. This document is Cisco Public. 1 / 8 ページ

1. ネットワーク経由でダウンロードする場合の注意事項 ダウンロード作業における確認事項 PC 上にファイアウォールの設定がされている場合は 必ずファイアウォールを無効にしてください また ウイルス検知ソフトウェアが起動している場合は 一旦その機能を無効にしてください プリンターは必ず停止状態 (

情報通信の基礎

[技術資料] PRIMERGY サーバブレードのLAN 冗長化

第1回 ネットワークとは

ServerView RAID Manager VMware vSphere ESXi 6 インストールガイド

起動する 起動方法は ご使用の OS により異なります 同一ネットワーク内で 本ソフトを複数台のパソコンから起動すると 本ソフト対応の LAN DISK にアクセスが集中し エラーとなる場合があります [ スタート ] メニュー [( すべての ) プログラム ] [I-O DATA] [LAN D

証明書ダウンロードシステム操作手順書 (ios) 第 1.15 版 証明書ダウンロードシステム 操作手順書 (ios) Ver1.15 セキュアネットワークサービス 2018 年 10 月 29 日 セキュアネットワークサービス 1 DLS-SNT-IOS-V1.15

CLUSTERPRO MC ProcessSaver 1.2 for Windows 導入ガイド 第 4 版 2014 年 3 月 日本電気株式会社

(Microsoft PowerPoint - 2.\(\220\274\222J\202\263\202\361\)JANOG ppt [\214\335\212\267\203\202\201[\203h])

User's Manual補足:遠隔監視

SoftBank 101SI 取扱説明書

目次 各装置仕様... 2 各部の名称... 3 簡易操作手順... 6 データフォーマット... 7 無線設定... 8 無線設定変更手順... 9 Ethernet 設定 HYBRID ROUTER の追加機能について 制限事項... 15

1013  動的解析によるBOTコマンドの自動抽出

クラスタ構築手順書

今週の進捗

付録 2 システムログ一覧 () 攻撃経路 1. ファイアウォール (FW) ネットワーク型 IPS/IDS Web サーバ AP サーバ DB サーバ プロキシサーバ エラーログ SSL ログ AP ログ ホストログ 非 日時 ファイアウォールホスト名 ファイアウォールルール名及び番号 インバウン

Windows Server 2003 Service Pack 適用手順書

15群(○○○)-8編

オペレーティング システムでの traceroute コマンドの使用

wdr7_dial_man01_jpn.indd

2014 年電子情報通信学会総合大会ネットワークシステム B DNS ラウンドロビンと OpenFlow スイッチを用いた省電力法 Electric Power Reduc8on by DNS round- robin with OpenFlow switches 池田賢斗, 後藤滋樹

kaisetu.book

Cisco Unified IP Phone のモデル情報、 ステータス、および統計の表示

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

はじめに

V-Client for Android ユーザーズガイド

Microsoft PowerPoint - about_stack_ ppt [互換モード]

Time Server Pro. TS-2910 リリースノート お客様各位 2019/09/13 セイコーソリューションズ株式会社 Time Server Pro.(TS-2910/TS-2912) システムソフトウェアリリースノート Ver2.1.1 V2.2 変更点 Version 2.2 (

ワイヤレスセンサモジュール取扱説明書

コンバージドファブリック仕様一覧

5400 エミュレーターII 構成の手引き(第6章 トラブルシューティング)

Sharpdesk V3.5インストレーションガイド:プロダクトキー編

Transcription:

応募区分 : 研究型論文 センサーデバイスへの仮想 IP 割り当て実験 富田章義 ( とみたあきよし ) 株式会社ネットワールド SI 技術本部インフラソリューション技術部ネットワークソリューション課 1

要約 IoT で 物とインターネットがつながるが 物に IP アドレスを割り当てるためには IP ヘッダの処理が可能な CPU を持つ必要がある 現在の小型のセンサーなどに搭載しているデバイスの CPU やメモリでは IP 処理はオーバーヘッドが大きく直接処理を行うことが出来ない その解決策の 1つとして IoT ゲートウェイでプロトコル変換を行うことにより クラウドサーバへの直接通信などを行っていますが デバイスの識別にパケットの中に識別子を追加するなどの処理を行わなくてはならず 従来の低レベルソケットによる通信が出来なかった デバイス 1 つに対して 1 つの IP を割り当てることを VM やコンテナなどの仮想技術を利用せずに実現しかつプログラムの変更を最小限にする為の Ruby のライブラリを作り 通信影響などを検証した EIoT Ethernet to USB Adapter とCisco PyUSB Module などのソフトウェアと組み合わせることで 1 台のアダプタ上の複数の USB デバイスに対して個別に制御を行うことが可能になると考える 2

目次 1. 試作ライブラリの概要について... 4 2. ライブラリの動作について... 5 2.1. IoT ゲートウェイ起動時の動作... 5 2.2. デバイスへの仮想 IP アサイン... 5 2.3. Socket のオープン時... 6 2.4. TCP/UDP パケット通信時... 6 2.5. Scoket のクローズ時... 7 3. 試験構成... 7 3.1. IoT ゲートウェイ... 7 3.2. デバイス... 8 3.3. サーバ... 8 3.4. その他の IP 端末... 8 4. 試験結果... 8 4.1. サーバとのデータ送受信... 8 4.2. ネットワーク上の端末からの送受信... 8 5. 所感... 9 3

1. 試作ライブラリの概要について デバイスと IP 通信を実現する為の IoT ゲートウェイに導入するアプリケーションから 低レベルソケットを呼び出すことにより 仮想的にデバイス毎に IP アドレスの割り当てを行う 割り当てた IP を利用することで 低レベルソケットを利用した TCP/UDP 通信を行う事で以下の挙動を実現させる 1. 1 台 IoT ゲートウェイに接続したデバイス毎に IP アドレス ( 以下仮想 IP) を割り当てる 2. IoT ゲートウェイ上で 複数のアプリケーションが同一のデバイスを利用した場合 同じ IP アド レスを利用する 3. 異なったデバイスの場合 同じ TCP/UDP Port 番号を利用して通信を可能にする 4. デバイスに割り当てた IP アドレスに対しても Ping に対して応答する 5. デバイスに割り当てた IP アドレスに対して割り当てを行っていない TCP/UDP ポート番号に対し てパケットが到着した場合 ICMP のエラーメッセージで応答を行う 6. 他のデバイスでオープンした TCP/UDP ポート番号と同じ TCP/UDP ポート番号にアクセスした 場合でも ICMP エラーメッセージ応答で応答する 図 1 構成概要図 尚 オーバーヘッドの大きな VM やコンテナなどの仮想技術を利用すれば同様なことを実現可能だが オーバーヘッドが大きい為 今回は仮想技術を使用せずに代わりに netfilter で作成した デバイス全 てに IP を割り当てる為 IPv4 ではアドレス数が不足するので IPv6 を利用した 4

2. ライブラリの動作について 2.1. IoT ゲートウェイ起動時の動作 IoT ゲートウェイが起動したときに 仮想 IP のプレフィックスには DHCPv6-PD を利用して設定を行う この動作により IoT ゲートウェイに対してプレフィックス値を個別に割り当てる必要やネットワーク側の機器に対してルーティングテーブルの追加を自動的に行う 取得したプレフィックスは ループバックインターフェースに割り当てを行うことで DHCPv6 を利用せずにスタティックで指定したときの動作も可能にするとともに ライブラリからプレフィックの値の参照を簡単にした 2.2. デバイスへの仮想 IP アサインデバイスと仮想 IP の関連付けを行う必要があるため 以下のように socket を呼び出し時に 48 ビットのデバイス識別子を追加することで デバイスを認識するようにした 1 iotsock = IotSocket.new("001122334455", Socket::AF_INET6, Socket::SOCK_DGRAM, 0) ライブラリの中では 既に同一識別子で仮想 IP を割り当てているかを判断する為に Socket の呼び出した時に内部データベースを参照することで 使用状況を確認するようにした 既に仮想 IP を割り当てているのであれば Socket の作成処理は終了する 割り当てが無い場合は 仮想 IP アドレスの作成 netfilter へのエントリ追加 データベースへのエントリ追加をする 仮想 IP アドレスの作成は 48 ビットのデバイス識別子を使い EUI-48to64 アルゴリズムを利用しホストアドレスを割り当てる その後 ループバックのアドレスからプレフィックスを呼び出し一意の IPv6 アドレスを作成する netfilter へのエントリ追加は以下のコードで行った 主に 3 つの動作を含めており 1 つ目は 仮想 IP 宛の TCP パケットに対して ICMP port unreachable 応答を返すエントリ追加 2 つ目は仮想 IP 宛の UDP パケットに対して ICMP port unreachable 応答を返すエントリ追加 3 つ目は TCP/UDP 以外のパケットを自装置宛に変換することで Ping 応答をするエントリ追加である これらのエントリの追加を行うと仮想 IP アドレスが動作し外部からの通信に応答するようになる # 新規仮想デバイスの追加 1 system("#{ip6tables} -t nat -N #{@conf['mac']}_in") 2 system("#{ip6tables} -t nat -A PREROUTING -d #{@conf['ipv6addr']} -j #{@conf['mac']}_in") 3 system("#{ip6tables} -t nat -A #{@conf['mac']}_in -p tcp -j DNAT --to-destination [#{LOIP6ADDR}]:4") 4 system("#{ip6tables} -t nat -A #{@conf['mac']}_in -p udp -j DNAT --to-destination [#{LOIP6ADDR}]:4") 5

5 6 7 system("#{ip6tables} -t nat -A #{@conf['mac']}_in -j DNAT --to-destination #{LOIP6ADDR}") system("#{ip6tables} -t nat -N #{@conf['mac']}_out") system("#{ip6tables} -t nat -A POSTROUTING -j #{@conf['mac']}_out") TCP/UDP の ICMP port unreachable 応答は well-known port のうち IANA で未定義の最若番のポート (4) に NAT として処理することで実現した 2.3. Socket のオープン時 Ruby のsocket ライブラリと同じ指定を行う ただし 割り当てる IP アドレスは IoT ゲートウェイ上にはない為 必ず無指定の [::] を利用することとした 1 sockaddr = Socket.sockaddr_in(0, "::") 2 iotsock.bind(sockaddr) ライブラリの中では 指定された TCP/UDP ポート番号に関わらず ephemeral port( ポート番号 0 指定 ) を使いループバックインターフェースのアドレスを利用してソケットライブラリの bind を実行する この動作により IoT ゲートウェイで使用する TCP/UDP ポート番号と同じ番号のソケットを使用することを回避した 自動的に割り当てられた IoT ゲートウェイ上の TCP/UDP ポート番号を調べ IoT ゲートウェイ上で通信する実ポート番号を決定する アプリケーションから TCP/UDP ポート番号に ephemeral port が指定をした場合は 仮想 IP のポート番号を実ポート番号と同じ TCP/UDP ポート番号を利用するようにした 仮想 IP のポート番号を使い 2 つの netfilter エントリを追加する 1 つ目は パケットの受信時に NAT を行い IoT ゲートウェイのループバック IP アドレスとポート番号へ NAT するエントリで受信したパケットに対して処理を行う PREROUTING テーブルに追加 2 つ目はパケットの送信時に NAT を行い送信元を仮想 IP とポート番号に変換するエントリで 送信パケットに対して処理を行う POSTROUGING テーブルに追加する 1 system( "#{IP6TABLES} -t nat -I #{@conf['mac']}_in -p #{proto} --dport #{@vport} -j DNAT --to-destination [#{LOIP6ADDR}]:#{@rport}") 2 system( "#{IP6TABLES} -t nat -I #{@conf['mac']}_out -p #{proto} --sport #{@rport} -j SNAT --to-source [#{@conf['ipv6addr']}]:#{@vport} 最後にデータベースにポートエントリ情報を追記する 2.4. TCP/UDP パケット通信時 Ruby のソケットライブラリを同じ指定を行い 特にライブラリ固有の動作を行わない 例として UDP パケットの送信時を掲載する 6

1 iotsock.send(hdc_data, 0, Socket.sockaddr_in(server_port, server_addr)) カーネルの netfilter が動的にパケットの IP アドレスとポート番号を変更して通信する為 ライブラリ 上での追加動作は行わない 2.5. Scoket のクローズ時 Ruby のソケットライブラリと同じ指定を行う 正常処理後に仮想ポート番号を閉じ 必要に応じて仮想 IP の開放も行う 1 iotsock.close() ライブラリの中では データベースを参照し netfilter エントリの削除 ソケットライブラリのクローズ データベースからポートエントリの削除を行う この後 該当 TCP/UDP ポートに対してアクセスを停止する その後全てのポートエントリが削除されている場合 仮想 IP のnetfileter エントリの削除 データベースからデバイスエントリの削除を行う 3. 試験構成 図 1の構成を作成し試験を実施した 通信は TCP/UDP の切り替えが可能にし 両プロトコルで各デバイスに対して仮想的に IP を使えることを検証する 使用中の TCP/UDP ポート以外への通信に対して ICMP エラー応答をすることを確認する 図 2 試験構成図 3.1. IoT ゲートウェイ Linux が利用可能なカスタマイズが容易な raspberry pi を使用する 必要となるパッケージも殆どがリポジトリからダウンロードを行ったが iptables は NAT66 をサポー 7

トしていなかったので最新版に更新した (make 処理を再度実行 ) 3.2. デバイス 2 つのデバイスを用意し 同時に複数の仮想 IP の割り当てを行った デバイス 1 台目は TEXAS INSTRUMENTS 社の HDC1000 を利用する このデバイスは I2C 接続のセンサーになっており 温度 湿度 デバイス情報 ( メーカー ID 製品 ID シリアル番号 ) を取得可能であり 分解能 リセット デバイスの温度を上げるテストモードの設定が出来る シリアル番号から仮想 IP を作成し サーバへ 1 分間隔で温度と湿度を送信するのと同時に全ての外部装置からの分解能の変更 センサーのリセットの実行 テストモードの ON/OFF を行えるようにした デバイス 2 台目は Sitronix 社の ST7032 を利用する このデバイスは I2C 接続の LCD になっており 文字列を表示することのみが出来る すべての外部装置からメッセージ書き換え命令により表示するメッセージの書き換えを可能にした 3.3. サーバ Linux をインストールしたサーバを用意した IoT ゲートウェイに対して IPv6 プレフィックスを払い出す為の DHCPv6 Server をインストールし プレフィックスプールを作成した また IoT ゲートウェイの温湿センサーの仮想 IP から受信した温度 湿度データを受信してデータを蓄積するサーバ機能 蓄積されたデータから LCD の仮想 IP へメッセージを送る通知機能を作成し動作させた 3.4. その他の IP 端末 IoT ゲートウェイの温湿度センサーの仮想 IP に対して 分解能やテストモードへ移行するための命令 を送ることと LCD を上書きすることが可能なソフトウェアを作成し動作させた 4. 試験結果 4.1. サーバとのデータ送受信温湿度センサーと LCD の通信パケットが仮想 IP アドレスになっており 同時に複数の仮想 IP と通信が可能となった また サーバから各デバイスに対して Ping 応答の確認が取れ其々のデバイスが個別の IP アドレスを持っているように動作した 4.2. ネットワーク上の端末からの送受信その他の IP 端末から温湿度センサーの変更や LCD の書き換えが仮想 IP アドレスで行えることができる Ping 応答や不正な TCP/UDP Port に対してパケットを送ることで ICMP Error が帰ってくることが確認できた 8

5. 所感 今回実験的に作成したライブラリは従来のソケットライブラリを呼び出すときに 1 つのパラメータを追加するのみで対応を行うことが出来た これにより ソースコードの変更点が少なく仮想 IP を利用することが可能である VM やコンテナを利用すれば同様に接続したデバイスに対して仮想的に IP を割り当てることが可能であり ハードウェアと仮想化イメージとの関連付けが必要となる また オーバーヘッドも大きい為 ハードウェアリソースが低いゲートウェイの場合は同時に動作させるイメージ数が少なくなるが 今回のライブラリを使用すれば関連付けとオーバーヘッドの削減が可能である ただし 既存のソースコードを流用する場合 ソケットの呼び出す部分を変更する必要がある デバイス IO は I2C のみで実験を行ったが IoT ゲートウェイ上でソケットアプリケーションを使う限り特に制限は無く Linux ベースで動作する IoT ゲートウェイであればどのような製品にも応用可能である 実験用の Ruby ライブラリ内部で iptables を実行することで netfilter の定義を変更したが 直接 netfilter のエントリを書き換えるように変更すること ソケットオープンクローズ時の無駄なオーバーヘッドを短縮可能である 今後 この方式を拡張するのであれば ライブラリのエンハンスが必要と考える 以上 9