📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 161편
이전 글: 160. 네트워크 장비 연결 구조 · 다음 글: 162. Switch의 Frame Forwarding
MAC Address Table은 스위치가 "어떤 MAC 주소가 어느 포트 뒤에 있는가"를 기억해 두는 표입니다. 하드웨어 구현에서 CAM(Content Addressable Memory) 테이블이라고도 부르며, Linux bridge에서는 FDB(Forwarding Database)라고 부릅니다.
스위치가 프레임을 어느 포트로 보낼지 결정하는 전체 흐름은 162. Switch의 Frame Forwarding에서 다루고, 이 글은 테이블 자체, 즉 항목이 어떻게 생기고 사라지며 관제에서 어떻게 쓰이는지에 집중합니다.
| 열 | 의미 | 예 |
|---|---|---|
| VLAN | 항목이 속한 VLAN (같은 MAC도 VLAN별로 따로 기록) | 10 |
| MAC Address | 학습한 출발지 MAC | 000c.29aa.bb01 (Cisco 표기) |
| Type | 항목 유형 | DYNAMIC, STATIC |
| Port | 그 MAC이 연결된 포트 | Gi0/1 |
| 항목 유형 | 생기는 방법 | 사라지는 조건 |
|---|---|---|
| Dynamic | 들어온 프레임의 출발지 MAC을 자동 학습 | Aging 시간 동안 해당 MAC의 프레임이 없을 때, 링크 다운 |
| Static | 관리자가 수동 등록 | 관리자가 삭제할 때 |
| Secure | 포트 보안 기능이 허용 MAC으로 등록 | 설정에 따라 유지 또는 Aging |
스위치는 출발지 MAC으로 학습하고, 목적지 MAC으로 조회합니다. 테이블에 관한 핵심 동작은 다음 세 가지입니다.
프레임 수신 (포트 Gi0/1, VLAN 10, src MAC = A)
↓
[학습] (VLAN 10, A) 항목이 있는가?
├─ 없음 → (VLAN 10, A, Gi0/1) 새로 등록
├─ 있음, 같은 포트 → Aging 타이머만 초기화
└─ 있음, 다른 포트 → 포트를 Gi0/1로 갱신 (MAC 이동)
↓
[Aging] 일정 시간(Cisco·Linux bridge 기본 300초) 동안
A에서 프레임이 없으면 항목 삭제
↓
[용량] 테이블이 가득 차면 새 MAC을 학습하지 못함
→ 그 MAC으로 가는 프레임은 "모르는 목적지"로 처리(Flooding)
MAC 이동은 단말이 다른 자리로 옮겼을 때 정상적으로 생기지만, 짧은 시간에 두 포트 사이를 반복해서 오가면 스위치 루프나 MAC 위조를 의심할 수 있습니다(Cisco 계열은 %SW_MATM-4-MACFLAP_NOTIF 로그를 남김).
테이블 용량은 장비마다 정해져 있습니다(소형 스위치 수천 개 ~ 대형 장비 수십만 개). 한 포트에서 짧은 시간에 수많은 가짜 출발지 MAC이 들어오면 테이블이 가득 차서, 스위치가 정상 단말 트래픽까지 여러 포트로 뿌리게 됩니다. 이를 MAC Flooding(CAM 테이블 범람) 이라 하며, 결과적으로 같은 VLAN의 다른 포트에서 남의 트래픽이 보일 수 있습니다.
관제에서 테이블을 볼 때 구분해야 할 포트 종류입니다.
| 포트 종류 | 학습되는 MAC | 위치 추적 의미 |
|---|---|---|
| Access 포트(단말 포트) | 보통 1~몇 개 | 단말의 물리 위치(자리) |
| 업링크·Trunk 포트 | 다른 스위치 뒤의 수많은 MAC | 위치 아님 → 다음 스위치로 추적 계속 |
| IP 전화 연결 포트 | 전화 + 뒤쪽 PC (2개) | 정상 |
| 가상화 호스트 연결 포트 | VM 수만큼 여러 개 | 정상 (예외 관리 필요) |
단말 위치 추적은 IP만 알고 있을 때 다음 순서로 합니다.
의심 IP 192.168.10.31
↓ 게이트웨이(L3 장비)의 ARP 테이블 → MAC 000c.29aa.bb01
↓ Core 스위치 MAC 테이블에서 조회 → 포트 Gi1/0/24 (업링크)
↓ LLDP·CDP로 연결된 하위 스위치 확인
↓ 하위 Access 스위치 MAC 테이블에서 조회 → 포트 Gi0/7 (단말 포트)
↓ 포트 배선 기록·자산 대장 → 위치·사용자
실습 예시 — GNS3 등에서 Cisco IOS 계열 스위치 이미지를 쓸 때의 확인 명령입니다. 출력은 형식 예시(값은 환경마다 다름)이며, 명령은 제조사·OS 버전에 따라 다릅니다.
Switch# show mac address-table dynamic vlan 10
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
10 000c.29aa.bb01 DYNAMIC Gi0/1
10 000c.29aa.bb02 DYNAMIC Gi0/2
Switch# show mac address-table address 000c.29aa.bb01
Switch# show mac address-table count
Switch# show mac address-table aging-time
실습 예시 — Linux bridge에서는 FDB로 같은 정보를 봅니다(Rocky/Ubuntu 공통, 152. Switch란 무엇인가의 br0 실습망 기준).
# 학습된 항목 (permanent는 브리지 자신의 로컬 주소)
bridge fdb show br br0 | grep -v permanent
# Aging 시간 확인 — ip 명령은 1/100초 단위로 표시 (30000 = 300초)
ip -d link show br0 | grep -o 'ageing_time [0-9]*'
# 정적 항목 등록·삭제 예시
sudo bridge fdb add 00:0c:29:aa:bb:03 dev ens38 master static
sudo bridge fdb del 00:0c:29:aa:bb:03 dev ens38 master
📷 [실습 화면 삽입 위치] 한 VM에서 ping을 멈춘 뒤 약 5분이 지나
bridge fdb show br br0결과에서 해당 MAC 항목이 사라진 전후 비교 화면
| 흔적 | 확인할 수 있는 것 |
|---|---|
| MAC 테이블 조회 결과 | 의심 단말의 스위치·포트(물리 위치) |
| MAC 이동·Flapping 로그 | 루프, 위조, 이중 연결 가능성 |
| 포트 보안 위반 로그 | 한 포트의 MAC 수 초과, 미허용 MAC |
| 포트별 MAC 수 추이 | 단말 포트에 갑자기 많은 MAC → 범람 또는 비인가 스위치 연결 |
관제자가 확인할 질문
오탐 주의: MAC 테이블은 현재 상태만 보여 주고 이력을 남기지 않습니다. 사건 후 시간이 지나면 항목이 Aging으로 사라지므로, 필요한 경우 즉시 조회해 기록하고, 이력이 필요하면 NAC·스위치 로그 수집을 활용합니다.
show mac address-table, Linux bridge fdb show로 같은 정보를 확인할 수 있습니다.