vJunosEvolvedをEVE-NGでやってみる

ジュニパー機器の仮想イメージのvJunosがリリースされていたので、ネットワークシュミレータのEVE-NGで動作させた際のメモ

# vJunosEvolvedについて
- **無料で利用可能**。デモやトレーニング用途で利用可、詳細な利用条件は以下のJuniperサイトを確認してください
- Juniperの**アカウントを持っていなくてもダウンロード可能**
- 「vJunosEvolved」以外に、switch機器の仮想バージョン「vJunos-switch」も無料で利用可能
- vJunosEvolvedの詳細は以下のURLを確認してください
    - https://www.juniper.net/us/en/dm/vjunos-labs.html


# EVE-NGで利用できるようにする

## vJunosEvolvedをダウンロードする
こちらからダウンロードできます。内容を確認し同意した上でダウンロードしてください
https://support.juniper.net/support/downloads/?p=vjunos-evolved

## EVE-NGのインストール
こちらのページがわかりやすく説明されています！

https://qiita.com/watyanabe164/items/dd6278daf8c30566fca6

## EVE-NG で vJunosEvolved を利用できるようにする
以下のサイト参考に順番に進めていけば利用できるようになります
https://www.eve-ng.net/index.php/documentation/howtos/juniper-vjunos-evo-router/

vJunosEvolvedのテンプレートが無いためサイト内の「How to update my EVE Templates」を実施する必要があります(2023年5月時点)
また、Lab内にvJunosEvolvedのノードを追加する際は、以下のようにrpio用とpfe用のbridgeを追加して以下の図のように接続する必要があります
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043279/13be2ccc-4060-d6d3-8f8c-f1830cb31ac3.png)
【参考】bridgeの追加方法
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043279/027f3147-9565-9a9a-45ad-6dd600919775.png)

【2024/12/30追記】
バージョン23.2R1 以降のvJunosEvolvedは、rpio用とpfe用の設定は不要になります

https://www.juniper.net/documentation/jp/ja/software/vJunosEvolved/release-notes/23.2/vjunos-evo-release-notes-23.2r1/vjunosevolved-release-notes-23.2r1/topics/what-changed/vjunos-evolved-what-changed.html

それに合わせてテンプレートも変わります、以下を参考にしてください

https://community.juniper.net/blogs/shalini-mukherjee/2023/05/11/deploying-vjunos-in-a-bare-metal-eve-ng-server

以下にも23.2R1 以降のテンプレートがあります

https://gitlab.com/eve-ng-dev/templates/-/blob/master/intel/vjunosevo23.yml?ref_type=heads

# やってみる
ここまでで環境準備できたので、画像のような構成で 2台の vJunosEvolved を設置してOSPFで経路交換して両端のVPCで通信ができるような簡単な設定をとりあえずやってみました
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043279/77d02f14-3f8b-c115-e6c8-34a8df3e1dc0.png)

vJunosEvolved は最小構成が CPU: 4、RAM: 8GB ですが、自分の貧弱な環境に耐えられるように、vJunosEvolved のノード追加の際に、CPU: 1、RAM: 4GB　に変更して登録してみました
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043279/1029a664-0874-984a-394d-afe9ec5421ca.png)
 

以下のコンフィグで 2台の vJunosEvolved に対して以下のコンフィグで設定

<details><summary>vJunosEVO-1</summary>
<div>

```:vJunosEVO-1
root@vJunosEVO-1> show configuration | display set
set version 23.1R1.8-EVO
set system host-name vJunosEVO-1
set system syslog file interactive-commands interactive-commands any
set system syslog file messages any notice
set system syslog file messages authorization info
set interfaces et-0/0/0 unit 0 family inet address 10.0.0.1/24
set interfaces et-0/0/1 unit 0 family inet address 10.0.1.254/24
set interfaces lo0 unit 0 family inet address 10.99.0.1/32
set protocols ospf area 0.0.0.0 interface lo0.0 passive
set protocols ospf area 0.0.0.0 interface et-0/0/1.0 passive
set protocols ospf area 0.0.0.0 interface et-0/0/0.0 interface-type p2p

root@vJunosEVO-1>
```
</div></details>

<details><summary>vJunosEVO-2</summary>
<div>

```:vJunosEVO-2
root@vJunosEVO-2> show configuration | display set
set version 23.1R1.8-EVO
set system host-name vJunosEVO-2
set system syslog file interactive-commands interactive-commands any
set system syslog file messages any notice
set system syslog file messages authorization info
set interfaces et-0/0/0 unit 0 family inet address 10.0.0.2/24
set interfaces et-0/0/1 unit 0 family inet address 10.0.2.254/24
set interfaces lo0 unit 0 family inet address 10.99.0.2/32
set protocols ospf area 0.0.0.0 interface lo0.0 passive
set protocols ospf area 0.0.0.0 interface et-0/0/1.0 passive
set protocols ospf area 0.0.0.0 interface et-0/0/0.0 interface-type p2p

root@vJunosEVO-2>
```
</div></details>

:::note info
rootのパスワード設定は外しています「set system root-authentication plain-text-password」でパスワード設定してからコンフィグを入れてください。詳細は[こちらのサイト](https://www.juniper.net/documentation/jp/ja/software/junos/user-access/topics/topic-map/user-access-root-password.html#d118e81__d68768e340)をご確認お願い致します
:::

設定変更後に、設定が反映されてから以下のとおりルーティングテーブルをみると OSPF で経路交換ができていることを確認でき、PC同士で疎通できる環境を構築できました

```
root@vJunosEVO-1> show route

inet.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.0.0.0/24        *[Direct/0] 00:21:34
                    >  via et-0/0/0.0
10.0.0.1/32        *[Local/0] 00:21:34
                       Local via et-0/0/0.0
10.0.1.0/24        *[Direct/0] 00:21:31
                    >  via et-0/0/1.0
10.0.1.254/32      *[Local/0] 00:21:31
                       Local via et-0/0/1.0
10.0.2.0/24        *[OSPF/10] 00:10:59, metric 2
                    >  to 10.0.0.2 via et-0/0/0.0
10.99.0.1/32       *[Direct/0] 00:24:29
                    >  via lo0.0
10.99.0.2/32       *[OSPF/10] 00:10:59, metric 1
                    >  to 10.0.0.2 via et-0/0/0.0
224.0.0.5/32       *[OSPF/10] 00:21:15, metric 1
                       MultiRecv

inet.2: 5 destinations, 5 routes (5 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
```

# 参考：つまづいた箇所
起動後にすぐに利用できず、少し待つタイミングが3箇所ありました
すべて慌てずに待てば利用できました

1. root で入ったあとに CLIモードに入ろうと「cli」コマンドを入れてもすぐに入れない
5分程度待てば入れるようになりました
    ```
    re0 login: root
    --- JUNOS 23.1R1.8-EVO Linux (none) 5.2.60-yocto-standard-g3549735 #1 SMP PREEMPT Mon Jan 9 09:19:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
    [vrf:none] root@re0:~#
    [vrf:none] root@re0:~# cli
    could not open user interface connection: management daemon not responding
    Retry connection attempts ? [yes,no] (yes) 
    ```

1. CLI設定モードに入ろうと「configure」コマンドを打とうとするとエラーになる
こちらも5分程度待ては入れるようになりました
    ```
    root@re0> conf
    error: unknown command: conf
    Configuration is allowed only from the Routing Engine with GlobalIPOwner attribute assigned. Please check "show system nodes" command output.
    root@re0> conf
    ```

1. interface の et-0/0/* の認識が以下のようにすぐにされずコンフィグ設定してもすぐに動作しない
こちらも5分以上待ちましたが、待てば認識して利用できるようになりました
    ```
    root@re0> show interfaces terse
    Interface               Admin Link Proto    Local                 Remote
    re0:mgmt-0              up    up
    dsc                     up    up
    esi                     up    up
    fti0                    up    up
    fti1                    up    up
    fti2                    up    up
    fti3                    up    up
    fti4                    up    up
    fti5                    up    up
    fti6                    up    up
    fti7                    up    up
    irb                     up    up
    lo0                     up    up
    lo0.0                   up    up   inet     10.99.0.1           --> 0/0
    lsi                     up    up
    pip0                    up    up
    vtep                    up    up
    
    root@re0>
    ```

# 終わりに

vJunosEvolved の簡単な利用手順をご紹介しました。
無料で利用できるので
- Juniper機器の勉強をしたい！
- いままでやったことないルーティングプロトコルの勉強したい！
- ネットワーク自動化を試してみたい！

などの際に利用できると良いと思いました。