Network_08 : 하나의 스위치를 여러 네트워크처럼 쓰기: VLAN

이준익·2026년 5월 16일

스위치는 같은 LAN 안에서 MAC 주소를 보고 프레임을 전달하는 장비다.

지난 글에서는 스위치가 MAC 주소 테이블을 만들고, 목적지 MAC 주소를 기준으로 포워딩, 플러딩, 필터링을 한다는 흐름을 정리했다. 그런데 여기서 한 가지 문제가 생긴다.

스위치에 연결된 장비가 많아지면 어떻게 될까?

처음에는 단순하다.

하나의 스위치에 PC, 노트북, 서버, 프린터가 연결되어 있다.
이 장비들은 모두 같은 네트워크 안에 있다고 볼 수 있다.
그래서 서로 이더넷 프레임을 주고받을 수 있고, 브로드캐스트도 같은 공간 안에서 퍼진다.

그런데 회사 네트워크를 생각해보면 이야기가 조금 달라진다.

개발팀 PC, 인사팀 PC, 게스트용 노트북, 서버 장비가 모두 같은 스위치에 연결되어 있다고 해보자. 물리적으로는 편하다. 케이블을 스위치에 꽂기만 하면 되니까.

하지만 논리적으로도 전부 같은 네트워크에 둬도 괜찮을까?

게스트용 노트북이 사내 서버와 같은 네트워크에 있는 건 조금 찝찝하다.
인사팀 장비와 개발팀 장비가 굳이 같은 브로드캐스트 공간을 공유할 필요도 없다.
트래픽 관리나 보안 정책을 생각하면 네트워크를 나누고 싶어진다.

이때 사용하는 개념이 VLAN이다.

VLAN은 스위치 안에서 네트워크를 논리적으로 나누는 방법이다

VLAN은 Virtual LAN의 줄임말이다.

말 그대로 가상의 LAN이다.
물리적인 스위치는 하나지만, 그 안에서 여러 개의 LAN이 있는 것처럼 나누는 방식이다.

비유하면 하나의 큰 사무실에 칸막이를 세우는 것과 비슷하다.

건물은 하나다.
하지만 칸막이를 기준으로 개발팀 공간, 인사팀 공간, 회의실 공간을 나눌 수 있다.
사람들이 같은 건물 안에 있어도, 각 공간은 어느 정도 분리된 영역처럼 동작한다.

VLAN도 비슷하다.

스위치 하나에 여러 장비가 연결되어 있어도, VLAN을 나누면 장비들은 서로 다른 네트워크에 있는 것처럼 동작한다.

예를 들어 이렇게 나눌 수 있다.

VLAN 10 → 개발팀
VLAN 20 → 인사팀
VLAN 30 → 게스트

이렇게 설정하면 같은 스위치에 연결되어 있어도 VLAN 10에 속한 장비들은 VLAN 10끼리, VLAN 20에 속한 장비들은 VLAN 20끼리 통신하는 식으로 구분된다.

여기서 중요한 건 VLAN이 물리적인 분리가 아니라 논리적인 분리라는 점이다.

스위치를 여러 대 사서 네트워크를 나눌 수도 있지만, VLAN을 사용하면 하나의 스위치 안에서도 네트워크를 나눈 것처럼 구성할 수 있다.

VLAN 하나는 하나의 브로드캐스트 도메인이다

VLAN을 이해할 때 같이 봐야 하는 개념이 브로드캐스트 도메인이다.

브로드캐스트는 같은 네트워크 안의 모든 장비에게 보내는 통신이다.

“이 IP 주소 가진 장비 누구야?”
“이 정보를 같은 네트워크 안에 있는 모두에게 알려야 해.”

이런 식의 메시지는 특정 한 명에게만 가는 것이 아니라, 같은 네트워크 안에 있는 장비들에게 퍼진다.

문제는 같은 네트워크에 장비가 많아질수록 브로드캐스트의 영향 범위도 커진다는 것이다.
불필요한 트래픽이 늘어날 수 있고, 네트워크를 관리하기도 어려워진다.

VLAN은 이 브로드캐스트가 퍼지는 범위를 나눠준다.

VLAN 10에서 발생한 브로드캐스트
→ VLAN 10 안에서만 전달됨

VLAN 20에서 발생한 브로드캐스트
→ VLAN 20 안에서만 전달됨

즉, VLAN 하나는 하나의 브로드캐스트 도메인이라고 볼 수 있다.

여기서 중요한 건 스위치가 단순히 “같은 스위치에 꽂혀 있네?”라고 판단하지 않는다는 점이다.

스위치는 프레임을 처리할 때 이렇게 생각한다.

이 프레임은 어느 VLAN에서 들어온 거지?
목적지 MAC 주소는 어디에 있지?
그 목적지가 같은 VLAN 안에 있나?
같은 VLAN이면 전달하고, 다른 VLAN이면 그냥 L2 수준에서는 보내지 않는다.

스위치 입장에서는 MAC 주소만 보는 것이 아니라, VLAN이라는 논리적인 구역도 같이 보는 셈이다.

같은 VLAN끼리는 L2 통신이 가능하다

같은 VLAN에 속한 장비들은 같은 LAN 안에 있는 것처럼 동작한다.

예를 들어 PC A와 PC B가 둘 다 VLAN 10에 속해 있다고 해보자.

PC A → VLAN 10
PC B → VLAN 10

PC A가 PC B에게 이더넷 프레임을 보내면, 스위치는 목적지 MAC 주소를 확인한다. 그리고 MAC 주소 테이블을 보고 PC B가 연결된 포트로 프레임을 전달한다.

이 흐름은 일반적인 스위치의 동작과 크게 다르지 않다.

다만 판단 조건에 VLAN이 추가된다.

출발지: VLAN 10의 PC A
목적지: VLAN 10의 PC B

같은 VLAN이다.
MAC 주소 테이블을 확인한다.
목적지 포트로 포워딩한다.

이 경우에는 라우터가 필요하지 않다.
같은 VLAN 내부에서는 데이터 링크 계층, 즉 L2 수준에서 통신할 수 있다.

다른 VLAN끼리는 바로 통신할 수 없다

이번에는 PC A는 VLAN 10, PC C는 VLAN 20에 있다고 해보자.

PC A → VLAN 10
PC C → VLAN 20

물리적으로는 같은 스위치에 연결되어 있을 수 있다.
하지만 논리적으로는 다른 네트워크에 있는 것처럼 분리되어 있다.

그래서 PC A가 PC C에게 바로 이더넷 프레임을 보낼 수 없다.

스위치 입장에서는 이렇게 판단한다.

출발지: VLAN 10
목적지: VLAN 20

서로 다른 VLAN이다.
L2 스위칭만으로는 전달하지 않는다.

이 부분이 VLAN에서 헷갈리기 쉬운 지점이다.

같은 스위치에 꽂혀 있다고 해서 무조건 통신할 수 있는 게 아니다.
VLAN이 다르면 논리적으로 다른 네트워크에 있는 것처럼 취급된다.

그럼 서로 다른 VLAN끼리는 절대 통신할 수 없을까?

그건 아니다.
다만 라우팅이 필요하다.

서로 다른 VLAN 간 통신에는 라우팅이 필요하다

VLAN이 다르다는 것은 네트워크가 나뉘었다는 뜻이다.

그리고 서로 다른 네트워크 사이를 연결하는 역할은 라우터가 한다.
또는 L3 스위치처럼 라우팅 기능을 가진 장비가 처리할 수도 있다.

예를 들어 VLAN을 이렇게 나누었다고 해보자.

VLAN 10 → 192.168.10.0/24
VLAN 20 → 192.168.20.0/24

VLAN 10의 PC가 VLAN 20의 서버와 통신하려면, 단순히 스위치가 MAC 주소를 보고 넘겨주는 것으로는 부족하다.

이때는 네트워크 계층의 판단이 필요하다.

이 목적지는 내 네트워크 밖에 있네.
그러면 기본 게이트웨이로 보내야겠다.
게이트웨이가 라우팅해서 다른 VLAN으로 전달해주겠지.

즉, 같은 VLAN 내부 통신은 L2 스위칭으로 가능하지만, 다른 VLAN 간 통신은 L3 라우팅이 필요하다.

여기서 중요한 건 VLAN이 네트워크를 나누는 역할을 하지만, 나뉜 네트워크를 다시 연결해주는 역할까지 자동으로 해주지는 않는다는 점이다.

VLAN은 분리한다.
라우팅은 연결한다.

이렇게 생각하면 조금 편하다.

Access Port는 하나의 VLAN에 속한 포트다

스위치 포트에는 역할이 있다.
그중 하나가 Access Port다.

Access Port는 보통 하나의 VLAN에 속한 포트다.

일반 PC, 노트북, 프린터 같은 장비를 스위치에 연결할 때 주로 사용한다.
이 장비들은 자신이 VLAN 몇 번에 속하는지 알 필요가 없다.

예를 들어 어떤 포트를 VLAN 10의 Access Port로 설정했다고 해보자.

스위치 1번 포트 → VLAN 10 Access Port

그러면 1번 포트에 연결된 PC는 VLAN 10에 속한 장비처럼 동작한다.

PC 입장에서는 그냥 랜선을 꽂았을 뿐이다.
하지만 스위치는 이렇게 판단한다.

1번 포트로 프레임이 들어왔다.
1번 포트는 VLAN 10에 속해 있다.
그러면 이 프레임은 VLAN 10의 프레임으로 처리해야겠다.

Access Port의 핵심은 단순하다.

연결된 장비에게 VLAN을 의식시키지 않고, 스위치 포트 설정으로 VLAN을 정해주는 방식이다.

Trunk Port는 여러 VLAN의 프레임이 지나가는 포트다

Access Port가 하나의 VLAN만 담당한다면, Trunk Port는 여러 VLAN의 트래픽을 함께 전달하는 포트다.

주로 스위치와 스위치 사이, 또는 스위치와 라우터 사이를 연결할 때 사용한다.

예를 들어 스위치 A와 스위치 B가 있다고 해보자.

스위치 A
- VLAN 10 장비들 연결
- VLAN 20 장비들 연결

스위치 B
- VLAN 10 장비들 연결
- VLAN 20 장비들 연결

두 스위치 사이를 연결해야 한다.
그런데 VLAN 10도 지나가야 하고, VLAN 20도 지나가야 한다.

이때 VLAN마다 케이블을 따로 연결하면 비효율적이다.

VLAN 10용 케이블 하나
VLAN 20용 케이블 하나
VLAN 30용 케이블 하나
...

VLAN이 많아질수록 케이블도 계속 늘어난다.

그래서 Trunk Port를 사용한다.

Trunk Port는 하나의 링크를 통해 여러 VLAN의 프레임을 전달할 수 있게 해준다.

비유하면 Access Port는 특정 팀 전용 출입문이고, Trunk Port는 여러 팀의 물류가 함께 이동하는 공용 통로에 가깝다.

다만 공용 통로를 지나가려면 표시가 필요하다.

“이 박스는 개발팀 거야.”
“이 박스는 인사팀 거야.”
“이 박스는 게스트망 거야.”

이 표시 역할을 하는 것이 VLAN Tag다.

VLAN Tag는 이 프레임이 어느 VLAN 소속인지 알려준다

Trunk Port에서는 여러 VLAN의 프레임이 함께 지나간다.
그러면 스위치는 프레임을 받을 때 구분할 수 있어야 한다.

이 프레임은 VLAN 10의 프레임인가?
아니면 VLAN 20의 프레임인가?

이때 프레임에 VLAN 정보를 붙인다.
이 정보를 VLAN Tag라고 한다.

VLAN Tag는 프레임이 어느 VLAN에 속하는지 알려주는 표시다.

Access Port로 일반 PC와 통신할 때는 보통 PC가 VLAN Tag를 신경 쓰지 않는다.
스위치가 포트 설정을 보고 VLAN을 판단하면 된다.

하지만 Trunk Port를 지날 때는 이야기가 다르다.
여러 VLAN의 프레임이 같은 링크를 지나가기 때문에, 프레임마다 VLAN 정보를 표시해줘야 한다.

스위치 입장에서는 이렇게 처리한다.

Trunk Port로 프레임이 들어왔다.
VLAN Tag를 확인한다.
아, VLAN 10 프레임이구나.
그럼 VLAN 10 안에서 목적지 MAC 주소를 찾아 전달하자.

여기서 중요한 건 VLAN Tag가 “이 프레임이 어느 논리 네트워크에 속하는지” 알려주는 정보라는 점이다.

스위치는 VLAN을 기준으로 더 좁게 판단한다

VLAN이 없는 환경에서 스위치는 주로 MAC 주소 테이블을 기준으로 판단했다.

목적지 MAC 주소가 어디 포트에 있지?
알면 포워딩
모르면 플러딩
필요 없으면 필터링

VLAN이 추가되면 판단 기준이 조금 더 좁아진다.

이 프레임은 어느 VLAN 소속이지?
그 VLAN 안에서 목적지 MAC 주소가 어디 있지?
같은 VLAN 안에서만 전달하자.

즉, 스위치가 보는 범위가 전체 스위치가 아니라 VLAN 단위로 나뉜다.

예를 들어 목적지 MAC 주소를 모르는 경우에도 모든 포트로 플러딩하지 않는다.
같은 VLAN에 속한 포트들로만 플러딩한다.

VLAN 10에서 목적지 MAC 주소를 모름
→ VLAN 10 포트들로만 플러딩

VLAN 20 포트로는 보내지 않음

이렇게 VLAN은 브로드캐스트나 플러딩의 범위를 제한한다.
그 결과 네트워크를 더 깔끔하게 나눌 수 있고, 불필요한 트래픽이 다른 영역으로 퍼지는 것을 막을 수 있다.

VLAN을 쓰면 물리 구조와 논리 구조를 분리해서 생각할 수 있다

VLAN이 중요한 이유는 물리적인 연결과 논리적인 네트워크 구성을 분리할 수 있기 때문이다.

예전에는 네트워크를 나누려면 물리적으로 장비를 나눠야 한다고 생각하기 쉽다.

개발팀용 스위치
인사팀용 스위치
게스트용 스위치

이런 식으로 말이다.

하지만 VLAN을 사용하면 하나의 스위치 안에서도 논리적으로 네트워크를 나눌 수 있다.

하나의 스위치
├─ VLAN 10 개발팀
├─ VLAN 20 인사팀
└─ VLAN 30 게스트

물리적으로는 같은 장비를 공유하지만, 논리적으로는 서로 다른 네트워크처럼 관리할 수 있다.

이게 VLAN의 핵심이다.

스위치를 단순히 “랜선을 많이 꽂는 장비”로만 보면 VLAN이 잘 와닿지 않는다.
하지만 스위치를 “프레임을 보고 어느 포트로 보낼지 판단하는 장비”로 보면 VLAN이 자연스럽게 붙는다.

스위치는 이제 이렇게 판단한다.

어느 포트에서 들어왔지?
그 포트는 어느 VLAN이지?
목적지 MAC 주소는 같은 VLAN 안에 있나?
Access Port로 내보낼까?
Trunk Port로 보낼 거면 VLAN Tag를 붙여야 하나?
다른 VLAN이면 라우팅이 필요한 상황인가?

VLAN은 스위치의 판단 범위를 나누는 기준이다.
하나의 스위치를 여러 개의 작은 네트워크처럼 사용할 수 있게 해주는 방법이다.

그래서 VLAN을 이해하면 “같은 스위치에 꽂혀 있는데 왜 통신이 안 되지?” 같은 상황도 조금 다르게 보인다.

물리적으로 연결되어 있는지뿐만 아니라, 논리적으로 같은 VLAN에 있는지도 봐야 한다.
그리고 VLAN이 다르다면, 그 사이에 라우팅이 가능한 구조가 있는지도 확인해야 한다.

profile
밥 잘 먹고 잠 잘 잡니다

0개의 댓글