1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Cisco CSR1000VにRESTCONFでアクセスする

Last updated at Posted at 2022-01-05

目次

はじめに

前回、MacでCML2(Cisco Modeling Labs)を動かすまででCMLの実行環境を構築しました。
今回はこのCML上でCSR1000Vを起動させて外部ネットワークと接続し、RESTCONFでアクセスするために必要な設定とアクセス方法をご紹介します。

構成

CML2環境を外部ネットワークと接続する方法は、

  • NAT方式:CML内ノードのIPアドレスをCMLホストのIPアドレスにNATして外部ネットワークと通信
  • BRIDGE方式:CML内ノードをL2接続でローカルネットワークに接続し外部ネットワークと通信

が代表的なようですが、今回はBRIDGE方式を採用しました。
参考:CMLを始めよう!(11.外部ネットワーク接続)

今回は最低限の設定しか行わないので、以下のような構成にしました。

image.png

今回の検証環境のセグメントは192.168.3.0/24を利用しており、アサインするIPアドレスは、

  • CSR1000V GigabitEthernet1 : 192.168.3.40
  • デフォルトゲートウェイ : 192.168.3.1
    とします。

CSR1000Vの設定

CSR1000Vが起動したら以下の設定を投入します。

hostname testRT
username admin privilege 15 secret cisco
!
aaa new-model
!
aaa authentication login default local
aaa authorization exec default local
!
restconf
!
interface GigabitEthernet1
 ip address 192.168.3.40 255.255.255.0
 no shutdown
!
ip route 0.0.0.0 0.0.0.0 192.168.3.1
!
ip http secure-server

最後のip http secure-serverでのWebUI有効化が、今回restconfでアクセスする際に必要になります。
※脆弱性が発見された場合のセキュリティホールにもなり得るので、むやみに有効化しないようにしましょう。

設定変更後 show コマンド確認

show ip interface brief

testRT#show ip interface brief
Interface              IP-Address      OK? Method Status                Protocol
GigabitEthernet1       192.168.3.40    YES manual up                    up      
GigabitEthernet2       unassigned      YES unset  administratively down down    
GigabitEthernet3       unassigned      YES unset  administratively down down    
GigabitEthernet4       unassigned      YES unset  administratively down down  

show ip route

Gateway of last resort is 192.168.3.1 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 192.168.3.1
      192.168.3.0/24 is variably subnetted, 3 subnets, 2 masks
C        192.168.3.0/24 is directly connected, GigabitEthernet1
S        192.168.3.1/32 [254/0] via 192.168.3.1, GigabitEthernet1
L        192.168.3.40/32 is directly connected, GigabitEthernet1

show ip http server status

HTTP server status: Disabled
HTTP server port: 80
HTTP server active supplementary listener ports: 21111  
HTTP server authentication method: enable
HTTP server auth-retry 0 time-window 0
HTTP server digest algorithm: md5
HTTP server access class: 0
HTTP server IPv4 access class: None
HTTP server IPv6 access class: None
HTTP server base path: 
HTTP File Upload status: Disabled
HTTP server upload path: 
HTTP server help root: 
Maximum number of concurrent server connections allowed: 300
Maximum number of secondary server connections allowed: 50
Server idle time-out: 180 seconds
Server life time-out: 180 seconds
Server session idle time-out: 600 seconds
Maximum number of requests allowed on a connection: 25
Server linger time : 60 seconds
HTTP server active session modules: ALL
HTTP secure server capability: Present
HTTP secure server status: Enabled
HTTP secure server port: 443
HTTP secure server ciphersuite:  rsa-aes-cbc-sha2 rsa-aes-gcm-sha2
        dhe-aes-cbc-sha2 dhe-aes-gcm-sha2 ecdhe-rsa-aes-cbc-sha2
        ecdhe-rsa-aes-gcm-sha2 ecdhe-ecdsa-aes-gcm-sha2
HTTP secure server TLS version:  TLSv1.2 TLSv1.1
HTTP secure server client authentication: Disabled
HTTP secure server PIV authentication: Disabled
HTTP secure server PIV authorization only: Disabled
HTTP secure server trustpoint: TP-self-signed-2276197724
HTTP secure server peer validation trustpoint: 
HTTP secure server ECDHE curve: secp256r1
HTTP secure server active session modules: ALL

curlでCSR1000Vの情報を取得を行う

CSR1000Vの設定変更が完了したらrestconf経由でCSR1000Vにアクセスしてみます。

まずhttps://192.168.3.40/.well-known/host-metaにアクセスし、ホストに関するメタデータを取得してみます。
RESTCONF に対応している機器は、このURIにGETリクエストを送信することで、その機器のRESTCONFアクセス先が確認できます。
参考:RESTCONF の URI 確認と設定の作り方

curl -k -u admin:cisco -H 'Accept: application/yang-data+json' 'https://192.168.3.40/.well-known/host-meta'

設定変更後すぐにこちらを実行したところ、エラーページの応答はあったのですが期待していた出力ではありませんでした。

$ curl -k -u admin:cisco -H 'Accept: application/yang-data+json' 'https://192.168.3.40/.well-known/host-meta'

<!-- 
 *------------------------------------------------------------------
 * Copyright (c) 2020 by Cisco Systems, Inc.
 * All rights reserved.
 *------------------------------------------------------------------
 *-->

<!DOCTYPE html>
<html>
<head>
<title>Error</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>An error occurred.</h1>
<p>Sorry, the page you are looking for is currently unavailable.<br/>
Please try again later.</p>
<p>If you are the system administrator of this resource then you should check
the <a href="http://nginx.org/r/error_log">error log</a> for details.</p>
<p><em>Faithfully yours, OpenResty.</em></p>
</body>
</html>

しかし時間をあけて約40分後に改めて実行してみたところ、無事にアクセスすることができました。(結構時間かかりました)

$ curl -k -u admin:cisco -H 'Accept: application/yang-data+json' 'https://192.168.3.40/.well-known/host-meta'
<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'>
    <Link rel='restconf' href='/restconf'/>
</XRD>

続いてインターフェイス情報を取得してみます。

$ curl -k -s -u admin:cisco -H 'Accept: application/yang-data+json' 'https://192.168.3.40/restconf/data/ietf-interfaces:interfaces'
{
  "ietf-interfaces:interfaces": {
    "interface": [
      {
        "name": "GigabitEthernet1",
        "type": "iana-if-type:ethernetCsmacd",
        "enabled": true,
        "ietf-ip:ipv4": {
          "address": [
            {
              "ip": "192.168.3.40",
              "netmask": "255.255.255.0"
            }
          ]
        },
        "ietf-ip:ipv6": {
        }
      },
      {
        "name": "GigabitEthernet2",
        "type": "iana-if-type:ethernetCsmacd",
        "enabled": false,
        "ietf-ip:ipv4": {
        },
        "ietf-ip:ipv6": {
        }
      },
      {
        "name": "GigabitEthernet3",
        "type": "iana-if-type:ethernetCsmacd",
        "enabled": false,
        "ietf-ip:ipv4": {
        },
        "ietf-ip:ipv6": {
        }
      },
      {
        "name": "GigabitEthernet4",
        "type": "iana-if-type:ethernetCsmacd",
        "enabled": false,
        "ietf-ip:ipv4": {
        },
        "ietf-ip:ipv6": {
        }
      }
    ]
  }
}

無事にデータを取得できているようです。
今回はGETメソッドのみの確認でしたが、POST/PUT/PATCHメソッドによる設定変更も可能なようです。

PostmanでCSR1000Vにアクセスする

PostmanはWebAPI開発用のツールです。
Postmanを使うと簡単にAPIリクエストを送信し、レスポンスが取得できます。

Postmanはこちらからダウンロードすることができます。
Postman API Platform

先ほどのインターフェイスの情報取得を今度はPostmanを使って実行してみます。

Postman設定

Params

設定なし

image.png

Authorization

Basic Auth を選択し、 アクセス先機器で作成した Username/Password を入力。

image.png

Headers

Authorization はBasic Authの設定が完了していれば自動入力されます。
Accept: application/yang-data+json の設定を追加します。

image.png

Settings

image.png

実行結果

Send を実行して上手くいくと以下のように結果が出力されます。

image.png

curlリクエストからPostmanリクエストに変換

ちなみにcurlリクエストからPostmanリクエストに変換することも可能です。
curlでは正常に動作したのに、Postmanからだと上手くいかない場合(Postman側の設定に自信がない場合)は試してみると良いかもしれません。

image.png

参考URL

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?