CCNA 200-301

CCNA 200–301 따라잡기 6장

VLAN, 하나의 스위치를 여러 네트워크처럼 나누는 법

3장에서 스위치는 같은 네트워크 안에서 MAC 주소를 보고 프레임을 전달한다고 했다. 5장에서는 서로 다른 네트워크 사이를 라우터가 연결한다고 했다. 이제 그 사이에 있는 중요한 질문을 다룰 차례다.

“스위치 한 대에 PC가 여러 대 꽂혀 있는데, 이들을 모두 같은 네트워크로 둬도 되는가?”

작은 사무실에서는 그래도 된다. 하지만 회사 네트워크에서는 보통 안 된다. 회계팀, 개발팀, 인사팀, 게스트 Wi-Fi, 서버망을 모두 같은 브로드캐스트 도메인에 넣으면 보안도 약하고, 장애 범위도 커지고, 운영도 복잡해진다.

이 문제를 해결하는 기술이 VLAN이다. VLAN은 Virtual LAN의 약자다. 물리적으로는 같은 스위치에 꽂혀 있어도, 논리적으로는 서로 다른 LAN처럼 나누는 방법이다.

  1. VLAN은 브로드캐스트 도메인을 나눈다

VLAN을 가장 쉽게 이해하는 방법은 “브로드캐스트 도메인 분리”다.

스위치 하나에 모든 포트가 VLAN 1에 들어 있다면, 어느 포트에서 브로드캐스트가 들어와도 같은 VLAN 안의 모든 포트로 퍼진다. ARP 요청, DHCP Discover 같은 프레임이 대표적이다.

하지만 포트를 VLAN 10과 VLAN 20으로 나누면 상황이 달라진다. VLAN 10에서 발생한 브로드캐스트는 VLAN 10 포트로만 전달된다. VLAN 20 포트에는 가지 않는다.

즉 VLAN은 같은 물리 스위치 안에서 브로드캐스트 도메인을 여러 개로 나누는 기능이다.

이 점이 CCNA에서 매우 중요하다.

VLAN 10과 VLAN 20은 서로 다른 네트워크로 봐야 한다. VLAN 10의 PC가 VLAN 20의 PC와 통신하려면 라우팅이 필요하다. 같은 스위치에 꽂혀 있다는 사실만으로는 통신할 수 없다.

  1. VLAN ID와 VLAN 이름

VLAN은 숫자로 구분한다. 이 숫자를 VLAN ID라고 한다.

일반적으로 많이 쓰는 범위는 1부터 4094까지다. 0과 4095는 일반 VLAN으로 쓰지 않는다.

VLAN 1은 Cisco 스위치의 기본 VLAN이다. 스위치 포트는 별도 설정이 없으면 보통 VLAN 1에 들어간다. 하지만 실무에서는 사용자 트래픽을 VLAN 1에 두지 않는 것이 좋다. 관리, 보안, native VLAN 문제와 얽히기 때문이다.

예를 들어 다음처럼 나눌 수 있다.

VLAN 10 — Sales

VLAN 20 — Engineering

VLAN 30 — Voice

VLAN 40 — Guest

VLAN 99 — Management

VLAN 이름은 사람이 보기 편하게 붙이는 설명이다. 실제 프레임을 구분하는 값은 VLAN ID다.

  1. Access port

Access port는 하나의 VLAN에만 속하는 포트다. 일반 PC, 프린터, IP Phone 뒤의 PC, CCTV 같은 단말이 연결되는 포트가 보통 access port다.

예를 들어 스위치의 Gi0/1 포트에 회계팀 PC가 꽂혀 있고, 회계팀을 VLAN 10으로 쓰기로 했다면 Gi0/1을 VLAN 10 access port로 설정한다.

대표 설정은 다음과 같다.

interface GigabitEthernet0/1

switchport mode access

switchport access vlan 10

이 포트로 들어오는 일반 이더넷 프레임에는 VLAN 태그가 없다. 스위치는 “이 포트는 VLAN 10 포트”라는 설정을 보고 해당 프레임을 VLAN 10 소속으로 처리한다.

반대로 스위치가 VLAN 10 프레임을 이 포트로 내보낼 때도 태그 없이 보낸다. PC는 보통 VLAN 태그를 모른다. PC 입장에서는 그냥 평범한 이더넷 프레임을 주고받는 것이다.

정리하면 access port는 단말용이고, 프레임은 보통 untagged다.

  1. Trunk port

Trunk port는 여러 VLAN의 트래픽을 한 링크로 실어 나르는 포트다. 스위치와 스위치 사이, 스위치와 라우터 사이, 스위치와 방화벽 사이, 스위치와 가상화 서버 사이에서 자주 쓴다.

예를 들어 스위치 A와 스위치 B가 연결되어 있고, 두 스위치 모두 VLAN 10과 VLAN 20을 사용한다고 하자. 두 스위치 사이에 VLAN별 케이블을 따로 꽂으면 비효율적이다. VLAN 10용 케이블 하나, VLAN 20용 케이블 하나를 따로 두는 식이 된다.

Trunk는 이 문제를 해결한다. 하나의 물리 링크에 여러 VLAN 트래픽을 태그를 붙여 함께 보낸다.

대표 설정은 다음과 같다.

interface GigabitEthernet0/24

switchport mode trunk

switchport trunk allowed vlan 10,20,30

이 설정은 Gi0/24를 trunk port로 만들고, VLAN 10, 20, 30만 통과시키겠다는 뜻이다.

CCNA에서 access와 trunk를 구분하는 문제는 매우 자주 나온다.

Access port — 하나의 VLAN, 단말 연결, 보통 untagged.

Trunk port — 여러 VLAN, 스위치/라우터/서버 연결, 보통 tagged.

  1. 802.1Q 태그

Trunk 링크에서 여러 VLAN을 구분하려면 프레임 안에 “이 프레임은 VLAN 몇 번 소속이다”라는 표시가 필요하다. 이 표시가 802.1Q 태그다.

802.1Q는 이더넷 프레임 안에 4바이트 태그를 삽입한다. 그 안에 VLAN ID가 들어간다.

일반 이더넷 프레임은 다음과 비슷하다.

Destination MAC

Source MAC

Type

Data

FCS

802.1Q 태그가 붙으면 Source MAC과 Type 사이에 태그가 들어간다.

Destination MAC

Source MAC

802.1Q Tag

Type

Data

FCS

이 태그 안에 VLAN ID가 들어가므로 trunk를 지나가는 스위치는 어떤 VLAN의 프레임인지 알 수 있다.

중요한 점은 access port로 나갈 때는 보통 태그가 제거된다는 것이다. 단말 PC는 태그를 볼 필요가 없다. 스위치끼리 trunk로 주고받을 때 태그가 필요하다.

  1. Native VLAN

802.1Q trunk에는 native VLAN이라는 개념이 있다. Native VLAN의 트래픽은 trunk에서 태그 없이 전달된다.

기본 native VLAN은 보통 VLAN 1이다. 하지만 실무에서는 보안을 위해 native VLAN을 사용하지 않는 별도 VLAN으로 바꾸는 것이 권장된다.

예를 들어 양쪽 스위치의 trunk native VLAN이 다르면 문제가 생긴다. 한쪽은 untagged 프레임을 VLAN 99로 해석하고, 다른 쪽은 VLAN 1로 해석할 수 있다. 이것을 native VLAN mismatch라고 한다.

CCNA에서는 다음 세 줄을 기억하면 된다.

802.1Q trunk에서 대부분의 VLAN은 tagged다.

Native VLAN은 untagged다.

Trunk 양쪽의 native VLAN은 반드시 같아야 한다.

  1. Allowed VLAN

Trunk라고 해서 모든 VLAN을 무조건 지나가게 둘 필요는 없다. trunk allowed vlan 설정으로 어떤 VLAN을 통과시킬지 제한할 수 있다.

예를 들어 스위치 A와 B 사이에 실제로 VLAN 10과 VLAN 20만 필요하다면 다음처럼 제한한다.

switchport trunk allowed vlan 10,20

이렇게 하면 불필요한 VLAN 트래픽이 trunk를 지나가지 않는다. 장애 범위도 줄고, 보안상으로도 더 깔끔하다.

시험에서 “VLAN 30이 반대쪽 스위치에 있는데 통신이 안 된다”라는 문제가 나오면 allowed VLAN 목록을 확인해야 한다. trunk는 up이어도 해당 VLAN이 allowed list에 없으면 그 VLAN 트래픽은 통과하지 못한다.

  1. VLAN 사이 통신은 라우팅이 필요하다

VLAN 10과 VLAN 20은 서로 다른 브로드캐스트 도메인이다. 보통 서로 다른 IP 네트워크를 쓴다.

예를 들어 다음처럼 설계할 수 있다.

VLAN 10–192.168.10.0/24

VLAN 20–192.168.20.0/24

VLAN 30–192.168.30.0/24

Get David Lee’s stories in your inbox

Join Medium for free to get updates from this writer.

Subscribe

Subscribe

Remember me for faster sign in

VLAN 10의 PC가 VLAN 20의 PC와 통신하려면 라우팅이 필요하다. 이것을 inter-VLAN routing이라고 한다.

방법은 크게 두 가지다.

첫째, Router-on-a-stick.

스위치와 라우터를 trunk로 연결하고, 라우터에 subinterface를 만든다. 각 subinterface가 하나의 VLAN gateway가 된다.

예시는 다음과 같다.

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

둘째, Layer 3 switch의 SVI.

L3 스위치에서 VLAN 인터페이스를 만들고 IP를 부여한다.

interface vlan 10

ip address 192.168.10.1 255.255.255.0

interface vlan 20

ip address 192.168.20.1 255.255.255.0

ip routing

SVI는 Switch Virtual Interface의 약자다. L3 스위치가 VLAN별 gateway 역할을 하게 만든다.

CCNA에서는 두 방식을 모두 알아야 한다. Router-on-a-stick은 trunk와 subinterface 개념을 묻기 좋고, L3 switch SVI는 캠퍼스 네트워크에서 자주 쓰는 방식이다.

  1. show vlan brief 읽기

VLAN 설정 확인의 기본 명령은 show vlan brief다.

출력은 다음과 비슷하다.

VLAN Name Status Ports

1 default active Gi0/3, Gi0/4

10 SALES active Gi0/1

20 ENG active Gi0/2

30 VOICE active

여기서 봐야 할 것은 세 가지다.

VLAN ID가 존재하는가.

VLAN 상태가 active인가.

원하는 포트가 올바른 VLAN에 들어가 있는가.

VLAN을 만들지 않고 포트만 VLAN에 넣으려 하면 장비와 IOS 버전에 따라 자동 생성되기도 하지만, 시험에서는 VLAN을 명시적으로 만들고 포트를 넣는 흐름으로 생각하는 것이 안전하다.

  1. show interfaces trunk 읽기

Trunk 문제를 풀 때는 show interfaces trunk가 중요하다.

출력에서 봐야 할 것은 다음이다.

어떤 포트가 trunk인가.

encapsulation이 802.1Q인가.

native VLAN이 무엇인가.

allowed VLAN 목록이 무엇인가.

실제로 forwarding 중인 VLAN이 무엇인가.

문제에서 “두 스위치 사이 trunk는 up인데 VLAN 20만 통신이 안 된다”라고 나오면 allowed VLAN과 spanning-tree forwarding 상태를 봐야 한다.

CCNA 초반에서는 allowed VLAN 누락, native VLAN mismatch, 포트가 access mode로 되어 있음, VLAN 자체가 없음 이 네 가지를 먼저 의심하면 된다.

  1. VLAN 설계에서 자주 쓰는 구분

VLAN은 단순히 번호를 붙이는 기능이 아니다. 운영 목적에 따라 나누는 설계 도구다.

Data VLAN — 일반 사용자 PC 트래픽.

Voice VLAN — IP Phone 음성 트래픽. QoS와 함께 다룬다.

Management VLAN — 스위치 관리 IP, SSH, SNMP 같은 관리 트래픽.

Native VLAN — trunk에서 untagged 트래픽을 처리하는 VLAN.

Guest VLAN — 방문자 또는 인터넷 전용 트래픽.

서버 VLAN — 서버군을 묶는 VLAN.

보안상 중요한 원칙은 관리 VLAN과 사용자 VLAN을 분리하는 것이다. 사용자가 쓰는 VLAN에서 스위치 관리 IP로 직접 접근할 수 있게 두면 위험하다.

  1. VLAN 트러블슈팅 루틴

VLAN 문제가 나오면 다음 순서로 본다.

첫째, PC IP와 gateway가 맞는지 확인한다.

둘째, PC가 연결된 포트가 올바른 access VLAN인지 확인한다.

셋째, VLAN이 스위치에 존재하고 active인지 확인한다.

넷째, 스위치 간 링크가 trunk인지 확인한다.

다섯째, trunk allowed VLAN 목록에 해당 VLAN이 포함되어 있는지 확인한다.

여섯째, native VLAN mismatch가 없는지 확인한다.

일곱째, VLAN 사이 통신이라면 gateway와 inter-VLAN routing이 동작하는지 확인한다.

여덟째, 라우팅과 ACL이 막고 있지 않은지 확인한다.

이 루틴을 따르면 VLAN 문제를 무작정 찍지 않고 좁혀갈 수 있다.

  1. 자주 틀리는 부분

첫째, VLAN이 같으면 IP 네트워크도 같아야 한다는 사실을 놓치는 것. 같은 VLAN인데 서로 다른 IP 대역을 쓰면 통신이 이상해진다.

둘째, VLAN만 만들면 서로 통신한다고 생각하는 것. 다른 VLAN끼리는 라우팅이 필요하다.

셋째, trunk가 모든 VLAN을 자동으로 통과시킨다고 믿는 것. allowed VLAN 설정으로 막혀 있을 수 있다.

넷째, native VLAN을 양쪽에서 다르게 설정하는 것. native VLAN mismatch는 trunk 문제의 단골이다.

다섯째, access port에 태그가 붙은 프레임이 오간다고 생각하는 것. 일반 PC 연결 access port는 보통 untagged다.

  1. 6장 정리

VLAN은 하나의 스위치를 여러 브로드캐스트 도메인으로 나누는 논리적 LAN이다.

Access port는 하나의 VLAN에 속하며 일반 단말을 연결한다.

Trunk port는 여러 VLAN을 하나의 링크로 운반한다.

802.1Q 태그는 trunk에서 VLAN ID를 표시한다.

Native VLAN은 trunk에서 untagged로 전달되는 VLAN이다.

Allowed VLAN 목록에 없는 VLAN은 trunk를 통과하지 못한다.

VLAN 사이 통신은 라우팅이 필요하다.

Inter-VLAN routing은 router-on-a-stick 또는 L3 switch SVI로 구현할 수 있다.

show vlan brief와 show interfaces trunk는 VLAN 문제의 기본 확인 명령이다.

  1. 다음 장 예고

7장에서는 STP를 다룬다. 스위치끼리 이중 링크를 연결하면 왜 루프가 생기는지, 브로드캐스트가 왜 폭주하는지, STP가 어떤 포트를 막아서 루프를 방지하는지 살펴본다. VLAN을 배웠으니, 이제 VLAN마다 루프를 막는 STP의 역할이 자연스럽게 이어진다.

댓글 0