containerlab 구성하기
`containerlab` 폴더에 `git clone` 명령어로 샘플 Lab을 clone합니다.
[/home/ubuntu/containerlab]
$ git clone <https://github.com/diogo-arista/ceos-101.git>
다운로드 파일 중 `topology.yaml` 파일에 구성에 필요한 코드가 작성되어 있습니다.
다만, 코드에서 image 이름은 자신의 이미지 이름으로 변경해 줍니다. | 변경 후 → `image: ceos:4.34.2F`
이미지 명은 `docker import`로 생성했던 이미지 명과 동일해야 합니다.
- `topology.node`: Lab에 사용할 node(장비)를 나타냅니다. ceos1, ceos2 2대 사용
- `topology.links`: ceos1:eth1 ↔ ceos2:eth1 인터페이스를 연결합니다.
`clab deploy` 명령어로 Lab 환경을 배포합니다.
`clab deploy -t <topology-yaml-file-name>`
[/home/ubuntu/containerlab/ceos-101]
$ clab deploy -t topology.yaml
07:13:42 INFO Containerlab started version=0.69.3
07:13:42 INFO Parsing & checking topology file=topology.yaml
07:13:42 INFO Creating docker network name=clab IPv4 subnet=172.20.20.0/24 IPv6 subnet=3fff:172:20:20::/64 MTU=1500
07:13:42 INFO Creating lab directory path=/home/ubuntu/containerlab/ceos-101/clab-sample
07:13:43 INFO Creating container name=ceos2
07:13:43 INFO Creating container name=ceos1
07:13:43 INFO Running postdeploy actions for Arista cEOS 'ceos1' node
07:13:43 INFO Created link: ceos1:eth1 ▪┄┄▪ ceos2:eth1
07:13:43 INFO Running postdeploy actions for Arista cEOS 'ceos2' node
07:14:15 INFO Adding host entries path=/etc/hosts
07:14:15 INFO Adding SSH config for nodes path=/etc/ssh/ssh_config.d/clab-sample.conf
You are on the latest version (0.69.3)
╭───────┬──────────────┬─────────┬───────────────────╮
│ Name │ Kind/Image │ State │ IPv4/6 Address │
├───────┼──────────────┼─────────┼───────────────────┤
│ ceos1 │ ceos │ running │ 172.20.20.2 │
│ │ ceos:4.34.2F │ │ 3fff:172:20:20::2 │
├───────┼──────────────┼─────────┼───────────────────┤
│ ceos2 │ ceos │ running │ 172.20.20.3 │
│ │ ceos:4.34.2F │ │ 3fff:172:20:20::3 │
╰───────┴──────────────┴─────────┴───────────────────╯
`clab inspect` 명령어로 현재 구동중인 대상을 확인할 수 있습니다.
$ clab inspect -t topology.yaml
07:18:14 INFO Parsing & checking topology file=topology.yaml
╭───────┬──────────────┬─────────┬───────────────────╮
│ Name │ Kind/Image │ State │ IPv4/6 Address │
├───────┼──────────────┼─────────┼───────────────────┤
│ ceos1 │ ceos │ running │ 172.20.20.2 │
│ │ ceos:4.34.2F │ │ 3fff:172:20:20::2 │
├───────┼──────────────┼─────────┼───────────────────┤
│ ceos2 │ ceos │ running │ 172.20.20.3 │
│ │ ceos:4.34.2F │ │ 3fff:172:20:20::3 │
╰───────┴──────────────┴─────────┴───────────────────╯
`clab graph` 명령을 사용하면 YAML 파일을 기반으로 그래픽 토폴로지 다이어그램을 생성할 수 있습니다.
http://x.x.x.x:50080 주소로 접속 시 토폴로지 다이어그램을 확인할 수 있습니다.
$ clab graph -t topology.yaml
07:20:42 INFO Parsing & checking topology file=topology.yaml
07:20:42 INFO Serving topology graph on <http://0.0.0.0:50080>
통신 테스트
cEOS-lab 인스턴스가 실행되면 콘솔(Docker) 또는 ssh를 통해 장치에 연결할 수 있습니다.
ssh 연결의 경우 기본 계정인 `admin/admin`으로 접속 할 수 있습니다. 접속 주소는 컨테이너에 할당된 이름이나 IP 주소를 사용할 수 있습니다.
$ ssh ceos1
Warning: Permanently added 'ceos1' (ED25519) to the list of known hosts.
(admin@ceos1) Password:
ceos1>
ceos1>show version
Arista cEOSLab
Hardware version:
Serial number: 04BD4F4F34DFBF643B261F4CC5029051
Hardware MAC address: 001c.73dc.51f5
System MAC address: 001c.73dc.51f5
Software image version: 4.34.2F-43232954.4342F.1 (engineering build)
Architecture: i686
Internal build version: 4.34.2F-43232954.4342F.1
Internal build ID: c299317b-de14-4cc1-9295-3bcc7f091852
Image format version: 1.0
Image optimization: None
Kernel version: 6.8.0-1029-aws
Uptime: 10 minutes
Total memory: 15993676 kB
Free memory: 12954196 kB
ceos1>
ceos1>show lldp neighbors
Last table change time : 0:10:31 ago
Number of table inserts : 2
Number of table deletes : 0
Number of table drops : 0
Number of table age-outs : 0
Port Neighbor Device ID Neighbor Port ID TTL
---------- ------------------------ ---------------------- ---
Et1 ceos2 Ethernet1 120
Ma0 ceos2 Management0 120
ceos1, ceos2 두 장비에 접속하여 IP 설정 후 통신을 확인합니다. 통신 체크가 완료되었다면 원하는 실습을 진행하면 됩니다.
ceos1(config)#int Ethernet 1
ceos1(config-if-Et1)#no sw
ceos1(config-if-Et1)#ip add 10.10.10.1/24
ceos1(config-if-Et1)#end
ceos1#ping 10.10.10.2
PING 10.10.10.2 (10.10.10.2) 72(100) bytes of data.
80 bytes from 10.10.10.2: icmp_seq=1 ttl=64 time=0.086 ms
80 bytes from 10.10.10.2: icmp_seq=2 ttl=64 time=0.013 ms
80 bytes from 10.10.10.2: icmp_seq=3 ttl=64 time=0.008 ms
80 bytes from 10.10.10.2: icmp_seq=4 ttl=64 time=0.010 ms
80 bytes from 10.10.10.2: icmp_seq=5 ttl=64 time=0.009 ms
ceos2#
ceos2#conf t
ceos2(config)#int Ethernet 1
ceos2(config-if-Et1)#no sw
ceos2(config-if-Et1)#ip add 10.10.10.2/24
ceos2(config-if-Et1)#end
ceos2#ping 10.10.10.1
PING 10.10.10.1 (10.10.10.1) 72(100) bytes of data.
80 bytes from 10.10.10.1: icmp_seq=1 ttl=64 time=0.052 ms
80 bytes from 10.10.10.1: icmp_seq=2 ttl=64 time=0.014 ms
80 bytes from 10.10.10.1: icmp_seq=3 ttl=64 time=0.011 ms
80 bytes from 10.10.10.1: icmp_seq=4 ttl=64 time=0.011 ms
80 bytes from 10.10.10.1: icmp_seq=5 ttl=64 time=0.011 ms
토폴로지 제거하기
Lab 실습이 완료되었다면 토폴로지는 2가지 방법으로 제거할 수 있습니다.
- `clab destroy -t`: 작성한 토폴로지 제거 → node 설정 파일(startup config) 유지
- `clab destroy -ac`: 토폴로지 완전 초기화
`clab destroy -t` 명령어로 제거할 경우 컨테이너(node)는 제거되지만 `[node]/flash` 경로에 기존 설정 파일은 남아있습니다. 이후 재배포 시 기존 설정이 유지된 상태로 실행됩니다.
$ clab destroy -t topology.yaml
07:34:26 INFO Parsing & checking topology file=topology.yaml
07:34:26 INFO Parsing & checking topology file=topology.yaml
07:34:26 INFO Destroying lab name=sample
07:34:27 INFO Removed container name=ceos2
07:34:27 INFO Removed container name=ceos1
07:34:27 INFO Removing host entries path=/etc/hosts
07:34:27 INFO Removing SSH config path=/etc/ssh/ssh_config.d/clab-sample.conf
`clab destroy -ac` 명령어로 제거 시 토폴로지 및 설정 파일까지 완전 초기화됩니다. 이후 재배포 시 초기 상태부터 구성이 진행됩니다.
$ clab destroy -ac topology.yaml
07:36:34 WARN The following labs will be removed:
labs=
│ 1. Topology: /home/ubuntu/containerlab/ceos-101/topology.yaml
│ Lab Dir: /home/ubuntu/containerlab/ceos-101/clab-sample
Are you sure you want to remove all labs listed above? Enter 'y', to confirm or ENTER to abort: y
07:36:43 INFO Parsing & checking topology file=topology.yaml
07:36:43 INFO Destroying lab name=sample
07:36:43 INFO Removed container name=ceos1
07:36:43 INFO Removed container name=ceos2
07:36:43 INFO Removing host entries path=/etc/hosts
07:36:43 INFO Removing SSH config path=/etc/ssh/ssh_config.d/clab-sample.conf
ubuntu@ip-172-31-7-238:~/containerlab/ceos-101$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
네트워크 실습 툴인 Containerlab을 이용해 실습을 해보았습니다. 로컬 PC에서 VM단위로 실행되는 다른 가상화 툴과는 달리 container 환경으로 구동되어 배포가 쉽고 빠르며 클라우드 VM환경에서 사용할 수 있는 큰 장점이 있습니다. (대게 클라우드 VM 환경은 중첩 가상화를 지원하지 않아 기존 툴로 실습은 어렵습니다…!!) 이를 통해 실습 중 성능이 부족할 경우 스케일 업을 통해 간단하게 해결할 수 있습니다.
[참고 사이트]
containerlab ceos: https://containerlab.dev/manual/kinds/ceos/
Software Download: https://www.arista.com/en/support/software-download
Virtual Labs with Arista cEOS-Lab in Containerlab: https://www.youtube.com/watch?v=uULjjQTjzWA
Getting Started with cEOS-lab in Containerlab: https://arista.my.site.com/AristaCommunity/s/article/Getting-Started-with-cEOS-lab-in-Containerlab
cEOS-lab on OrbStack: https://arista.my.site.com/AristaCommunity/s/article/cEOS-lab-on-Orbstack
cEOS-lab in Github Codespaces: https://arista.my.site.com/AristaCommunity/s/article/cEOS-lab-in-Github-Codespaces
'Network' 카테고리의 다른 글
[containerlab] AWS EC2(ubuntu)에 containerlab 설치하기 - 네트워크 실습 (1) (0) | 2025.09.02 |
---|---|
[F5] iRules 구문 분석 (1) | 2025.03.23 |
[Network] M3 Mac에 네트워크 시뮬레이터 eve-ng 설치하기 (2) | 2025.03.16 |
[Zabbix] Linux snmpget, snmpwalk로 snmp 조회하기 (1) | 2024.11.10 |
[F5] HTTP/2 헤더 개수 제한 이슈 해소 기록 (ERR_HTTP2_PROTOCOL_ERROR) (0) | 2024.10.23 |