📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 167편
이전 글: 166. 802.1Q · 다음 글: 168. Broadcast Domain
VLAN은 L2에서 네트워크를 나눕니다(163. VLAN이란 무엇인가). 서로 다른 VLAN의 장치는 같은 스위치에 연결되어 있어도 프레임을 직접 주고받지 못하므로, 통신하려면 L3 장비가 한 VLAN에서 받은 패킷을 다른 VLAN으로 라우팅해야 합니다. 이것이 Inter-VLAN Routing입니다.
이를 위해 각 VLAN에는 보통 서브넷 하나와 게이트웨이 주소(예: VLAN 10 → 192.168.10.1)가 주어지고, 단말은 다른 VLAN으로 가는 패킷을 이 게이트웨이로 보냅니다. 게이트웨이의 개념은 154. Gateway란 무엇인가를 참고합니다.
| 구현 방식 | 구성 | 장점 | 단점 |
|---|---|---|---|
| VLAN별 물리 인터페이스 | 라우터 포트 N개 ↔ 스위치 Access 포트 N개 | 단순 | VLAN 수만큼 포트·케이블 필요 |
| Router-on-a-stick | 라우터(또는 방화벽) 포트 1개 ↔ 스위치 Trunk, 서브인터페이스 | 포트 1개로 해결 | 모든 VLAN 간 트래픽이 링크 하나에 집중 |
| L3 스위치 SVI | 스위치 내부의 VLAN 인터페이스(interface Vlan10) | 고속, 추가 장비 불필요 | 기본적으로 모든 VLAN 간 통신 허용 |
VLAN 10의 PC-A(192.168.10.11)가 VLAN 20의 SRV-1(192.168.20.21)에 접속할 때의 흐름입니다(Router-on-a-stick 기준).
PC-A: 목적지가 다른 서브넷 → 게이트웨이 192.168.10.1의 MAC을 ARP로 조회
↓ 프레임: src MAC=PC-A, dst MAC=라우터, IP TTL=64
스위치: Access(VLAN 10) 수신 → Trunk로 VID 10 태그를 붙여 라우터로
↓
라우터 서브인터페이스 .10 수신 → 라우팅 테이블 조회 → 출구 .20
↓ L2 헤더 교체: src MAC=라우터, dst MAC=SRV-1 / TTL 64→63 / VID 20 태그
스위치: Trunk 수신(VID 20) → 태그 제거 → Access(VLAN 20) → SRV-1
이 과정에서 바뀌는 값과 바뀌지 않는 값이 관제 해석의 기준이 됩니다.
| 값 | 라우팅 전 → 후 | 관제 의미 |
|---|---|---|
| 출발지·목적지 IP | 그대로 (NAT가 없다면) | 로그 간 대조의 기준 |
| 출발지 MAC | PC-A → 라우터 | 서버 쪽에서는 단말 MAC을 볼 수 없음 |
| TTL | 1 감소 | 홉 수 추정 근거 |
| VLAN ID | 10 → 20 | 두 구역을 넘었다는 증거 |
Inter-VLAN Routing 지점은 곧 VLAN 간 통신의 통제 지점이자 로그 지점입니다. 어디서 라우팅하느냐에 따라 보안 통제와 로그가 달라집니다.
| 라우팅 지점 | 기본 동작 | 통제 방법 | 남는 로그 |
|---|---|---|---|
| L3 스위치 SVI | 모든 VLAN 간 허용 | ACL(VLAN 인터페이스에 적용) | ACL 로그(설정 시), Flow |
| 라우터 서브인터페이스 | 모든 VLAN 간 허용 | ACL | ACL 로그, Flow |
| 방화벽 서브인터페이스 | 정책에 없는 통신 차단 | 방화벽 정책(Stateful) | 세션 허용·차단 로그 |
규모가 있는 조직은 사용자 VLAN 간 라우팅은 L3 스위치에서, 서버·관리 구역으로 가는 라우팅은 방화벽에서 하는 식으로 섞어 씁니다. 이 구성을 알아야 "어느 장비의 로그를 봐야 하는가"를 정할 수 있습니다(160. 네트워크 장비 연결 구조).
실습 예시 — GNS3 등의 Cisco IOS 계열 장비 설정 예입니다. 주소·VLAN 번호는 예시(값은 환경마다 다름)이며, 스위치의 라우터 연결 포트는 VLAN 10·20을 허용하는 Trunk여야 합니다(165. Trunk Port).
! Router-on-a-stick (라우터)
interface GigabitEthernet0/0
no shutdown
interface GigabitEthernet0/0.10
encapsulation dot1Q 10
ip address 192.168.10.1 255.255.255.0
interface GigabitEthernet0/0.20
encapsulation dot1Q 20
ip address 192.168.20.1 255.255.255.0
! L3 스위치 SVI 방식
ip routing
interface Vlan10
ip address 192.168.10.1 255.255.255.0
interface Vlan20
ip address 192.168.20.1 255.255.255.0
확인 명령은 show ip interface brief, show ip route connected입니다.
실습 예시 — Linux VM을 Router-on-a-stick으로 쓰는 구성입니다(Rocky/Ubuntu 공통). ens37이 스위치(또는 VLAN 필터링 브리지)의 Trunk 포트에 연결되어 있다고 가정하며, 설정은 재부팅 시 사라집니다.
sudo ip link add link ens37 name ens37.10 type vlan id 10
sudo ip link add link ens37 name ens37.20 type vlan id 20
sudo ip addr add 192.168.10.1/24 dev ens37.10
sudo ip addr add 192.168.20.1/24 dev ens37.20
sudo ip link set ens37.10 up && sudo ip link set ens37.20 up
sudo sysctl -w net.ipv4.ip_forward=1
# Rocky는 firewalld가 인터페이스 간 전달을 막을 수 있으므로 정책 확인
sudo firewall-cmd --get-active-zones
📷 [실습 화면 삽입 위치] VLAN 10의 VM에서 VLAN 20의 VM으로
traceroute -n실행 시 첫 홉에 192.168.10.1이 나타나고, 라우터 VM의tcpdump -e -nn -i ens37 vlan에서 같은 패킷이 VID 10으로 들어와 VID 20으로 나가는 화면
| 흔적 | 확인할 수 있는 것 |
|---|---|
| 방화벽 세션 로그 | 방화벽이 라우팅하는 VLAN 간 허용·차단 |
| L3 스위치·라우터 ACL 로그, Flow | ACL로 차단된 VLAN 간 시도, 통신량 |
| 서버 쪽 캡처 | 출발지 MAC이 게이트웨이 MAC이고 TTL이 1 줄었으면 다른 VLAN에서 온 것 |
| 스위치 설정 로그 | SVI·서브인터페이스 추가, ACL 변경 |
관제자가 확인할 질문
오탐 주의: L3 스위치에서 라우팅되는 트래픽은 경계 방화벽 로그에 전혀 나타나지 않습니다. "방화벽 로그에 없다"를 "통신이 없었다"로 판단하지 않고, 해당 구간의 라우팅 지점을 먼저 확인합니다.