안동민 개발노트 아이콘

안동민 개발노트

3장 : 물리 계층과 데이터 링크 계층

VLAN과 2계층 보안

스위치가 MAC 주소를 기반으로 프레임을 정확한 포트에 전달한다는 것을 배웠습니다. 하지만 현실의 네트워크에서는 단순히 프레임을 전달하는 것만으로는 부족합니다. 부서별로 네트워크를 논리적으로 분리해야 하고, 데이터 링크 계층에서 발생할 수 있는 보안 위협에도 대비해야 합니다.


VLAN의 개념과 목적

VLAN(Virtual LAN)은 하나의 물리적 스위치 인프라를 여러 개의 논리적 2계층 네트워크로 분리하는 기술입니다. 같은 스위치에 연결되어 있어도 VLAN이 다르면 브로드캐스트 도메인이 분리되고, 통신은 L3 게이트웨이와 정책을 거쳐야 합니다.

VLAN 효과설명
브로드캐스트 도메인 축소ARP, DHCP 같은 브로드캐스트 범위를 VLAN 안으로 제한
2계층 분리VLAN 간 직접 L2 전달은 차단하고 L3 정책 지점을 만듦
유연한 그룹핑물리적 위치와 무관하게 부서, 서비스, 보안 구역 구성
정책 적용VLAN 단위로 QoS, ACL, DHCP 스누핑 같은 정책 적용

VLAN은 방화벽 자체는 아닙니다. VLAN 간 통신이 필요하면 L3 게이트웨이를 통해 라우팅하고, 이 지점에서 ACL이나 방화벽 정책을 적용해야 합니다. 예를 들어 개발팀은 재무팀 서버에 접근할 수 없다는 규칙은 VLAN 분리만으로 끝나는 것이 아니라 L3 정책으로 완성됩니다.


VLAN 종류

종류기준설명
포트 기반 VLAN스위치 포트가장 흔한 방식, 액세스 포트에 VLAN ID를 할당
MAC 기반 VLANMAC 주소지원 장비에서 단말 MAC으로 VLAN을 배정, 운영 복잡도 큼
프로토콜 기반 VLANL3 프로토콜IPv4/IPv6 등 프로토콜별 분류가 필요한 특수 환경
서브넷 기반 VLANIP 서브넷IP 대역 기준으로 분류하는 정책형 VLAN 구성

트렁크 포트와 802.1Q

여러 스위치에 걸쳐 같은 VLAN을 운영하려면 트렁크 포트(Trunk Port)가 필요합니다. 액세스 포트는 보통 단말에게 태그 없는 프레임을 보내고, 트렁크 포트는 여러 VLAN의 프레임을 802.1Q 태그로 구분해 운반합니다.

802.1Q 태그 구조

802.1Q 태그는 원래 이더넷 프레임의 출발지 MAC 뒤에 4바이트를 삽입합니다. TPID는 0x8100으로 태그 프레임임을 표시하고, TCI 안에는 PCP 3비트, DEI 1비트, VLAN ID 12비트가 들어갑니다.

VLAN ID 필드는 12비트라서 04095 값을 표현할 수 있지만, VLAN 0과 4095는 예약되어 일반 VLAN으로 쓰지 않습니다. 실무에서 사용할 수 있는 VLAN ID는 보통 14094이며, 많은 장비에서 VLAN 1이 기본 VLAN 또는 기본 native VLAN로 설정되어 있지만 운영망에서는 native VLAN을 의도적으로 바꾸고 미사용 VLAN으로 두는 경우가 많습니다.


Inter-VLAN 라우팅

VLAN 간 통신에는 L3 라우팅 기능이 필요합니다. 구현 방식은 장비 규모와 트래픽량에 따라 달라집니다.

방식구성장단점
라우터 + 각 VLAN별 물리 포트물리 인터페이스 1:1단순하지만 포트 소모가 큼
Router-on-a-Stick하나의 트렁크 링크 + 서브인터페이스경제적이지만 트렁크 링크가 병목이 될 수 있음
L3 스위치SVI를 만들어 스위치 내부에서 라우팅캠퍼스망에서 흔하며 장비 성능에 따라 고속 처리

MAC 플러딩 공격

MAC 플러딩(MAC Flooding)은 스위치의 MAC 주소 테이블을 고의로 압박하는 공격입니다. 공격자가 대량의 가짜 출발지 MAC 주소를 보내면 스위치는 계속 학습을 시도하고, 장비 동작에 따라 일부 unknown unicast 프레임이 여러 포트로 플러딩될 수 있습니다.

방어 방법: 포트 보안(Port Security)

# Cisco 스위치 포트 보안 설정 예시
interface GigabitEthernet0/1
 switchport mode access
 switchport port-security
 switchport port-security maximum 5        # 최대 5개 MAC
 switchport port-security violation shutdown # 위반 시 포트 차단
 switchport port-security aging time 60     # 60분 에이징
위반 동작설명
shutdown포트를 err-disable 상태로 내려 가장 엄격하게 차단
restrict위반 프레임 폐기 + 로그/SNMP 알림
protect위반 프레임 폐기, 알림은 제한적

포트 보안 명령과 위반 모드는 벤더별 구현이 다릅니다. 위 예시는 Cisco 계열 설정을 이해하기 위한 예시로 보면 됩니다.


ARP 스푸핑 공격과 방어

ARP 스푸핑(ARP Spoofing)은 위조 ARP 메시지로 IP-MAC 매핑을 오염시켜 중간자 공격(MITM)이나 트래픽 우회를 시도하는 공격입니다.

방어 방법

방어 기술계층설명
DAI (Dynamic ARP Inspection)L2DHCP 스누핑 바인딩 또는 정적 항목으로 ARP 패킷 검증
정적 ARP 항목L2/L3게이트웨이처럼 중요한 IP-MAC 매핑을 고정
DHCP 스누핑L2신뢰할 수 없는 포트의 서버성 DHCP 메시지 차단
802.1XL2포트 접속 시 단말 인증 요구
HTTPS/TLSL7ARP 스푸핑 상황에서도 애플리케이션 데이터 내용을 암호화
arp_spoof_detect.sh
# ARP 테이블에서 중복 MAC 단서 확인
# 같은 MAC이 여러 IP에 매핑되면 조사 대상이지만, 가상화/프록시 ARP 환경에서는 정상일 수도 있음
arp -a | awk '{print $4}' | sort | uniq -d

# arpwatch로 ARP 변화 모니터링
sudo arpwatch -i eth0

# arping으로 IP 충돌/스푸핑 감지
sudo arping -D -c 3 192.168.1.1

DHCP 스누핑

DHCP 스누핑은 스위치가 DHCP 트래픽을 검사하여 악성 DHCP 서버나 비정상 DHCP 메시지를 차단하는 보안 기능입니다.

공격자가 자신의 DHCP 서버를 가동하면 클라이언트에게 가짜 게이트웨이, DNS, IP 대역을 배포할 수 있습니다. DHCP 스누핑은 신뢰할 수 있는 포트(Trusted)에서 들어온 서버성 DHCP 메시지만 허용하고, 클라이언트 포트는 기본적으로 Untrusted로 두는 방식으로 방어합니다.

포트 유형DHCP 요청DHCP 응답설정 대상
Trusted허용허용실제 DHCP 서버 연결 포트
Untrusted허용차단클라이언트 연결 포트 (기본값)

DHCP 스누핑 바인딩 테이블은 어떤 IP가 어떤 MAC에 할당되었는지를 기록합니다. 이 테이블은 DAI(Dynamic ARP Inspection)의 검증 기준으로도 사용됩니다.

이것으로 물리 계층과 데이터 링크 계층의 핵심 내용을 살펴보았습니다. 다음 장에서는 한 단계 위인 네트워크 계층으로 올라가, 서로 다른 네트워크를 연결하는 IP 주소와 서브넷을 다루겠습니다.