gnu-gnu GitHub avatar

network-fundamentals-lab

gnu-gnu

A hands-on, step-by-step network troubleshooting lab series that reproduces failures to teach fundamental TCP/IP concepts using containerlab and netshoot.

Stars

56

7-day growth

No data

Forks

3

Open issues

0

License

No data

Last updated

2026-07-13

AI repository intelligence
FR-AI / ANALYSIS

Why it is worth attention

It provides a structured, vendor-neutral approach to learning network fundamentals by making failure the default state, then guiding users through observation and repair, with detailed walkthroughs and a web viewer for self-paced learning.

Who it is for

  • Network engineers seeking hands-on fundamentals training
  • DevOps and SRE professionals needing practical troubleshooting skills
  • Students or newcomers to networking who want applied experience
  • Technical trainers or onboarding teams for infrastructure roles

Use cases

  • Individual self-study to build core networking diagnostics skills
  • Team onboarding programs to standardize troubleshooting knowledge
  • Classroom or workshop environments for interactive network labs
  • Preparing for certification or real-world network issue debugging

Strengths

  • Covers essential L2, L3, transport, NAT, MTU, and DNS topics with reproducible failures
  • All labs use containerlab and netshoot, ensuring portability across Linux and macOS (via Docker)
  • Each lab includes a walkthrough with actual commands and output, enabling self-correction
  • Includes blind checkpoints (CP-1, CP-2) to test understanding without hints

Considerations

  • Requires containerlab and Docker; macOS users need a wrapper script and Docker Desktop
  • Some scenarios (e.g., L2 broadcast storms) can impact host performance if not carefully bounded
  • The repository assumes basic familiarity with IP and subnet notation, which may be a barrier for absolute beginners

README quick start

네트워크 트러블슈팅 시리즈 (기본기 중심)

TCP/IP 기본 원리 하나를 잡고, 그 개념이 깨졌을 때 나는 장애를 직접 재현→관찰→수정하며 체득하는 실습 시리즈. 클라우드 특정 기능이 아니라 어디서든 통하는 네트워크 기본기를 다룬다. (AWS·K8s 등은 "실무 사례"로만 인용)

철학 / 공통 포맷

각 편은 아래 순서를 따른다:

  1. 개념 한 장 — 이 편이 가르치는 원리
  2. 토폴로지 — 최소 구성
  3. 재현(고장) — 기본 상태가 "고장"
  4. 관찰tcpdump/traceroute/ip 로 증상 읽기
  5. 원인 — 왜 깨지는가
  6. 한 줄 수정(고침) — 토글 한 줄로 정상화
  7. 교훈 — 일반화된 원리

공통 환경 / 도구 (벤더 중립)

  • containerlab + nicolaka/netshoot(ip/iproute2, nftables/iptables, socat, nc, tcpdump, curl, mtr)
  • 동적 라우팅 편만 FRR(frrouting/frr)
  • 각 편 = 폴더 하나: NN-topic/ 안에 *.clab.yml + README.md(재현·수정 절차) + fix.sh + WALKTHROUGH.md
  • WALKTHROUGH.md = 모범 답안: 전체 명령을 실제 실행한 기록 — 단계마다 의도 → 실측 결과 → 해석. 권장 사용법: 먼저 README만 보고 스스로 실습 → 막히거나 끝낸 뒤 WALKTHROUGH와 대조 (처음부터 답안을 펴면 진단 근육이 안 붙는다)
  • 웹 뷰어: walkthrough.html — 전 장 모범답안을 한 페이지에서 단계별로 넘겨보기(←/→), 명령 복사 버튼 포함. 브라우저로 열면 되고, WALKTHROUGH.md 수정 후엔 python3 tools/build-walkthrough.py로 재생성.
  • 원칙: 고장이 기본값, 수정은 docker exec ... ip route replace ... 같은 한 줄로.

실행 방법

Linux (containerlab 설치된 경우)

cd 01-l2-arp && sudo containerlab deploy -t 01-l2-arp.clab.yml

macOS / containerlab 미설치 (Docker만 있으면) — clab.sh 래퍼

macOS는 containerlab이 호스트 netns/veth를 직접 다루지 못해서, containerlab을 컨테이너로 띄워 Docker Desktop VM 위에서 돌린다(clab.sh가 감싼다: --privileged --pid=host --network=host + docker.sock).

# 저장소 루트(network-lab/)에서. 토폴로지 경로는 repo 기준 상대경로.
chmod +x clab.sh                                   # 최초 1회
./clab.sh deploy   01-l2-arp/01-l2-arp.clab.yml
./clab.sh inspect  01-l2-arp/01-l2-arp.clab.yml
docker exec -it clab-01-l2-arp-h1 bash             # 노드 접속(진단)
./clab.sh destroy  01-l2-arp/01-l2-arp.clab.yml
  • 노드 이미지(netshoot 등)는 자동으로 받는다. (검증 환경: macOS/Apple Silicon + Docker Desktop)
  • 관리망 겹침 주의: 각 topo의 mgmt.ipv4-subnet 이 이미 쓰는 docker 네트워크와 겹치면 배포가 실패한다 → 겹치지 않는 좁은 /24로 변경(이 저장소는 10.99.99.0/24 사용, 회사 172.0.0.0/12 회피).

EC2 (Amazon Linux 2023) — 신입 파일럿 / 공용 실습 호스트

로컬 Docker Desktop 없이 EC2에서 그대로 돌릴 수 있다 (실측 검증됨 — clab.sh 경로 그대로, 문서 수정 없이 전 장 동일 재현).

권장 구성

항목이유
AMI / 타입AL2023, t3.medium (x86)x86이면 17장 FRR이 네이티브 (arm64는 에뮬레이션 필요)
디스크gp3 24GB이미지 캐시 포함 여유
네트워크프라이빗 서브넷 + NAT (퍼블릭 IP·SSH 키·인바운드 불필요)접속은 SSM Session Manager
IAMAmazonSSMManagedInstanceCore 붙은 인스턴스 프로파일SSM 접속/원격 실행

Description

Hands-on network troubleshooting labs — break, observe, and fix core TCP/IP concepts using containerlab

Related repositories

Similar projects matched by category, topics, and programming language.

ddosi
Featured
ddosi GitHub avatar

PacketLens

PacketLens is a pure front-end, offline pcap analysis tool that runs entirely in the browser, supporting deep protocol decoding, HTTPS decryption, and million-packet instant loading without any backend.

HTML
19
ViffyGwaanl
Featured
ViffyGwaanl GitHub avatar

kimi-k3-learn

An interactive learning system that turns the 47-page Kimi K3 technical report into a single offline HTML file with running algorithms, 3D visualizations, spaced repetition quizzes, and a smart highlighting QA tool.

AI & Machine Learning
15
iamtechartist
Featured
iamtechartist GitHub avatar

human-cell-visualizer

An interactive 3D visualization of three human cell types using Three.js, WebGL particles, and custom GLSL shaders, allowing users to rotate, zoom, morph, and explore annotated structures.

Design & Creative
13