COAP プロキシ サーバーの設定

COAP プロキシ サーバの制約事項

次の制約事項は、COAP プロキシ サーバに適用されます。

  • スイッチは、ipv6 ブロードキャスト(CSCuw26467)を使用する CoAP クライアントとして自身をアドバタイズできません。

  • 監視のサポートは実装されていません。

  • Blockwise 要求はサポートされていません。シスコは、block-wise 応答を処理し、block-wise 応答を生成できます。

  • DTLS サポートは、RawPublicKey および証明書ベースのモードに対してのみ有効です。

  • スイッチは、DTLS クライアントとして動作しません。DTLS はエンドポイントに対してのみ。

  • エンドポイントは、CBOR ペイロードを処理し、応答すると想定されています。

  • クライアント側要求は、JSON であると想定されています。

  • IPv6 ブロードキャストの問題により、スイッチは IPv6 として他のリソース ディレクトリに自身をアドバタイズすることはできません。

COAP プロキシ サーバについて

COAP プロトコルは、制限されたデバイスで使用できるように設計されています。HTTP が情報にアクセスする際にサーバ上で動作するのと同じ方法で、COAP は制限されたデバイス上で動作します。

COAP と HTTP の比較を次に示します。

  • Web サーバの場合、プロトコル は HTTP 、トランスポートは TCP 、転送される最も一般的な情報の形式は HTML です。
  • 制約付きデバイスの場合、プロトコルは COAP 、トランスポートは UDP 、一般的な情報の形式は JSON/link-format/CBOR です。

COAP によって、HTTP の場合と同様に GET /POST メタファーと RESTful API を使用してデバイスにアクセスし、管理する手段が提供されます。

COAP プロキシ サーバの設定方法

COAP プロキシ サーバを設定するには、コンフィギュレーション モードで COAP プロキシと COAP エンドポイントを設定できます。

コマンドは coap [proxy | endpoints] です。

COAP プロキシの設定

スイッチで COAP プロキシを開始または停止するには、次の手順を実行します。

手順

  コマンドまたはアクション 目的

ステップ 1

enable

例:


Device> enable

特権 EXEC モードを有効にします。

  • パスワードを入力します(要求された場合)。

ステップ 2

configure terminal

例:


Device# configure terminal

グローバル コンフィギュレーション モードを開始します。

ステップ 3

coap proxy

例:


Device(config)# coap proxy

COAP プロキシ サブモードを開始します。

(注)  

 

coap proxy を停止して、coap proxy の下にあるすべての設定を削除するには、no coap proxy コマンドを使用します。

ステップ 4

security [none [[ ipv4 | ipv6 ] {ip-address ip-mask/prefix } | list {ipv4-list name | ipv6-list-name }] | dtls [id-trustpoint {identity-trustpoint label }] [verification-trustpoint {verification-trustpoint } | [ ipv4 | ipv6 {ip-address ip-mask/prefix }] | list {ipv4-list name | ipv6-list-name }]]

例:


Device(config-coap-proxy)# security none ipv4 1.1.0.0 255.255.0.0

暗号化タイプを引数と見なします。サポートされる 2 つのセキュリティ モードは none dtls です。

  • none:そのポートにセキュリティがないことを示します。

    security none を使用すると、最大 5 つの IPv4 アドレスと最大 5 つの IPv6 アドレスを関連付けることができます。

  • dtls:DTLS セキュリティは、オプションである RSA トラストポイントと検証トラストポイントを要します。検証トラストポイントがないと、通常の公開キー交換が行われます。

    security dtls を使用すると、最大 5 つの IPv4 アドレスと最大 5 つの IPv6 アドレスを関連付けることができます。

(注)  

 

coap proxy のすべてのセキュリティ設定を削除するには、no security コマンドを使用します。

ステップ 5

max-endpoints {number }

例:


Device(config-coap-proxy)#max-endpoints 10

(任意)スイッチで学習できるエンドポイントの最大数を指定します。デフォルト値は 10 です。指定できる範囲は 1 ~ 500 です。

(注)  

 

coap proxy に設定されたすべての最大エンドポイントを削除するには、no max-endpoints コマンドを使用します。

ステップ 6

port-unsecure {port-num }

例:


Device(config-coap-proxy)#port-unsecure 5683

(任意)デフォルト 5683 以外のポートを設定します。指定できる範囲は 1 ~ 65000 です。

(注)  

 

coap proxy のすべてのポート設定を削除するには、no port-unsecure コマンドを使用します。

ステップ 7

port-dtls {port-num }

例:


Device(config-coap-proxy)#port-dtls 5864

(任意)デフォルト 5684 以外のポートを設定します。

(注)  

 

coap proxy のすべて DTLS のポート設定を削除するには、no port-dtls コマンドを使用します。

ステップ 8

resource-directory [ ipv4 | ipv6 ] {ip-address } ]

例:


Device(config-coap-proxy)#resource-directory ipv4 192.168.1.1

スイッチが COAP クライアントとして動作できるユニキャスト アップストリーム リソースのディレクトリ サーバを設定します。

resource-directory を使用すると、最大 5 つの IPv4 アドレスと最大 5 つの IPv6 アドレスを設定できます。

(注)  

 

coap proxy のすべてのリソース ディレクトリ設定を削除するには、no resource-directory コマンドを使用します。

ステップ 9

list [ ipv4 | ipv6 ] {list-name }

例:


Device(config-coap-proxy)#list ipv4 trial_list

(任意)ライトとリソースを学習できる IP アドレス範囲を制限します。上記の security [ none | dtls ] コマンドオプションで使用する、IP アドレス/マスクの名前付きリストを作成します。

list を使用して、IPv4 または IPv6 に関係なく、最大 5 つの IP リストを設定できます。IP リストにつき最大 5 つの IP アドレスを設定できます。

(注)  

 

COAP プロキシサーバの IP リストを削除するには、 no list [ ipv4 | ipv6 ] {list-name } コマンドを使用します。

ステップ 10

start

例:


Device(config-coap-proxy)#start

このスイッチで COAP プロキシを開始します。

ステップ 11

stop

例:


Device(config-coap-proxy)#stop

このスイッチで COAP プロキシを停止します。

ステップ 12

exit

例:


Device(config-coap-proxy)# exit

COAP プロキシ サブモードを終了します。

ステップ 13

end

例:


Device(config)# end

特権 EXEC モードに戻ります。

COAP エンドポイントの設定

複数の IPv4/IPv6 スタティック エンドポイントをサポートするように COAP プロキシを設定するには、次の手順を実行します。

手順

  コマンドまたはアクション 目的

ステップ 1

enable

例:


Device> enable

特権 EXEC モードを有効にします。

  • パスワードを入力します(要求された場合)。

ステップ 2

configure terminal

例:


Device# configure terminal

グローバル コンフィギュレーション モードを開始します。

ステップ 3

coap endpoint [ ipv4 | ipv6 ] {ip-address }

例:


Device(config)#coap endpoint ipv4  1.1.1.1
Device(config)#coap endpoint ipv6  2001::1

スイッチ上でスタティック エンドポイントを設定します。

  • ipv4 :IPv4 スタティック エンドポイントを設定します。

  • ipv6 :IPv6 スタティック エンドポイントを設定します。

(注)  

 

エンドポイントで coap proxy を停止するには、no coap endpoint [ ipv4 |ipv6 ] {ip-address } コマンドを使用します。

ステップ 4

exit

例:


Device(config-coap-endpoint)# exit

COAP エンドポイント サブモードを終了します。

ステップ 5

end

例:


Device(config)# end

特権 EXEC モードに戻ります。

COAP プロキシサーバーの設定例

例:COAP プロキシ サーバの設定

次の例に、最大 10 のエンドポイントをサポートするようにポート番号 5683 を設定する方法を示します。

デバイス#coap proxy security none ipv4 2.2.2.2 255.255.255.0 port 5683 max-endpoints 10 

------------------------------------------------------------------------------------------------

次の例に、セキュリティ設定がされていない ipv4 1.1.0.0 255.255.0.0 に COAP プロキシを設定する方法を示します。

Device(config-coap-proxy)# security ?
  dtls  dtls
  none  no security

Device(config-coap-proxy)#security none ?
  ipv4    IP address range on which to learn lights
  ipv6    IPv6 address range on which to learn lights
  list    IP address range on which to learn lights

Device(config-coap-proxy)#security none ipv4 ?
  A.B.C.D  {/nn || A.B.C.D}  IP address range on which to learn lights

Device(config-coap-proxy)#security none ipv4 1.1.0.0 255.255.0.0

------------------------------------------------------------------------------------------------

次の例に、dtls id trustpoint セキュリティ設定がされている ipv4 1.1.0.0 255.255.0.0 に COAP プロキシを設定する方法を示します。

Device(config-coap-proxy)#security dtls ?
  id-trustpoint DTLS RSA and X.509 Trustpoint Labels
  ipv4 IP address range on which to learn lights
  ipv6 IPv6 address range on which to learn lights
  list IP address range on which to learn lights

Device(config-coap-proxy)#security dtls id-trustpoint ?
  WORD  Identity TrustPoint Label

Device(config-coap-proxy)#security dtls id-trustpoint RSA-TRUSTPOINT ?
  verification-trustpoint  Certificate Verification Label
  <cr>

Device(config-coap-proxy)#security dtls id-trustpoint RSA-TRUSTPOINT

Device(config-coap-proxy)#security dtls ?
  id-trustpoint DTLS RSA and X.509 Trustpoint Labels
  ipv4 IP address range on which to learn lights
  ipv6 IPv6 address range on which to learn lights
  list IP address range on which to learn lights

Device(config-coap-proxy)# security dtls ipv4 1.1.0.0 255.255.0.0

(注)  


ipv4 / ipv6 / list を設定するには、id-trustpoint と(任意)verification-trustpoint を事前に設定しておく必要があります。設定していない場合はエラーが表示されます。


------------------------------------------------------------------------------------------------

次の例に、トラストポイントを設定する方法を示します。これは、id trustpoint 設定の COAP security dtls の前提条件です。


ip domain-name myDomain
crypto key generate rsa general-keys exportable label MyLabel modulus 2048

Device(config)#crypto pki trustpoint MY_TRUSTPOINT
Device(ca-trustpoint)#rsakeypair MyLabel 2048
Device(ca-trustpoint)#enrollment selfsigned
Device(ca-trustpoint)#exit

Device(config)#crypto pki enroll MY_TRUSTPOINT
% Include the router serial number in the subject name? [yes/no]: no
% Include an IP address in the subject name? [no]: no
Generate Self Signed Router Certificate? [yes/no]: yes

------------------------------------------------------------------------------------------------

次の例に、dtls verification trustpoint によって ipv4 1.1.0.0 255.255.0.0 に COAP プロキシを設定する方法を示します(証明書または検証トラストポイントによる DTLS)。

Device(config-coap-proxy)#security dtls ?
  id-trustpoint DTLS RSA and X.509 Trustpoint Labels
  ipv4 IP address range on which to learn lights
  ipv6 IPv6 address range on which to learn lights
  list IP address range on which to learn lights

Device(config-coap-proxy)#security dtls id-trustpoint ?
  WORD  Identity TrustPoint Label

Device(config-coap-proxy)#security dtls id-trustpoint RSA-TRUSTPOINT ?
  verification-trustpoint  Certificate Verification Label
  <cr>

Device(config-coap-proxy)#security dtls id-trustpoint RSA-TRUSTPOINT verification-trustpoint ?
  WORD  Identity TrustPoint Label

Device(config-coap-proxy)#security dtls id-trustpoint RSA-TRUSTPOINT verification-trustpoint CA-TRUSTPOINT ?
  <cr>

------------------------------------------------------------------------------------------------

次の例に、検証トラストポイントを設定する方法を示します。これは、verification trustpoint 設定の COAP security dtls の前提条件です。



Device(config)#crypto pki import CA-TRUSTPOINT pkcs12 flash:hostA.p12 password cisco123
% Importing pkcs12...
Source filename [hostA.p12]? 
Reading file from flash:hostA.p12
CRYPTO_PKI: Imported PKCS12 file successfully.

------------------------------------------------------------------------------------------------

次の例に、セキュリティ [ none | dtls ] コマンド オプションで使用する、trial-list という名前のリストを作成する方法を示します。

Device(config-coap-proxy)#list ipv4 trial_list
Device(config-coap-proxy-iplist)#1.1.0.0 255.255.255.0
Device(config-coap-proxy-iplist)#2.2.0.0 255.255.255.0
Device(config-coap-proxy-iplist)#3.3.0.0 255.255.255.0
Device(config-coap-proxy-iplist)#exit
Device(config-coap-proxy)#security none list trial_list

------------------------------------------------------------------------------------------------

次の例に、coap プロキシ サブ モードで使用できるすべての拒否コマンドを示します。

Device(config-coap-proxy)#no ?     
  ip-list             Configure IP-List
  max-endpoints       maximum number of endpoints supported
  port-unsecure       Specify a port number to use
  port-dtls           Specify a dtls-port number to use
  resource-discovery  Resource Discovery Server
  security            CoAP Security features

------------------------------------------------------------------------------------------------

次の例に、coap プロキシで複数の IPv4/IPv6 スタティック エンドポイントを設定する方法を示します。


Device(config)# coap endpoint ipv4 1.1.1.1
Device(config)# coap endpoint ipv4 2.1.1.1
Device(config)# coap endpoint ipv6 2001::1

------------------------------------------------------------------------------------------------

次の例に、COAP プロトコルの詳細を表示する方法を示します。
Device#show coap version
CoAP version 1.0.0
RFC 7252 

------------------------------------------------------------------------------------------------

Device#show coap resources
Link format data = 
</>
</1.1.1.6/cisco/context>
</1.1.1.6/cisco/actuator>
</1.1.1.6/cisco/sensor>
</1.1.1.6/cisco/lldp>
</1.1.1.5/cisco/context>
</1.1.1.5/cisco/actuator>
</1.1.1.5/cisco/sensor>
</1.1.1.5/cisco/lldp>
</cisco/flood>
</cisco/context>
</cisco/showtech>
</cisco/lldp>

------------------------------------------------------------------------------------------------

Device#show coap globals 
Coap System Timer Values : 
	  Discovery  : 120 sec
	  Cache Exp  : 5 sec
	  Keep Alive : 120 sec
	  Client DB  : 60 sec
  	Query Queue: 500 ms
	  Ack delay  : 500 ms
	  Timeout    : 5 sec

Max Endpoints      : 10
Resource Disc Mode : POST

------------------------------------------------------------------------------------------------

Device#show coap stats 
Coap Stats :
Endpoints : 2
Requests : 20
Ext Queries : 0

------------------------------------------------------------------------------------------------

Device#show coap endpoints 
List of all endpoints : 

Code : D - Discovered , N - New
#	   Status 		Age(s)	 LastWKC(s)	 IP
-------------------------------------------------------------------------
1 	  D 		     10 	    94 		       1.1.1.6
2 	  D 		     6 	     34 		       1.1.1.5

Endpoints - Total : 2 Discovered : 2 New : 0 

------------------------------------------------------------------------------------------------

Device#show coap dtls-endpoints 
#     Index State  String State     Value   Port IP
---------------------------------------------------------------
1     3     SSLOK       3           48969   20.1.1.30
2     2     SSLOK       3           53430   20.1.1.31
3     4     SSLOK       3           54133   20.1.1.32
4     7     SSLOK       3           48236   20.1.1.33

------------------------------------------------------------------------------------------------

次の例に、COAP プロトコルのデバッグに使用できるすべてのオプションを示します。

Device#debug coap ?
all       Debug CoAP all
database  Debug CoAP Database
errors    Debug CoAP errors
events    Debug CoAP events
packet    Debug CoAP packet
trace     Debug CoAP Trace
warnings  Debug CoAP warnings

COAP プロキシ サーバーのモニタリング

COAP プロトコルの詳細を表示するには、次の表のコマンドを使用します。

表 1. COAP 固有のデータを表示するコマンド

show coap version

IOS COAP バージョンと RFC 情報を表示します。

show coap resources

スイッチのリソースと、スイッチが学習したリソースを表示します。

show coap endpoints

検出され、学習されたエンドポイントを表示します。

show coap globals

タイマー値とエンド ポイント値を表示します。

show coap stats

エンドポイント、要求、および外部クエリのメッセージ数を表示します。

show coap dtls-endpoints

dtls エンドポイントのステータスを表示します。

表 2. COAP コマンドをクリアするコマンド

clear coap database

スイッチで学習された COAP、およびエンドポイント情報の内部データベースをクリアします。

COAP プロトコルをデバッグするには、次の表のコマンドを使用します。

表 3. COAP プロトコルをデバッグするコマンド

debug coap database

COAP データベース出力をデバッグします。

debug coap errors

COAP エラー出力をデバッグします。

debug coap events

COAP イベント出力をデバッグします。

debug coap packets

COAP パケット出力をデバッグします。

debug coap trace

COAP トレース出力をデバッグします。

debug coap warnings

COAP 警告出力をデバッグします。

debug coap all

すべての COAP 出力をデバッグします。


(注)  


デバッグを無効にする場合は、コマンドの前に「no 」キーワードを追加します。


COAP の機能履歴

次の表に、このモジュールで説明する機能のリリースおよび関連情報を示します。

これらの機能は、特に明記されていない限り、導入されたリリース以降のすべてのリリースで使用できます。

リリース

機能

機能情報

Cisco IOS XE Fuji 16.9.2

COAP

COAP プロトコルは、制限されたデバイスで使用できるように設計されています。HTTP が情報にアクセスする際にサーバ上で動作するのと同じ方法で、COAP は制限されたデバイス上で動作します。

Cisco Feature Navigator を使用すると、プラットフォームおよびソフトウェアイメージのサポート情報を検索できます。Cisco Feature Navigator には、http://www.cisco.com/go/cfn [英語] からアクセスします。