학습자료(~2017)/네트워크

[Virtual Lan] vlan 개념 및 설정

단세포소년 2013. 6. 25. 21:00
반응형

참고 :

 http://plucky.tistory.com/19
http://ryusstory.tistory.com/177
http://blog.naver.com/PostView.nhn?blogId=hhihealth&logNo=150164848875
http://helpboy.tistory.com/entry/%ED%8D%BC%EC%98%A8%EA%B8%80-VLAN-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC
http://jeongsam.net/38
http://cloudroot.blogspot.kr/2012/01/26-vlan.html
http://kthan.tistory.com/99
http://ko.wikipedia.org/wiki/%EA%B0%80%EC%83%81_%EB%9E%9C
http://en.wikipedia.org/wiki/VLAN_Trunking_Protocol
http://okay19.tistory.com/entry/VTP-VLAN-Trunking-Protocol
http://blog.daum.net/ksch2120/2
http://blog.naver.com/PostView.nhn?blogId=demonicws&logNo=40108781898&redirect=Dlog&widgetTypeCall=true
http://www.ccnpguide.com/end-to-end-vs-local-vlan-models/ - End-to-End vs. Local VLAN Models
https://wiki.ubuntu.com/vlan - Ubuntu vlan 설정
http://docs.fedoraproject.org/en-US/Fedora/17/html/System_Administrators_Guide/s2-networkscripts-interfaces_802.1q-vlan-tagging.html - Fedora vlan 설정
http://netgear.tonidoid.com/app/webshare/share/NETGEAR%20Switch%20Tech%20Documents/[Switch]%20LACP_%EC%84%A4%EC%A0%95%EB%B0%A9%EB%B2%95.pdf - LACP 구성방법


http://www.netmanias.com/ko/?m=view&id=techdocs&no=4814 - vlan 기본 개념(정리가 잘되어 있음)


목차
개념
장점
VLAN 구성 방법
VTP (VLAN Trunking Protocol)
 - Trunking(트렁킹)
 - Tagging
 - Trunk 의 필요성
 - VTP Mode(모드)
 - switchport mode 명령어의 Trunk 설정
 - VTP Prunig (프루닝)
VLAN 설정
 - linux VLAN 설정
VLAN 활용
VALN 간 통신





개념

Vlan 이란 Virtual Local Area Network 의 약자로 물리적 배치와 상관없이 논리적으로 LAN을 구성할 수 있는 기술이다.

예를 들자, 집에 2개의 스위치가 있고 2개의 스위치가 각각의 컴퓨터들을 연결했다고하자. 이 2개의 스위치는 서로 연결되지 않았다고하자. 그럼 2개의 스위치의 컴퓨터들은 서로 통신할 방법이 없다. 이것이 물리적 lan 환경이다. 물리적으로 서로를 떨어트려 독립적인 네트워크를 구성한 것이다.

VLAN 은 이런 물리적 네트워크 구성이 아닌 논리적 네트워크 구성을 가능케한다. 하나의 스위치가 있고 이 스위치에는 포트가 1~10 까지 있다고 하자. 1~5 를 VLAN 1 로 6~10을 VLAN 2 로 설정했다면 물리적으로 같은 스위치에 존재해도 VLAN 1과 VLAN 2는 서로 통신하지 못한다.

스위치의 모든 인터페이스는 동일 브로드캐스트 도메인에 포함되어 있으나 VLAN을 적용할 경우 스위치의 일부 인터페이스를 하나의 브로드캐스트 도메인으로 구성하고, 다른 인터페이스를 또다른 브로드캐스트 도메인으로 구성하여 여러 개의 도메인을 만들수 있습니다. 이렇게 스위치에 의해 논리적으로 만들어진 브로드 캐스트 도메인을 VLAN이라고 합니다.



장점

1 . 네트워크 리소스 보안을 높인다.

네트워크 그룹 설정을 변경하거나 이동하게 되면 보안상의 문제가 발생할 우려가 있지만 VLAN을 이용하면 실제적인 네트워크 그룹의 이동이 없어도 되어 보안상의 문제를 쉽게 줄일 수 있다.


2. 비용을 절감할 수 있다.

VLAN 기술을 쓰지 않는다면 서로 차단된 LAN 환경을 구축할 때 장비가 추가로 필요하게 된다. 하지만 VLAN을 이용한다면 장비의 추가 없이 차단된 LAN 환경을 구축할 수 있다.


3. 관리자의 네트워크 설정작업에 용이하다.

네트워크 관리자가 특정 장비의 네트워크 그룹을 옮겨야할 때 실 장비를 옮기는 과정없이 스위치 설정만으로 네트워크 그룹을 옮길수 있으므로 편하다.


4. 불필요한 트래픽을 줄인다.

VLAN 은 서로 다른 네트워크 그룹이기 때문에 브로드케스트 패킷이 다른 VLAN으로 전송되지 않습니다.

세분화하여 Broadcat domain 을 나눌 수 있기 때문에 불필요한 트래픽을 현격히 줄일수 있습니다.

예를 들어 IP 전화기의 트래픽과 PC의 트래픽을 분리합니다.



VLAN 구성 방법

1. PORT



스위치의 각 포트별로 VLAN을 할당하는 방법이다. 예를들어 FastEthernet 0/1,2,3 을 VLAN 10 , FastEthernet 0/4,5,6 을 VLAN  20 으로 각각의 포트에 대해 다른 VLAN을 설정 하는 것이다.

장비(PC와 같은 장비)에 어떠한 설정도 따로 해 줄 필요가 없고 VLAN을 구성하는 포트에 장비를 연결하면 그 장비는 해당 VLAN의 네트워크 그룹에 포함되는 방식이다.

설정은 쉽지만 장비에 대해서 VLAN을 설정하는 방법이 아니기 때문에 장비가 다른 포트에 연결된다면 해당 장비는 다른 VLAN 을 구성하게 된다. 




2. MAC address



모든 장비에는 고유의 MAC address 를 가진다. 스위치에 특정 MAC address에 대해 VLAN 을 구성하면 해당 장비가 어떤 포트에 연결되던 동일한 VLAN 구성을 갖는다. VLAN을 관리하는 관리자가 각 장비별로 MAC address 를 알고 있어야한다는 점에서 불편하다. NIC(Network Interface Card) 를 추가하거나 교환하거나 하는 상황에서 스위치의 MAC address 에 관한 VLAN 을 다시 구성해야한다는 점에서 불편할 수도 있다.





3. End-to-End VLANs



VLAN 이 전체 스위치(스위치간) 네트워크에 걸쳐져있는 것을 말한다.

만약 사용자가 이동하더라도 user VLAN 멤버쉽은 그대로 유지된다. end-to-end vlan 은 80%의 트래픽은 local workgroup안에서 이루어지고 20%만 remote resource를 목적지로 나가는 상황에서 좋다.

end-to-end VLAN은 설정하기 간편하고 편리한 장점이 있지만 모든 트래픽이 core-layer를 지나가게 되므로 Broadcast Storm 이나 L2 Bridging Loop 와 같은 이유로 CPUI의 리소스를 많이 사용하게되어 Enterprise Network 에서는 권장되지 않습니다.

사용자의 물리적 위치에 상관없이 동일한 VLAN에 묶일수 있습니다.





4. Local VLANs



VLAN 이 각 Access-layer 에 따라서 VLAN이 다르게 지정되는 것을 말합니다.

end-to-end VLAN과 반대로 사용자가 이동하면 다른 VLAN에 묶이게 됩니다.

20%의 트래픽이 Local에서 일어나고 80%의 트래픽이 Remote resource 에서 일어날 때 좋습니다. Local VLAN을 사용하면 처음 생성과 관리에는 불편하지만 장애 발생시 장애 요인을 찾기가 쉽습니다.







VTP (VLAN Trunking Protocol)

복수개의 스위치들이 VLAN 설정 정보를 교환할 때 사용하는 프로토콜



Trunking(트렁킹)

각기 다른 VLAN이 데이터를 주고 받을수 있게 하는 한 라인으로 된 통로입니다. VLAN 이 N개 일때 스위치간 링크는 N개여야합니다. Trunking 은 VLAN 이 N개 여도 하나의 통합 링크를 통해서 패킷을 보내는 방식입니다. 하나의 통합 링크를 통해 보내므로 각 패킷이 포함된 VLAN 정보를 알수 없습니다. 그래서 패킷에 자신의 VLAN 정보를 넣어 보내는 방식을 사용합니다. 이렇게 자신의 VLAN 정보를 붙여 보내는것을 Tagging 이라고 합니다.



여러 대의 스위치가 서로 연결되어 있는 네트워크에서 VLAN을 사용할 때 스위치는 서로 VLAN 정보를 주고 받아야합니다. 스위치간 연결된 포트간 세크먼트를 VLAN Trunking을 사용하여 해결합니다. VLAN Trunking이 만들어지면 스위치는 VLAN Tagging 이라는 과정을 이용하여 VLAN 정보를 교환합니다.

즉, 다시말해 스위치하나가 아닌 서로 다른 스위치의 장비를 같은 VLAN 으로 묶고 싶을 때 VLAN 정보를 스위치간에 공유해야되는데 이 VLAN 정보를 공유하는 것이 Trunking 이고 Tagging 이란 과정을 이용해 교환하는 규칙이 VTP(VLAN Trunking Protocol) 입니다.

만일 Trunking 이 지원되지 않는다면 스위치에 만들어진 VLAN의 개수만큼 스위치끼리 링크가 필요할 것입니다.




Tagging

VLAN ID는 트렁킹 프로토콜에서 VLAN을 구분하는 용도로 사용합니다. 이렇게 VLAN에 ID를 붙여서 구분하는 방법을 프레임 태깅(Frame Tagging) 이라고 합니다. ethernet 에서 사용하는 가장 대표적인 프레임 태깅 기술은 다음과 같습니다.

즉, 패킷에 VLAN ID를 붙여 이 패킷이 어떤 VLAN 에 포함되있는지 구분하여 받을지 말지를 결정하는 역활을 합니다.
예를들어 2개의 스위치가 있고 1번 스위치의 VLAN 10번의 장비가 2번 스위치의 VLAN 10번에게 패킷을 보낼때 1번 스위치의 장비는 패킷에 VLAN 10 번 이라는 Tag를 달아 2번 스위치에게 보내주게 됩니다. 2번 스위치는 이를 받아 풀어보면(untag) 이 패킷이 VLAN 10번에서온 패킷이라는 것을 알고 자신의 VLAN 10에 포함된 장비에게 이 패킷을 보냅니다. 다른 VLAN 에게는 이 패킷을 보내지 않습니다. Tag는 패킷이 어떤 VLAN에서 보내졌는지 알기위한 수단으로 사용합니다.

 - ISL(Inter-switch link) : 시스코 전용 트렁킹 프로토콜. 카탈리스트 1700과 같이 예전 스위치 모델에서만 지원합니다.

 - IEEE 802.1Q : IEEE 표준 트렁킹 프로토콜. 대부분의 카탈리스트 스위치 모델에서 지원합니다.





Trunk 의 필요성

Ethernet Switched Network 의 확장성과 비용 절감을 위해 필요합니다.

VLAN ID 는 같으나 물리적인 위치가 다른 VLAN 사이에 통신이 필요한 경우 필요합니다.

Switch 사이에서 하나 이상의 VLAN Traffic들을 효과적으로 전송해야 할 경우 필요합니다.

여러 VLAN 이 하나의 라우터와 하나의 물리 인터페이스를 공유해야 할 경우 필요합니다.

여러 VLAN이 하나의 Server를 공유해야 하는 경우 필요합니다.




VTP Mode(모드)



1. Server (서버)

 - VLAN 생성, 삭제, 수정 가능, 자신의 VLAN 설정 정보를 다른 스위치에 전송

 - 다른 스위치에게서 받은 정보와 자신의 정보를 일치 시키며(VLAN database 동기화), 이를 다른 스위치에게 중계

 - 매주기로 VLAN 정보를 전달한다. (다른 스위치가 연결되었을때 이 스위치가 VLAN 정보를 먼저 요청하지 않는다.)

 - Default 설정시 server 로 동작


2. Client (클라이언트)

 - VLAN 생성/삭제 불가능, Server 에게 받은 VLAN 정보가 자신의 VLAN 정보보다 낮은 Revision Number 일 경우 자신의 VLAN 정보를 보내줌

 - 다른 스위치의 정보를 자신의 VLAN 정보와 일치시키고 다른 스위치에게 중계

 - Client 가 접속시 먼저 VLAN 정보를 요청하지 않는다.


3. Transparent (트랜스패런트)

 - 자신의 VTP정보를 다른 스위치에게 전송하지 않으며 다른 스위치에게서 받은 정보와 일치 시키지 않음

 - 다른 스위치에게서 받은 정보를 중계하며, 자신만 사용할 (LOCAL) VLAN을 생성/삭제 가능



switchport mode 명령어의 Trunk 설정

 인터페이스 하위 명령어 옵션

명령 설명 

 access

 트렁킹 사용을 막고, 포트가 항상 access 포트로 사용되게 한다.

 한 포트가 한개의 VLAN 정보를 이동시킬 수 있다.

 trunk

 항상 트렁킹 포트로 사용한다. 

 한 포트가 여러개의 VLAN 정보를 이동시킬 수 있다.

 dynamic desirable

 협상 메시지를 보내고 응답하며, 협상을 통해 트렁킹 사용 여부를 동적으로 선택한다. 만약 이웃 포트가 trunk, desirable, auto 모드로 설정되어 있다면 트렁크 포트로 설정된다. access 일 경우 액세스 포트로 설정된다.

 dynamic auto

 트렁크 협상 메시지를 수신하며, 협상 메시지에 반응해 트렁킹의 사용 여부를 선택한다. 만약 이웃 포트가 trunk, desirable 모드라면 트렁크 포트로 설정된다. 패스트와 기가비트 이더넷 포트에서 디폴트 모드이다. access 나 auto일 경우 액세스 포트로 설정된다.




VTP Prunig (프루닝)



필요 없는 브로드캐스트 트래픽이 트렁크 포트를 통하여 전송되는 것을 차단하는 것을 말한다.




Trunk 구성 방법


VLAN 설정

Switch Vlan Access Mode 설정

 Switch (CISCO SF 200E-24 24-Port 10/100 Smart Switch)
 Cisco eCos-2.0
 직접해봄

 VLAN 생성

(switch)$ vlan database
(switch) (Vlan)$ vlan {vlan-number}
(switch) (Vlan)$ vlan {vlan-number} name {vlan-name}

예)
(switch)$ vlan database
(switch) (Vlan)$ vlan 10
(switch) (Vlan)$ vlan 10 name ADMIN
(switch) (Vlan)$ vlan 20
(switch) (Vlan)$ vlan 20 name IPMI
(switch) (Vlan)$ vlan 30
(switch) (Vlan)$ vlan 30 name REPLICATION

 VLAN 생성 확인

(switch)$ show vlan
VLAN ID VLAN Name                        VLAN Type
------- -------------------------------- ---------
1       Default                           Default
10      ADMIN                             Static
20      IPMI                              Static
30      REPLICATION                       Static

 포트에 VLAN 배정

(switch)$ configure
(switch) (config)$ interface {port}
(switch) (interface e1)$ switchport mode access
(switch) (interface e1)$ switchport access vlan {vlan-number}

예)
(switch)$ configure
(switch) (config)$ interface e4
(switch) (interface e1)$ switchport mode access
(switch) (interface e1)$ switchport access vlan 20

 포트 배정 확인

(switch)$ show interfaces switchport <port-type><port>


예)
switch)$ show interfaces switchport e1

Port: e1
VLAN Membership mode:Access Mode

Operating parameters:
PVID: 10
Ingress Filtering: Enabled
Acceptable Frame Type: Untagged
Default Priority: 0

Port e1 is member in:

VLAN    Name                              Egress rule   Type
----    --------------------------------- -----------   --------
10      ADMIN                             Untagged      Static

Static configuration:
PVID: 10
Ingress Filtering: Enabled
Acceptable Frame Type: Untagged

Port e1 is statically configured to:

VLAN    Name                              Egress rule
----    --------------------------------- -----------
10      ADMIN                             Untagged



Switch Vlan Trunk Mode 설정


 Switch (CISCO SF 200E-24 24-Port 10/100 Smart Switch)

 Cisco eCos-2.0
 직접해봄

 VLAN 생성

(switch)$ vlan database
(switch) (Vlan)$ vlan {vlan-number}
(switch) (Vlan)$ vlan {vlan-number} name {vlan-name}

예)
(switch)$ vlan database
(switch) (Vlan)$ vlan 10
(switch) (Vlan)$ vlan 10 name ADMIN
(switch) (Vlan)$ vlan 20
(switch) (Vlan)$ vlan 20 name IPMI
(switch) (Vlan)$ vlan 30
(switch) (Vlan)$ vlan 30 name REPLICATION

 VLAN 생성 확인

(switch)$ show vlan
VLAN ID VLAN Name                        VLAN Type
------- -------------------------------- ---------
1       Default                           Default
10      ADMIN                             Static
20      IPMI                              Static
30      REPLICATION                       Static

 포트에 VLAN 배정

(switch)$ configure
(switch) (config)$ interface {port}
(switch) (interface e1)$ switchport mode trunk
(switch) (interface e1)$ switchport trunk allowed vlan add {vlan-number}

예)
switch)$ configure
(switch) (config)$ interface e20
(switch) (interface e1)$ switchport mode trunk
(switch) (interface e1)$ switchport trunk vlan add 10
(switch) (interface e1)$ switchport trunk vlan add 20
(switch) (interface e1)$ switchport trunk vlan add 30

 포트 배정 확인

(switch)$ show interfaces switchport <port-type><port>

예)

switch)$ show interfaces switchport e20

Port: e20
VLAN Membership mode:Trunk Mode

Operating parameters:
PVID: 1
Ingress Filtering: Enabled
Acceptable Frame Type: Admit All
Default Priority: 0

Port e20 is member in:

VLAN    Name                              Egress rule   Type
----    --------------------------------- -----------   --------
1       Default                           Untagged      Default
10      ADMIN                             Tagged        Static
20      IPMI                              Tagged        Static

Static configuration:
PVID: 1
Ingress Filtering: Enabled
Acceptable Frame Type: Admit All

Port e20 is statically configured to:

VLAN    Name                              Egress rule
----    --------------------------------- -----------
1       Default                           Untagged
10      ADMIN                             Tagged
20      IPMI                              Tagged








linux VLAN 설정 (switch port를 trunk mode로 하였을시)

만약 스위치의 포트 설정이 trunk 로 되어 있다면 NIC 네트워크 인터페이스를 통해 나가는 패킷에 vlan id를 붙여야(tagging) VLAN 을 설정한 스위치가 해당 패킷의 VLAN 을 알수 있다. 만약 네트워크 인터페이스에 vlan id 태깅 작업을 하지 않는다면 해당 인터페이스에서 나가는 패킷이 포함된 VLAN 정보를 알수 없어 목적지에 도달하지 못한다.(vlan id 태깅을 하지 않으면 스위치 기본 vlan 인 vlan id 1 로 판단한다.)

따라서 운영체제의 네트워크 인터페이스에 vlan 설정을 해주어야 한다.

이해를 돕기 위해 예를 들어보자. 스위치의 1번,2번 포트를 vlan 10으로 묶었다. 1번과 2번에는 리눅스 장비가 연결되어 있다. 만약 1번 장비의 운영체제에 vlan 설정을 하지 않고 2번 장비를 목적지로 패킷을 보낸다면 vlan id 가 tagging 되지 않고 스위치에 도달할 것이다. 스위치는 받은 패킷의 vlan 정보를 확인했는데 vlan 정보가 없다. 스위치는 이것을 default vlan id 1 로 판단하고 목적지를 찾을 것이다. 스위치 2번 포트는 vlan id 10으로 설정되어있기 때문에 목적지에서 제외한다. 결국 이 패킷을 갈곳을 잃는다.

 Ubuntu (직접해봄)

 switch port 설정을 trunk 모드로 하였을시

설치

sudo apt-get install vlan


설정

8021q 커널 모듈 로드

sudo modprobe 8021q


8021q 커널 모듈 로드 확인

sudo lsmod | grep 8021q

 

vlan id 10을 위한 새로운 인터페이스 생성

sudo vconfig add eth1 10


새로운 인터페이스에 주소 할당

sudo ip addr add 10.0.0.1/24 dev eth1.10


재부팅시에도 vlan 설정을 유지하기 위한 설정

부팅시 커널에 모듈 추가

sudo su -c 'echo 8021q >> /etc/modules'


새로운 인터페이스에 대한 설정값을 /etc/network/interfaces에 설정

auto eth1.10
iface eth1.10 inet static
address 10.0.0.1
netmask 255.255.255.0
vlan-raw-device eth1 


network 서비스 재실행

service networking restart



Fedora/Centos/RHEL (직접해보지는 않음)

 8021q 커널 모듈 확인

lsmod | grep 8021q


 8021q 커널 모듈 로드

modprobe 8021q



/etc/sysconfig/network-scripts/ifcfg-ethN (N은 숫자임) 에 물리 네트워크 인터페이스 설정은 아래와 같다.
물리 네트워크를 통해 vlan tagging 패킷을 보낼것이다. 이때 물리 네트워크 인터페이스에 대한 가상 인터페이스를 하나 만들어야한다.

DEVICE=ethN #예를 들어 eth0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=YES


ethN 에 대한 가상 인터페이스 설정, 만약 vlan id 가 192 라면 아래와 같이 설정한다.

DEVICE=ethN.192   #예를 들어 eth0.192
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.1
NETMASK=255.255.255.0
USERCTL=no
NETWORK=192.168.1.0
VLAN=yes


네트워크 서비스 재실행

systemctl restart network.service



다른 방법으로는 vlanX 인터페이스를 사용하는 방법이다.

VLAN=yes
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
DEVICE=vlan5
PHYSDEV=eth0
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=10.254.5.254
NETMASK=255.255.255.0




VLAN 활용

 테스트를 위해 여러 서버를 구축했고 스위치가 하나일때 이미 이 스위치는 서비스를 위해 활용되고 있을때 vlan 을 사용한다. 테스트를 위한 서버들을 vlan 으로 묶으면 서비스하는 서버들에게 영향을 주지 않기 때문이다. 혹시라도 테스트 서버에서 트래픽을 유발하거나 임의의 접근루틴등이 있어도 테스트 서버들은 vlan 으로 묶여있기 때문에 문제가 발생되지 않는다.

외부와 통신하는 서버 즉 실제 사용자와 인터넷을 이용하여 통신하는 서버가 몇개 있고 백엔드에서 작업을 처리해 주는 서버가 있다고 하자. 백엔드에서 작업을 처리해 주는 서버는 인터넷 망에 연결될 필요가 없고 인터넷 망에 연결되어있다면 보안적으로 문제가 발생할 수 있다. 이런 백엔드에서 작업을 처리해주는 서버들을 vlan으로 묶는 것이다.



VALN 간 통신

이것은 링크로 대신하겠다. (만질수 있는 라우터가 없기에.. 테스트를 못하겠다.)

 http://blog.naver.com/PostView.nhn?blogId=gudwlsl1213&logNo=20129196992&redirect=Dlog&widgetTypeCall=true

 http://iorora.web-bi.net/tech/study/inter-vlan.pdf



반응형