ルーターコンフィグ チートシート コンフィグ操作編

# ルーターコンフィグチートシート コンフィグ操作編

色々なルーターOSで同じことをする時の、それぞれの操作の対照表です。

<dl>
<dt>IOS-XR
<dd>Cisco IOS-XR / 6.6.2
<dt>IOS-XE
<dd>Cisco IOS-XE (IOSと同等) / 3.13
<dt>JUNOS
<dd>Juniper JUNOS / 19.1R
<dt>SR-OS MD-CLI
<dd>Nokia SR-OS / R21
MD-CLI (model-driven command line interface) は SR-OSのR19で導入されたモードです。
<dt>SR-OS classic-CLI
<dd>Nokia SR-OS / R20
MD-CLI 以前のモードです。MD-CLIに比してclassic-CLIと呼ばれるようになりました。<br>
</dl>

バージョンは、だいたいこれぐらいのバージョンで試した、ぐらいです。適当。


## コンフィグ表示

特に指定しない限り、「コンフィグ」はrunning configのことです。

### 普通にコンフィグ表示

| OS | コマンド |
|----|---------|
|IOS-XR| `show running-config` |
|IOS-XE| `show running-config` |
|JUNOS | `show configuration` |
|SR-OS MD-CLI| `admin show configuration` |
|SR-OS classic-CLI | `admin display-config` |


### 特殊なコンフィグ表示

<dl>
<dt>IOS-XR admin config
<dd><code>admin show running-config</code>
<dt>SR-OS MD-CLI bof
<dd><code>admin show configuration bof</code>
<dt>SR-OS classic-CLI bof
<dd><code>show bof</code>
</dl>

### 階層構造なしでコンフィグ表示

| OS | コマンド |
|----|---------|
|IOS-XR| `show running-config formal` |
|IOS-XE| なし |
|JUNOS | <code>show configuration &#124; display set</code> |
|SR-OS MD-CLI| `admin show configuration flat` |
|SR-OS classic-CLI| なし |

### デフォルトでは非表示の要素も含めてコンフィグ表示

| OS | コマンド |
|----|---------|
|IOS-XR| `show running-config all-interfaces` |
|IOS-XE| `show running-config full` |
|JUNOS | なし |
|SR-OS MD-CLI| `admin show configuration detail` |
|SR-OS classic-CLI| `admin display-config detail` |

各OSで「非表示のコンフィグも表示」の意味がちょっとずつ違います。

## コンフィグ保存

| OS | コマンド |
|----|---------|
|IOS-XR| なし(常時保存) |
|IOS-XE| `copy running-config startup-config` <br>(または `write memory`) |
|JUNOS | なし(常時保存) |
|SR-OS MD-CLI | `admin save` |
|SR-OS classic-CLI | `admin save` |


## コンフィグモードに入る

| OS | コマンド |
|----|---------|
|IOS-XR| `configure`, `configure exclusive` |
|IOS-XE| `configure terminal` |
|JUNOS | `configure`, `configure exclusive`, `configure private`, (`edit ...`でも同じ) |
|SR-OS MD-CLI| `configure exclusive`,`configure global`,`configure private`  |
|SR-OS classic-CLI|  `configure` |

SR-OSの`configure exclusive`, `configure global`, `configure private`
[Candidate Configuration Modes](https://infocenter.nokia.com/public/7750SR205R1A/index.jsp?topic=%2Fcom.sr.mdcli%2Fhtml%2Fconfiguringinmdcli.html&cp=10_3_1&anchor=shelleyw5ipi3uqe924)

::: note
IOS-XRも、JUNOSも、SR-OS MD-CLIも、`exclusive` だと一人しかコンフィグモードに入れません。排他ロック(exclusive lock)がかかります。
:::

## コンフィグ反映

### running configとcandidate configの差分を表示する

| OS | コマンド |
|----|---------|
|IOS-XR| `show configuration` |
|IOS-XE| なし |
|JUNOS | <code>show &#124; compare</code> |
|SR-OS MD-CLI | `compare` |
|SR-OS classic-CLI | なし |

### コンフィグ反映前にバリデーションする

candidate config を running config へ反映させる前に整合性をバリデーションする。

| OS | コマンド |
|----|---------|
|IOS-XR| なし |
|IOS-XE| なし |
|JUNOS | `commit check` |
|SR-OS MD-CLI | `validate` |
|SR-OS classic-CLI | なし |

### 普通にコンフィグ反映

candidate config を running config へ反映させる。

| OS | コマンド |
|----|---------|
|IOS-XR| `commit` |
|IOS-XE| なし(即時反映) |
|JUNOS | `commit` |
|SR-OS MD-CLI | `commit` |
|SR-OS classic-CLI | なし (即時反映) |

### タイマー付きでコンフィグ反映

candidate config を running config へ反映させるが、一定時間確定操作をしなかったら自動で切り戻す。

| OS | コマンド |
|----|---------|
|IOS-XR| `commit confirmed <sec>` |
|IOS-XE| なし(即時反映) |
|JUNOS | `commit confirmed <min>` |
|SR-OS MD-CLI | `commit confirmed <min>` |
|SR-OS classic-CLI | なし (即時反映) |

commitした瞬間にログイン元がACLに引っかかったのに気づいて「やってもうた」を回避するコマンドです。

## コンフィグを反映させずに破棄

candidate config を running config へ反映させずに破棄する。

| OS | コマンド |
|----|---------|
|IOS-XR| `clear`[^xr_clear], `abort`[^xr_abort] |
|IOS-XE| なし(即時反映) |
|JUNOS | `rollback`[^junos_rollback] |
|SR-OS MD-CLI | discard |
|SR-OS classic-CLI | なし (即時反映) |

[^xr_clear]: `clear` は candidate config をクリアし、コンフィグモードに留まります。
[^xr_abort]: `abort` は candidate config をクリアし、コンフィグモードを抜けます。`clear` + `end` 相当です。
[^junos_rollback]: 編集中のコンフィグ内容である candidate config から、running config の内容に rollback するので `rollback` です。running config の内容が rollback するわけではありません。

## 以前のコンフィグに戻す

| OS | コマンド |
|----|---------|
|IOS-XR| `rollback configuration to ...`,<br>`rollback configuration to-exclude ...`,<br>`rollback configuration last ...` |
|IOS-XE| `archive`設定しておいて、`config replace ...` |
|JUNOS | `rollback` で candidate に入れて `commit` |
|SR-OS MD-CLI | `rollback` で candidate に入れて `commit` |
|SR-OS classic-CLI | `admin rollback` |

IOS-XR, JUNOSは、以前commitしたポイントへのロールバックです。
一方で、SR-OSはadmin saveしたコンフィグへのロールバックです。

JUNOSの`rollback <id>`は指定したIDまで戻りますが、指定したIDのcommitは取消されません。
一方でIOS-XRの`rollback configuration to <id>`は指定したIDも含めて取消されます。
IOS-XRでは `rollback configuration to-exclude <id>` がJUNOSと同等の操作になります。
つまり、指定したIDは取消されず時間軸でそれより新しいcommitが取消されます。


::: note
SR-OS MD-CLIはcommit機能がありますが、commitしたポイントへのロールバックではなく、admin saveしたコンフィグへのロールバックです。
:::

## コンフィグをまっさらにする

| OS | コマンド |
|----|---------|
|IOS-XR| `configure` して candidateが空の状態で `commit replace` |
|IOS-XE| `write erase` |
|JUNOS | `request system zeroize` |
|SR-OS MD-CLI |  |
|SR-OS classic-CLI |  |

JUNOS の `request system zeroize` はファクトリリセットです。コンフィグだけではなく、ログファイル等もなくなります。

[request system zeroize](
https://www.juniper.net/documentation/jp/ja/software/junos/user-access/topics/ref/command/request-system-zeroize-security.html)

## おまけ: SR-OSでMD-CLIを有効化する

SR-OS のMD-CLI関連情報

[Activating the model-driven command line interface (MD-CLI)](https://www.youtube.com/watch?v=XoY85IvLPq8)
[MD-CLI Overview](https://infocenter.nokia.com/public/7750SR205R1A/index.jsp?topic=%2Fcom.sr.mdcli%2Fhtml%2Fmdcli_overview.html)

SR-OSは最初classic-CLIで起動されます。以下のコンフィグをいれて、一度logoutし、再度ログインすると MD-CLIが有効になります。
有効化されたあとは、`//` でMD-CLIとclassic-CLIを切替できます。

```
system management-interface configuration-mode model-driven
```

```
A:R1#
A:R1# configure
A:R1>config# system management-interface configuration-mode model-driven

Applying Changes to Model-Driven Database ... OK
*A:R1>config# exit
*A:R1# logout


Login: admin
Password:

 SR OS Software
 Copyright (c) Nokia 2020.  All Rights Reserved.
(snip)

[/]
A:admin@R1#
[/]
A:admin@R1# //
INFO: CLI #2051: Switching to the classic CLI engine
*A:R1# //
INFO: CLI #2052: Switching to the MD-CLI engine

[/]
A:admin@R1#
```