[Network/L2] VLAN/Trunk/Native VLAN 이론과 실습
VLAN
VLAN은 Virtual Local Area Network의 약자이며, 물리적 배치와 상관 없이 논리적으로 LAN을 구성하는 방식입니다. 때문에 VLAN을 사용하면 LAN을 구성하는 장치들이 꼭 같은 장소에 있을 필요가 없습니다. 또한 서로 다른 VLAN은 직접적으로 연결되어도 통신이 불가하기 때문에 보안성이 향상됩니다.
- 라우터: Broadcast Domain을 나눌 수 있는 장비
- 스위치: Collision Domain을 나눌 수 있는 장비
원래 라우터와 스위치의 기능은 위와 같지만, VLAN을 사용하면 스위치에서도 Broadcast Domain을 나눌 수 있습니다.
(default VLAN = 1)
예시
위 토폴로지를 보면, VLAN을 설정하지 않은 VLAN 1 대역 (201.201.201.0/24) 하나, VLAN을 설정한 총무부 대역 (200.200.200.0/24)로 나누어집니다. 이처럼 VLAN을 사용하면 실질적으로 하나만 있는 네트워크를 n개로 나누어 쓸 수 있습니다. (IP 주소/대역도 분리)
즉 VLAN은 L2에서 Broadcast domain을 소프트웨어적으로 나누는 방식으로, 다른 VLAN 장치가 통신하려면 반드시 L3장치의 중계를 거쳐야 합니다.
VLAN 설정
(1) VLAN 생성하기
switch(config)# vlan [vlan 번호]
switch(config-vlan)# name [vlan 이름]
(2) VLAN 연결하기
switch(config)# interface [interface(fa0/0)]
switch(config-if)# switchport mode access
switch(config-if)# switchport access vlan [vlan 번호]
show vlan 명령어를 통해 인터페이스와 VLAN이 잘 연결되어있는지 확인할 수 있습니다.
Trunk
Trunk는 프레임 전달에 하나의 물리적 회선에 여러 VLAN 프레임이 전달되도록 하는 기술입니다.
Trunking protocol
- 802.1Q (IEEE 표준)
- ISL (CISCO 표준/CISCO 전용)
Trunking protocol은 스위치와 스위치가 연결되는 구간 또는 스위치와 라우터가 연결되는 구간에 설정합니다. (같은 프로토콜로 설정)
Switch에 Trunk 설정하는 방법
switch(config)# int [인터페이스]
switch(config-if)# switchport mode trunk
Inter-VLAN
Inter-VLAN은 VLAN이 나누어져 있는 네트워크에서 라우터를 기반으로 서로 다른 VLAN 장치들이 통신할 수 있도록 해주는 기법입니다.
Inter-VLAN 설정 방법
SVI (Switch Virtual Interface)인 가상 인터페이스를 구성하여 각각의 VLAN에 Default-Gateway를 구현합니다.
router(config)# interface [interface(fa0/0)]
router(config-if)# no shutdown
먼저 해당 인터페이스를 활성화 해줍니다.
router(config)# interface [interface(fa0/0)].[vlan 번호]
router(config-subif)# encapsulation [Trunk 프로토콜(dot1Q)] [vlan 번호]
router(config-subif)# ip address [default gateway ip] [subnetmask]
이후 vlan의 가상 인터페이스를 만들어줍니다.
VLAN 실습
아래와 같은 환경을 구성해봅시다.
VLAN 10
B/W: 200.200.200.0/24
Deafault Gateway Interface: gi 0/0/0
Deafault Gateway IP Address: 200.200.200.1/24
Trunk Protocol: dot1Q
VLAN 20
B/W: 201.201.201.0/24
Deafault Gateway Interface: gi 0/0/0
Deafault Gateway IP Address: 201.201.201.1/24
Trunk Protocol: dot1Q
(1) Router 설정하기
1. 우선 Default Gateway의 인터페이스를 활성화 해줍니다.
interface g0/0/0
no shutdown
2. 그 후 각각의 VLAN을 설정해줍니다.
- VLAN 10
int g 0/0/0.10
encapsulation dot1Q 10
ip add 200.200.200.1 255.255.255.0
- VLAN 20
int g 0/0/0.20
encapsulation dot1Q 20
ip add 201.201.201.1 255.255.255.0
3. show ip int brief로 확인합니다.
(2) Switch 설정하기
1. VLAN 생성하기
- VLAN 10
vlan 10
name VLAN_10
- VLAN 20
vlan 20
name VLAN_20
2. VLAN과 Interface 연결하기
- 왼쪽 스위치
int fa 0/1
switchport mode access
switchport access vlan 10
int fa 0/2
switchport mode access
switchport access vlan 20
- 오른쪽 스위치
int fa 0/1
switchport mode access
switchport access vlan 10
int fa 0/2
switchport mode access
switchport access vlan 20
show vlan으로 확인 할 수 있습니다.
3. TRUNK 설정하기
스위치에서 Trunk를 사용하는 인터페이스에 설정해주어야 합니다.
- Switch-Switch (양쪽 Switch에 모두 설정)
int fa 0/3
switchport mode trunk
- Switch-Router (Switch에만 설정)
int fa 0/4
switchport mode trunk
4. Ping 보내지는지 확인하기
같은 VLAN 끼리의 통신과 VLAN pc에서 Sever까지 핑이 가는지 확인해줍니다. 서로 다른 VLAN 끼리는 통신이 되면 안됩니다.
VLAN(Trunk) 동작 방식
Switch에서 포트에 해당하는 vlan number를 Tag로 붙여서 전송합니다. 그 후 받은 Switch에서는 Tag를 보고 vlan number가 같은 port로 flooding 합니다. 위 그림에서는 s가 보낸 패킷을 d가 받을 수 없습니다.
보안적 문제: Native VLAN
Native VLAN은 태그가 없는 프레임(UNTAG)을 전송하기 위한 NLAN입니다. Switch는 태그가 없는 패킷이 도착하면 패킷을 폐기하는데, 이러한 상황을 방지하기 위해 기본적으로 Native VLAN으로 인식합니다. (dot1Q 트렁크 포트에 할당합니다.)
사설망 내부까지 침투했다는 가정 하에,
모든 장비의 Native VLAN은 1이 default로 설정되는데, 이 값을 변경하지 않으면 모든 장비(native vlan이 1인)와 통신이 가능한 패킷을 보낼 수가 있게 됩니다. 이는 보안적으로 문제가 될 수 있습니다.
또한 이중 Tagging으로 보안 설정이 되어있지 않은 라우터를 거쳐 공격하고자 할 경우에, Native vlan Tag를 이중으로 덧붙여서 전송하는데, 이때 Native vlan 1로 이중 Tagging을 할 수 있기 때문에 Native VLAN 번호는 반드시 바꿔주어야 합니다.
설정 방법
interface [trunk가 설정된 인터페이스]
switchport trunk native vlan [number]
동작방식
untag 패킷을 받으면 vlan 10으로 취급하기 때문에 목적지 d PC까지 무사히 도착하게 됩니다. 이처럼 Native VLAN을 사용하면 Tag를 encap/decap하는 과정이 없기 때문에 데이터가 비교적 빠르게 전달됩니다.
(참고) Access Port vs Trunk
(참고) Native VLAN이 다른데 Untag 패킷을 보내는 경우
위와 같은 환경에서는 왼쪽 PC에서 오른쪽 PC까지 데이터가 잘 전달되게 됩니다. 이유는, Untag 패킷은 Native VLAN에 의해 tagging되지 않고 전송되며, 이를 받은 스위치에서도 tag가 없기 때문에 Native VLAN으로 취급하여 VLAN 20으로 flooding하기 때문입니다.