네트워크의 규모가 커짐에 따라 보안 강화와 브로드캐스트 트래픽 제어는 필수적인 요소가 된다.
이를 해결하는 핵심 기술이 바로 VLAN(Virtual Local Area Network)이다.
VLAN의 개념과 스위치 포트의 엑세스(Access) 및 트렁크(Trunk) 모드의 차이를 알아보고, Cisco Packet Tracer로 VLAN 구성을 해보자.
1. VLAN의 핵심 개념
1️⃣ VLAN이란?
VLAN은 물리적 위치에 구애받지 않고 네트워크를 논리적으로 분할하는 기술이다.
하나의 물리적 스위치를 여러 개의 가상 스위치로 나누어 사용하는 것과 같은 효과를 준다.
- 브로드캐스트 도메인 분리: 네트워크 전체에 뿌려지는 브로드캐스트 패킷의 범위를 제한하여 네트워크 성능을 최적화한다.
- 보안성 향상: 서로 다른 VLAN 간의 통신은 기본적으로 차단되므로, 부서별 또는 목적별로 데이터를 격리할 수 있다.
- 유연성: 물리적인 배선 수정 없이 소프트웨어 설정만으로 네트워크 구조를 변경할 수 있다.
🟢물리적 구성 vs 논리적 구성
물리적으로는 하나의 스위치에 모든 PC가 연결되어 있지만, VLAN 설정을 통해 마치 별개의 스위치에 연결된 것처럼 분리되는 개념이다.

2️⃣ 주요 포트 모드: Access vs Trunk
스위치 포트는 연결되는 대상에 따라 두 가지 모드로 설정된다.
- Access Mode (엑세스 모드):
- 하나의 포트가 단 하나의 VLAN에만 속한다.
- 주로 PC, 서버, 프린터 등 단말(End Device)을 연결할 때 사용한다.
- Trunk Mode (트렁크 모드):
- 하나의 포트를 통해 여러 개의 VLAN 트래픽을 동시에 전송한다.
- 스위치와 스위치, 혹은 스위치와 라우터를 연결할 때 사용한다.
- 각 패킷이 어떤 VLAN 소속인지 구분하기 위해 VLAN 태깅(Tagging) 과정이 추가된다.
2. 실습 환경 구성
1️⃣ 네트워크 구성도

2️⃣ VLAN 설정 전 통신 가능 여부 (Default: VLAN 1)
시스코 스위치를 처음 켜면 모든 인터페이스는 기본적으로 VLAN 1에 소속되어 있다.
따라서 VLAN을 나누기 전에는 모든 장비가 하나의 브로드캐스트 도메인(Broadcast Domain) 안에 묶여 있는 상태다.

- 논리적 단일 네트워크: SW1의 Fa0/1, Fa0/24와 SW2의 Fa0/24, Fa0/1이 모두 같은 'VLAN 1'이라는 가상의 방에 들어가 있는 것과 같다.
- 포트의 역할: 스위치 간 연결된 Fa0/24 포트 역시 별도의 설정을 하지 않았다면 Access Port(VLAN 1)로 동작한다.
- 데이터의 흐름: PC1이 보낸 프레임은 SW1의 VLAN 1로 들어와서, 같은 VLAN 1 멤버인 Fa0/24를 통해 나간다. SW2의 Fa0/24 역시 VLAN 1 멤버이므로 이 프레임을 받아 같은 VLAN 1 멤버인 PC3(Fa0/1)에게 전달한다.
즉, 물리적으로는 스위치가 나뉘어 있지만 논리적으로는 하나의 스위치에 모든 단말이 연결된 것과 다름없는 상태다.

CLI 창에서 sh vlan b (show vlan brief) 명령어를 쳐보면 현재 디폴트 VLAN 1만 존재하고 모든 포트가 다 VLAN 1에 들어가 있는 것을 확인할 수 있다.

위 그림처럼 모든 포트가 기본값인 VLAN 1에 속해 있을 때 ping 테스트를 해보면 통신 결과가 다음과 같이 나온다.
- PC1 ↔ PC3: 동일 네트워크(10.10.10.0/24) 및 동일 VLAN이므로 통신 성공.

- PC1 ↔ PC2: 동일 VLAN이지만 서로 다른 네트워크 대역을 사용하므로 통신 실패. (3계층 라우팅 필요)

3. VLAN 생성 및 엑세스 포트 설정
스위치에서 VLAN을 생성하고 각 포트에 할당하는 과정이다.
여기서는 VLAN 10(name: v10)과 VLAN 20(name: v20)을 생성하도록 한다.
먼저 각 스위치를 구분하기 위해 이름을 설정하고, 필요한 VLAN을 생성한 뒤 각 포트에 할당한다.
먼저 SW1을 설정하고 SW2도 동일하게 설정해 주면 된다.
1️⃣ 스위치 설정 모드 진입
----------------------------------------------------------------
Switch> enable ---> en
Switch# configure terminal ---> conf t
----------------------------------------------------------------
- enable : 특권 실행 모드 (Privileged EXEC Mode) 진입
- configure terminal : 네트워크 장비(라우터, 스위치 등)의 설정을 변경하기 위해 전역 설정 모드(Global Configuration Mode)로 진입하는 명령어
2️⃣ 기본 설정 및 장치(스위치) 이름 변경
----------------------------------------------------------------
Switch(config)# no ip domain-lookup ---> 설명
Switch(config)# hostname SW1
----------------------------------------------------------------
- hostname : 네트워크 장비(라우터, 스위치 등)에 고유한 이름을 부여하는 명령어
- CLI 프롬프트의 이름을 바꾸고, 로그 메시지나 네트워크 관리 프로토콜에서 장비를 구분하는 기준이 됨.
- 보안 차원에서도 SSH 설정을 위해 암호화 키를 생성할 때 hostname과 도메인 이름(domain-name)이 반드시 설정되어 있어야 함.
3️⃣ VLAN 생성 및 이름 지정
----------------------------------------------------------------
SW1(config)# vlan 10
SW1(config-vlan)# name v10
💡 ---exit 생략---
SW1(config-vlan)# vlan 20
SW1(config-vlan)# name v20
💡 ---exit 생략---
----------------------------------------------------------------
- vlan [1-4094]: 스위치 내부에 가상의 네트워크(VLAN) 번호를 생성한다. 이 명령어를 입력하면 프롬프트가 (config)#에서 (config-vlan)#으로 바뀌며, 해당 VLAN의 세부 설정을 할 수 있는 모드로 진입한다.
- name [문자열]: 생성한 VLAN에 이름을 부여한다. 이름을 설정하지 않으면 기본적으로 VLAN0010과 같은 형식으로 자동 지정되지만, 직관적인 이름을 붙여야 나중에 유지보수가 편하다.
🌀VLAN ID 범위
| VLAN ID 범위 | 용도 및 특징 |
| 0 | 예약됨: 우선순위 태깅(Priority Tagging) 전용으로, VLAN ID로는 사용할 수 없다. |
| 1 | 기본값(Default): 모든 시스코 스위치의 기본 VLAN이다. 삭제하거나 이름을 바꿀 수 없다. |
| 2 - 1001 | 일반 범위(Normal): 가장 많이 만드는 일반적인 VLAN 번호들이다. |
| 1002 - 1005 | 예약됨: 과거에 쓰던 Token Ring이나 FDDI 같은 구식 네트워크용 번호들이다. (현재는 거의 안 씀) |
| 1006 - 4094 | 확장 범위(Extended): 대규모 네트워크에서 더 많은 VLAN이 필요할 때 사용한다. |
| 4095 (2^12) | 예약됨: 시스템 관리용이나 와일드카드 용도로 남겨둔 마지막 번호다. |
💡컨텍스트 자동 전환 (Auto-Switching)
vlan 10을 설정한 후 exit 명령으로 전역설정으로 빠져나간 후에 다시 vlan 20을 설정하는 것이 옛날 방식이지만 최신 장비에서는 vlan 10 설정 모드(config-vlan)에 있는 상태에서 바로 vlan 20을 입력해도 장비가 자동으로 이전 모드를 빠져나와 새로운 VLAN 설정 모드로 이동한다.
4️⃣ 각 인터페이스에 VLAN 할당 (Access Mode)
----------------------------------------------------------------
SW1(config-vlan)# interface fa0/1 (fastEthernet 0/1)
SW1(config-if)# switchport mode access
SW1(config-if)# switchport access vlan 10
SW1(config)# interface fa0/2 (fastEthernet 0/2)
SW1(config-if)# switchport mode access
SW1(config-if)# switchport access vlan 20
SW1(config-if)# end
----------------------------------------------------------------
5️⃣ VLAN 설정 확인
show vlan brief (또는 sh vlan b) 명령어를 통해 포트가 적절한 VLAN에 할당되었는지 확인한다.
- VLAN 10: Fa0/1 포트 할당 확인
- VLAN 20: Fa0/2 포트 할당 확인

6️⃣ 설정 저장
SW1 설정을 마치고 SW2로 넘어가기 전 저장과 확인 과정을 거쳐야 한다.
지금까지 설정한 것들은 RAM(휘발성 메모리)에 running-config라는 이름으로 올라가 있는데, 이 상태에서 장치가 꺼지거나 패킷 트레이서를 종료하면 모든 설정이 날아간다.
따라서 이를 NVRAM(비휘발성 메모리)의 startup-config로 옮겨 적어야 한다.
- 권장 명령어: copy running-config startup-config (줄여서 copy run start)
- 현업에서 많이 쓰는 짧은 명령어: write (줄여서 wr)

7️⃣ SW2에 동일 작업 반복
SW2에도 위 과정을 반복한다.
4. 트렁크(Trunk) 포트의 필요성과 설정
VLAN을 나눈 후, SW1에 연결된 PC1에서 SW2에 연결된 PC3으로 핑(Ping)을 보내면 통신이 실패하는 것을 볼 수 있다.

1️⃣ VLAN 할당 후 같은 스위치 간 통신이 끊기는 이유
PC1과 PC3은 모두 VLAN1에서 VLAN 10으로 옮겨갔지만, 스위치 간 연결 통로인 Fa0/24 포트가 아직 VLAN 1(기본값)에만 속해 있기 때문이다.


🟢스위치 간 연결 통로(Fa0/24)의 고립
- VLAN 분리: 이제 PC1(VLAN 10)이 보낸 데이터는 SW1 내부의 'VLAN 10 전용 구역'으로만 흐를 수 있다.
- 통로의 불일치: 스위치와 스위치를 잇는 Fa0/24 포트는 여전히 VLAN 1의 Access Port이다.
- 프레임 드롭(Drop): SW1은 PC1에게 받은 VLAN 10 데이터를 외부로 보내려고 Fa0/24를 보지만, Fa0/24는 오직 VLAN 1 데이터만 지나갈 수 있는 포트다. 따라서 VLAN 10 데이터는 이 포트를 통과하지 못하고 차단된다.
결과적으로 같은 VLAN 10끼리 대역이 같더라도, 스위치 사이를 건너가는 통로가 해당 VLAN을 허용하지 않기 때문에 핑(Ping)이 실패한다.
이를 해결하기 위해 여러 VLAN 트래픽이 지나갈 수 있는 Trunk Port 설정이 필요하다.
2️⃣ 트렁크 설정
----------------------------------------------------------------
# SW1 설정
SW1(config)# interface fa0/24
SW1(config-if)# switchport mode trunk
# SW2 설정
SW2(config)# interface fa0/24
SW2(config-if)# switchport mode trunk
----------------------------------------------------------------
💡대부분 스위치가 기본적으로 DTP(Dynamic Trunking Protocol)이 켜져 있어서 한쪽에 트렁크 모드를 적용하면 연결된 스위치에도 자동 적용됨.
3️⃣ 트렁크 상태 확인
트렁크(Trunk) 모드로 설정된 포트(예: Fa0/24)는 show vlan brief 명령을 쳐도 VLAN 포트 란에 나타나지 않는다.
트렁크 포트는 특정 VLAN에 소속된 것으로 간주하지 않기 때문이다.
트렁크 포트의 경우 show interfaces trunk 명령어를 사용하여 트렁크 모드 활성화 여부와 허용된 VLAN(Allowed VLANs) 목록을 확인할 수 있다.

1. 트렁크 기본 정보 (상단부)
- Mode - on: 관리자가 직접 switchport mode trunk 명령어를 입력해 수동(Manual)으로 트렁크를 활성화했음을 뜻한다. (DTP에 의한 자동 설정이 아님)
- Encapsulation - 802.1q: IEEE 802.1Q(Dot1Q) 표준 태깅 방식을 사용하고 있다.
- Status - trunking: 현재 이 포트가 정상적으로 트렁크 역할을 수행 중이다.
- Native vlan - 1: 태그가 붙지 않은 프레임(Untagged Frame)이 들어오면 기본적으로 VLAN 1로 처리하겠다는 의미다.
2. 허용 범위 및 활성화 상태 (하단부)
☑️Vlans allowed on trunk: 1-1005
이 포트를 통과할 수 있도록 "허가된" VLAN 번호의 범위다.
기본값은 모든 일반 범위(1-1005)를 허용하는 상태다.
☑️Vlans allowed and active in management domain: 1, 10, 20
이 부분이 실습의 핵심이다.
- 단순히 허용(Allowed)만 된 게 아니라, 현재 스위치에 실제로 생성되어 활성화(Active)된 VLAN이 무엇인지 보여준다.
- 위에서 생성한 10번(v10)과 20번(v20) VLAN이 여기에 포함되어 있어야만 SW1과 SW2 사이에 통신이 가능하다.
☑️Vlans in spanning tree forwarding state: 1, 10, 20
루프(Loop) 방지 프로토콜인 스패닝 트리(STP)에 의해 차단되지 않고, 실제로 데이터를 주고받을 준비가 된(Forwarding) VLAN 목록이다.
설정 직후에는 잠시 대기 상태(Listening/Learning)일 수 있지만, 잠시 후 위와 같이 1, 10, 20이 다 뜨면 통신 준비가 끝난 것이다.
3️⃣ Ping test로 확인
이제 다음과 같은 통신이 가능해진다.
- PC1(VLAN 10) ↔ PC3(VLAN 10): 통신 성공. (트렁크를 통해 VLAN 10 태그를 달고 SW2로 넘어가기 때문)
- PC2(VLAN 20) ↔ PC4(VLAN 20): 통신 성공.
- PC1(VLAN 10) ↔ PC2(VLAN 20): 여전히 통신 실패. (같은 스위치에 있지만 방(VLAN)이 다르므로 라우터가 필요함)
5. 트렁크 포트(Trunk port)의 기본 동작 원리 - 802.1Q
switchport mode trunk 명령어를 Fa0/24 포트에 입력하는 순간, 해당 포트는 위의 show interfaces trunk 에서 확인할 수 있는 것처럼 기본적으로 일반 범위인 1번부터 1005번까지의 모든 VLAN 정보를 통과시킬 수 있게 된다.

트렁크 포트는 여러 VLAN의 프레임이 섞여서 들어와도 각 프레임에 붙은 VLAN 태그(802.1Q)를 보고 어디로 보낼지 결정하는 역할을 한다.
이때 사용되는 표준 프로토콜이 IEEE 802.1Q이다.
🟢802.1Q 프레임 구조
- VLAN Tag (4 bytes): 표준 이더넷 프레임의 Source MAC과 Type 필드 사이에 삽입된다.
- VLAN ID (12 bits): 총 2^12 = 4096개의 VLAN을 구분할 수 있다.
🟢 트렁크(Trunk)를 통한 프레임 전송과 태깅(Tagging)
아래 흐름도는 스위치와 스위치 사이의 연결선(Trunk)에서 프레임이 어떻게 구분되어 전달되는지 보여준다.

- 브로드캐스트 도메인의 분리: VLAN 10에서 발생한 브로드캐스트 패킷은 물리적으로 연결된 VLAN 20 포트로 절대 넘어가지 않는다. (네트워크 성능 최적화)
- 태깅(Tagging)의 역할: 트렁크 포트는 여러 VLAN의 패킷을 실어 나르는 '고속도로'와 같다. 이때 각 프레임이 어느 VLAN 소속인지 구분하기 위해 802.1Q 태그(이름표)를 붙이는 과정이 필수적이다.
- 캡슐화(Encapsulation): 태그가 붙는 과정을 캡슐화라고 부르며, 우리가 실습에서 본 12비트(1~4094)의 VLAN ID가 이 태그 안에 포함된다.
6. 인터페이스별 VLAN 확인 방법
특정 포트(예: Fa0/1)가 현재 어떤 모드(Access/Trunk)이고 어떤 VLAN에 속해 있는지 상세히 알고 싶을 때 다음 명령어를 사용한다.
show interfaces [인터페이스명] switchport
예: show interfaces fa0/1 switchport

- Administrative Mode: 사용자가 설정한 모드.
- Operational Mode: 실제로 동작 중인 모드.
- Access Mode VLAN: 해당 포트가 액세스 모드일 때 소속된 VLAN ID.
- Trunking Native Mode VLAN: 트렁크 포트일 때 태그 없이 전송되는 기본 VLAN ID.
🟢포트 상태 확인 명령어 정리
| 확인 대상 | 명령어 | 활용 상황 |
| 전체 VLAN 목록 | show vlan brief | VLAN 생성 및 포트 할당을 전체적으로 점검할 때 |
| 트렁크 통로 상태 | show interfaces trunk | 스위치 간 연결(Fa0/24)이 정상인지 확인할 때 |
| 개별 포트 상세 | show interfaces fa0/1 switchport | 특정 포트의 설정값이 꼬였는지 확인할 때 |
'Journey to Security > 네트워크' 카테고리의 다른 글
| [Cisco Packet Tracer] ARP와 ICMP 패킷 흐름 시뮬레이션으로 시각화하기 (0) | 2026.03.07 |
|---|---|
| [Cisco IOS] 스위치 메모리 관리 및 설정 초기화 (0) | 2026.03.07 |
| [Cisco IOS] CLI 환경을 쾌적하게 세팅해주는 명령어 (0) | 2026.03.06 |
| Cisco Packet Tracer로 라우팅 테이블 조회하고 분석하기 (0) | 2026.03.06 |
| 시스코 패킷 트레이서에서 L3 스위치로 라우팅하기 (0) | 2026.03.06 |