前回までの記事
・EVPN/VXLAN動かしてみた(Part1)
・EVPN/VXLAN動かしてみた(Part2)
・EVPN/VXLAN動かしてみた(Part3)
・EVPN/VXLAN動かしてみた(Part4)
これまでの検証はContainerlabでcEOSを動かしておこなっています、
Install手順などは他の方のブログなどでまとまっていますが、PCAPの取得方法なども含めて一応この記事でも一通り情報をまとめておきます
#詳細なインストール手順などは他の方のブログでわかりやすくまとめていただいているのでそちらのリンクを張らせていただきます
動作環境
以下のWindowsPCを使用しています
こちらでVMware Workstationを使い、Ubuntuの仮想サーバを動かしています
・使用PC
:MinisForum NAB9(Intel Core i9 / 32GB RAM)
CPU | Core i9-12900HK (14C |
Memory | DDR4 16GB×2 (SODIMM Slots×2 |
Storage | M.2 2280 1TB PCIe4.0 SSD(up to 2TB) + 2.5 インチ SATA HDD スロット (SATA 3.0 6.0Gb/s) |
ハイパーバイザ、OSのインストール
Hypervisor
・以下の記事を参考にさせていただき、VMwareWorkstationをInstallしています
基本的に記事通りに進めれば特に躓くところなくInstallができました
参考:
OS
・ubuntu-24-04-2を使用しています
こちらも以下の記事を参考にさせていただいております
参考:
ContainerLabのインストール
最初vJunosを使って構築したかったのでJuniperのサイトを見てインストールしました
結局実行したコマンドは以下くらいで、すぐに環境は整いました
sudo apt update
sudo apt install docker.io
bash -c "$(curl -sL https://get.containerlab.dev)"
git clone https://github.com/hellt/vrnetlab/
ネットワーク機器のOS準備
私の環境だけかもしれないですがvjunosがなぜか起動にめちゃくちゃ時間がかかり、、
取り急ぎ勉強を進めたかったのでいまはvJunosはやめてAristaのcEOSを使用してますが、
vJunosのダウンロード手順も含めて以下に書いておきます
vJunos
以下juniperのDownloadサイトからダウンロード可能です
qcow2をクリックします
規約に同意します
CLICK HEREをクリックするとダウンロードがはじまります
ダウンロードできたら、winscpなどで仮想マシン上にOSファイルをアップロードしていきます
/vrnetlabというディレクトリ配下に各ベンダ毎のディレクトリが用意されているので、今回はvjunosswitchのディレクトリに配置します
root@clab:/home/clab/vrnetlab/vjunosswitch# pwd
/home/clab/vrnetlab/vjunosswitch
root@clab:/home/clab/vrnetlab/vjunosswitch# ll
total 3819672
drwxrwxrwx 3 root root 4096 Jul 8 10:25 ./
drwxr-xr-x 41 root root 4096 Jul 8 10:19 ../
drwxr-xr-x 2 root root 4096 Jul 8 10:51 docker/
-rw-r--r-- 1 root root 346 Jul 8 10:19 Makefile
-rw-r--r-- 1 root root 513 Jul 8 10:19 README.md
-rw-rw-r-- 1 clab clab 3911319552 Jul 8 04:58 vJunos-switch-23.4R2-S2.1.qcow2
root@clab:/home/clab/vrnetlab/vjunosswitch#
make
コマンドを実行すると、dockerイメージが作成されます
root@clab:/home/clab/vrnetlab/vjunosswitch# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vrnetlab/juniper_vjunos-router 23.4R2-S2.1 5d6eeac1efe1 6 weeks ago 4.13GB ★routerの方も同じ手順で入れました
vrnetlab/juniper_vjunos-switch 23.4R2-S2.1 c06e97cc52a3 6 weeks ago 4.4G ★
Arista cEOS
同じようにAristaもコンテナ版OSイメージをダウンロードしてきます
AristaのOSのダウンロードにはアカウント登録が必要です、手順は以下の個人ブログを参考にさせていただくとスムーズです
で、同じように仮想マシンにOSファイルを配置したら以下のコマンドでコンテナイメージを作成します
コンテナ版OSなのでvJunosみたいにmakeは不要
docker import cEOS64-lab-4.32.0F.tar.xz ceos:4.32.0F ##--OSファイルに合わせて変更
root@clab:/home/clab/vrnetlab/vjunosswitch# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ceos 4.32.0.1F b5df8aeb2023 4 weeks ago 2.4GB ★実行後
YAMLファイルの準備
組みたい構成をYAMLで記述していきます
書き方はContainerlabの公式サイトにも記載があるので参考に
Spine2台、Leaf3台のファブリックを組みたいだけなら以下をコピペでOK
#ポートフォワードでSSHしたかったのでPortsの指定をしてますが無視で大丈夫です
YAML
name: ceos_lab##--任意
topology:
nodes:
Spine001:
kind: arista_ceos
image: ceos:4.32.0.1F
ports:
- 2221:22
Spine002:
kind: arista_ceos
image: ceos:4.32.0.1F
ports:
- 2222:22
Leaf001:
kind: arista_ceos
image: ceos:4.32.0.1F
ports:
- 2231:22
Leaf002:
kind: arista_ceos
image: ceos:4.32.0.1F
ports:
- 2232:22
Leaf003:
kind: arista_ceos
image: ceos:4.32.0.1F
ports:
- 2233:22
Host1:
kind: linux
image: quay.io/frrouting/frr:10.4.0
ports:
- 2241:22
Host2:
kind: linux
image: quay.io/frrouting/frr:10.4.0
ports:
- 2242:22
Host3:
kind: linux
image: quay.io/frrouting/frr:10.4.0
ports:
- 2243:22
links:
- endpoints: ["Spine001:eth1", "Leaf001:eth1"]
- endpoints: ["Spine001:eth2", "Leaf002:eth1"]
- endpoints: ["Spine001:eth3", "Leaf003:eth1"]
- endpoints: ["Spine002:eth1", "Leaf001:eth2"]
- endpoints: ["Spine002:eth2", "Leaf002:eth2"]
- endpoints: ["Spine002:eth3", "Leaf003:eth2"]
- endpoints: ["Leaf001:eth3", "Host1:eth1"]
- endpoints: ["Leaf002:eth3", "Host2:eth1"]
- endpoints: ["Leaf003:eth3", "Host3:eth1"]
Containerlabの起動-停止-確認コマンド
起動
clab deploy -t {YAMLファイル名}
停止
clab destroy -t {YAMLファイル名}
起動確認
docker ps
clab inspect --topo {YAMLファイル名}
一応構成図も描写してくれますがこれはちょっとまぁ参考情報くらいでいいかもですね💦
clab graph -t {YAMLファイル名}
Edgesharkの準備
せっかく検証環境を作ったならパケットキャプチャまで追いかけたいのがエンジニアの性だと思うので、
そんな時はEdgesharkを使うとポチポチPCAP取れて便利です
Edgeshark
• EdgeSharkは、コンテナ間のLinuxネットワーク名前空間接続における通信を、リアルタイムかつGUIで可視化できるオープンソースのパケットキャプチャツール
• ContainerlabもNW名前空間でリンク接続しているため相性がよい
• CLIや複雑な設定不要で、“⾒たいところをクリック”するだけで使い慣れたWiresharkでリアルタイムにキャプチャー可能
※以下より引用させていただきました
引用元:
インストール
公式サイトに書いてある通りなのですが、このコマンドを入れるだけです
curl -sL \
https://github.com/siemens/edgeshark/raw/main/deployments/wget/docker-compose.yaml \
| DOCKER_DEFAULT_PLATFORM= docker compose -f - up -d
root@clab:/home/clab/clab-yaml# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d240a4138fa ghcr.io/siemens/packetflix "/packetflix --port=…" 8 days ago Up 6 days 5000/tcp, 0.0.0.0:5001->5001/tcp, :::5001->5001/tcp edgeshark-edgeshark-1
8e1f9792ca63 ghcr.io/siemens/ghostwire "/gostwire --http=[:…" 8 days ago Up 6 days edgeshark-gostwire-1
root@clab:/home/clab/clab-yaml#
上記コマンド後、仮想マシンのIP+Port5001にhttpアクセスでこんな画面が開きます
ノード毎に枠が作られていて、その中でキャプチャしたいInterfaceの横のサメのひれみたいなマークを押すと、PCAPを開くかどうかのポップアップがでます
⇒アイコンクリックだけでPCAPがすぐ取れるので非常に便利です
枠の右上の方の サメ2匹みたいなアイコンをクリックすると、複数Interfaceをまとめて1つのPCAPファイルで取得できます
おわり
自分の備忘もかねて一通り必要な情報はまとめました
Containerlab使ってみたいけど準備がめんどくさそう。。よくわからない。。という人がもしいらっしゃったらご参考いただけたらとおもいます
私もContainerlabをうまく活用しながら 知識を深めていけるように勉強がんばりますm(__)m