Juniper SRXの検証環境再現を簡単にする方法

## ■記事作成背景
Juniper社のSRX関連を用いた案件を実施するにあたり
顧客環境を再現する際に、いままで非常に手間どっていました。
この再現の度合いについては読者の方々で千差万別かと思いますが
ここでは実環境の設定は再現し、設定の追加などは許可するものと想定しています。
まずは、私がおこなっていた既存環境再現方法をご覧ください。

## ■ 今まで私がおこなっていた環境再現方法
### ① set形式の実環境コンフィグをもらう
### ② 工場出荷状態の検証用SRXにそのまま設定を投入
### ③ そして実環境にない不要な設定をdeleteコマンドで地道に削除を行う。

<!-- SRX300のデフォルトコンフィグ -->
<details><summary>SRXのデフォルトコンフィグ サンプル </summary>

```
set version 15.1X49-D75.5
set system autoinstallation delete-upon-commit
set system autoinstallation traceoptions level verbose
set system autoinstallation traceoptions flag all
set system autoinstallation interfaces ge-0/0/0 bootp
set system name-server 8.8.8.8
set system name-server 8.8.4.4
set system services ssh
set system services telnet
set system services xnm-clear-text
set system services netconf ssh
set system services dhcp-local-server group jdhcp-group interface irb.0
set system services web-management https system-generated-certificate
set system syslog archive size 100k
set system syslog archive files 3
set system syslog user * any emergency
set system syslog file messages any notice
set system syslog file messages authorization info
set system syslog file interactive-commands interactive-commands any
set system max-configurations-on-flash 5
set system max-configuration-rollbacks 5
set system license autoupdate url https://ae1.juniper.net/junos/key_retrieval
```


例えば上記のサンプルの場合
```
set system license autoupdate url https://ae1.juniper.net/junos/key_retrieval
```
などが不要なことが多い
(コマンドラインに定期的にログが出力されるため)
これらを手動でdeleteしていくにあたり
何行もあると時間がかかって仕方がない。

もしくは、同じ筐体で別の環境を再現する必要があった場合なども
同じように再現をしようと設定を投入→deleteで不要部分を削除
などで多くの時間を割かれてしまうのは工数的にもよろしくない。
特に中小規模向けのSRXはcommitにやたら時間がかかることや
設定の依存関係などがとにかく多く煩わしい
これをもっと短時間で解決する方法を模索していました。

## ■結論
入れ子形式の設定ファイルをSRXに格納して
load override コマンドを使用しました。

load override は
candidateコンフィグを指定した設定ファイルの内容で塗り替えるもののようです。
これを使うことで、余分な設定を手動で削除せずただ読み込むだけで
キレイに、正確に環境の再現をすることが可能でした。
ちなみに設定ファイルの拡張子は.txtなどでも読み込めるようでした。
※load overrideの仕様は以下のURLを参照

https://www.juniper.net/documentation/jp/ja/software/junos/cli/topics/topic-map/junos-config-files-loading.html


## ■事前準備
ここではSRX300を想定しています。
※なお、あくまでも環境と同じ検証機が用意できていることを前提としていますのでご注意ください。

### ①入れ子形式の設定をもらう
set形式ではなく、入れ子形式のみの設定ファイルが必要です。

### ②入れ子形式の設定ファイルをFTPなどでSRX本体へ格納する。
/var/tmp/ 配下に私はよく配置します。

ここではファイル名を以下とします。
シングル構成用ファイル:single.txt
HA構成用ファイル:HA.txt
    

## ■シングル構成の場合
### ① シングル構成用のコンフィグをロードする
```:SRX
SRX# load override /var/tmp/single.txt
SRX# commit
```



## ■HA(chassis cluster)構成の場合

### ① SRX同士の結線を行う
SRXのコントロールリンクとファブリックリンクを結線する。

ケーブリングするポートは以下のURLを参考にしてください。

https://www.juniper.net/documentation/jp/ja/software/junos/chassis-cluster-security-devices/topics/topic-map/security-chassis-cluster-verification.html


### ② 2台のSRXでシャーシクラスターモードに切り替える
```:SRX主系
SRX_1# set chassis cluster cluster-id 1 node 0 reboot
```
```:SRX副系
SRX_2# set chassis cluster cluster-id 1 node 1 reboot
```

### ③ HA用の最低限設定を主系機器で行う
ここは実際にもらったコンフィグに合わせてください。
あくまでもサンプル用です。
<!-- SRX300 HA用コンフィグ -->
<details><summary>SRX300のHA用コンフィグ サンプル </summary>

```
set groups node0 system host-name SRX_1
set groups node0 interfaces fxp0 unit 0 family inet address 192.16.35.46/24
set groups node1 system host-name SRX_2
set groups node1 interfaces fxp0 unit 0 family inet address 192.16.35.47/24
set apply-groups "${node}"
set interfaces fab0 fabric-options member-interfaces ge-0/0/2
set interfaces fab1 fabric-options member-interfaces ge-1/0/2
set chassis cluster redundancy-group 0 node 0 priority 100
set chassis cluster redundancy-group 0 node 1 priority 1
set chassis cluster redundancy-group 1 node 0 priority 100
set chassis cluster redundancy-group 1 node 1 priority 1
set chassis cluster redundancy-group 1 interface-monitor ge-0/0/3 weight 255
set chassis cluster redundancy-group 1 interface-monitor ge-0/0/4 weight 255
set chassis cluster redundancy-group 1 interface-monitor ge-1/0/3 weight 255
set chassis cluster redundancy-group 1 interface-monitor ge-1/0/4 weight 255
set chassis cluster reth-count 2
set interfaces ge-0/0/3 gigether-options redundant-parent reth1
set interfaces ge-1/0/3 gigether-options redundant-parent reth1
set interfaces reth1 redundant-ether-options redundancy-group 1
set interfaces reth1 unit 0 family inet address 203.0.113.233/24
set interfaces ge-0/0/4 gigether-options redundant-parent reth0
set interfaces ge-1/0/4 gigether-options redundant-parent reth0
set interfaces reth0 redundant-ether-options redundancy-group 1
set interfaces reth0 unit 0 family inet address 198.51.100.1/24
set security zones security-zone Untrust interfaces reth1.0
set security zones security-zone Trust interfaces reth0.0
```
上記をcommitした後
```
show chassis cluster status
```
などでHAが構成できていることを確認する。

### ④ HA構成用のコンフィグを主系機器でロードし、commitする
```:SRX主系
SRX_1# load override /var/tmp/HA.txt
SRX_1# commit
```



## ■所感
以上になります。
我ながら、SRX関連の経験不足を痛感しました。

また、実験はしていませんがload overrideはJunosのコマンドのようなので
他のJuniper社製品 例えば EXスイッチ など
Junos稼働の場合なら、環境再現を容易にすることが可能かもしれません。