TIL 04. 스위치: 2계층 장비

스위치? - 네트워크에서 통신을 중재하는 장비.


1) 스위치 장비 동작

- 스위치의 핵심 역할

  • 누가 어느 위치에 있는지 파악하고, 실제 통신이 시작되면 자신이 알고 있는 위치로 패킷을 정확히 전송하는 역할.
  • 단말의 주소인 MAC 주소와 단말이 위치하는 인터페이스 정보(포트 정보)를 매핑한 MAC 주소 테이블을 갖고 있어서 가능하다.

(1) 플러딩

  • 만약 테이블에 없는 도착지 주소를 가진 패킷이 스위치로 들어오면 스위치는 전체 포트로 패킷을 전송한다. (플러딩)

플러딩은 스위치의 정상적인 동작이지만 이런 동작이 많아지면 스위치가 제 역할을 못 하게 된다. 이런 동작을 응용해 네트워크를 공격하는 기법이 있다.

  1. 스위치에게 엉뚱한 MAC 주소를 습득시킨다.
  2. 스위치의 MAC 테이블을 꽉 차게 해 스위치의 플러딩 동작을 유도한다.
  3. ARP 포이즈닝(Poisoning) 기법을 이용해 모니터링해야 할 IP의 MAC 주소가 공격자 자신인 것처럼 속여 원하는 통신을 받는다.

아무 이유없이 스위치가 패킷을 플러딩한다면(주변 다른 통신을 모니터링할 수 있다면) 스위치가 비정상이거나 주변에서 공격이 수행되고 있다는 점을 알아차려야 한다.


(2) 어드레스 러닝

  • 스위치가 패킷을 원하는 포트로 정상적으로 포워딩하기 위해선, MAC 주소 테이블을 만들고 유지해야 하는데, 이 일련의 과정을 어드레스 러닝이라 한다.
  • 어드레스 러닝 작업은 패킷의 출발지 MAC 주소 정보를 이용한다.

(3) 포워딩 / 필터링

  • 패킷이 스위치에 들어온 경우, 자신이 가진 MAC 테이블과 패킷의 도착지 MAC 주소를 확인해 매치되는 정보가 있으면 매치되는 포트로 패킷을 포워딩한다. 이떄 다른 포트로는 해당 패킷을 보내지 않으므로 이 동작을 필터링이라 한다.
  • 스위치는 일반적인 유니캐스트(1:1)에 대해서만 포워딩과 필터링 작업을 수행한다.

LAN에서의 ARP

  • 패킷을 만들기 전에 통신해야 하는 단말의 MAC 주소를 알아내기 위해 ARP 브로드캐스트가 먼저 수행되어야 한다. 따라서 유니캐스트보다 ARP 브로드캐스트가 먼저 네트워크에 전달된다.
  • 위의 ARP를 이용해 MAC 주소 습득 과정에서 이미 스위치는 통신하는 출발지와 목적지의 MAC 주소를 습득할 수 있다.
  • 위의 과정을 통해 만들어진 MAC 주소 테이블 정보는 일정 시간동안 지워지지 않는데 이 시간을 에이징 타임(Aging Time) 이라고 하며, 일반적으로 에이징 타임이 단말의 ARP 에이징 타임보다 길어 네트워크를 플러딩 없이 효율적으로 운영할 수 있다.


2) VLAN (가상 스위치라 생각하자)

  • VLAN? - 하나의 물리 스위치에서 물리적 배치와 상관없이 논리적으로 분할, 구성하는 가상화 기술.
  • 스위치에서는 오래 전부터 VLAN이라는 가상화 기술을 사용해 왔다. 하나의 물리 스위치에서 물리적 배치와 상관없이 논리적으로 분할, 구성하는 기술이다.
  • 다른 VLAN이라는 의미는 다른 네트워크라는 의미다. 즉, 다른 VLAN끼리의 통신을 위해선 L3 계층 장비가 필요하다.(ex: 라우터)
  • 물리적으로 다른 층에 있는 단말끼리도 네트워크로 묶을 수 있다는 특징이 있다.

(1) VLAN의 종류

  1. 포트 기반의 VLAN
    • VLAN 개념이 처음 도입됐을 시점엔 스위치 장비가 고가의 장비였고, 여러 허브를 묶는 역할을 담당했기에 스위치를 분할해 여러 네트워크에 사용하는 것이 주 사용 목적이었다. 즉, 포트 기반 = 스위치를 논리적으로 분할해 사용

  1. MAC 주소 기반의 VLAN (Dynamic VLAN)
    • 시간이 지남에 따라, 네트워크 사용자들의 자리 이동이 많아지며 MAC 기반 VLAN이 개발됐다. 스위치의 고정 포트에 할당하는 것이 아니라 스위치에 연결되는 단말의 MAC 주소를 기반으로 VLAN을 할당하는 기술이다. 다이나믹 VLAN이라고도 부른다.

(2) VLAN 모드 (Trunk / Access) 동작 방식

  • 트렁크 (Trunk)

    • 여러 개의 VLAN이 구성된 경우, VLAN끼리의 통신을 위해선 VLAN 개수만큼의 포트가 필요하다. 즉, 3개의 VLAN이 구성된 경우, 각 VLAN에서 3개의 포트를 사용해야 한다. 소규모라면 괜찮겠지만, 중·대형의 네트워크에서 이 방식으로는 많은 포트 낭비가 발생한다.

    • 위 문제를 해결하고자 나온 기능이 트렁크 포트 기능이며, 한 포트에서 각 VLAN 간의 연결을 전담하게 된다.



3) STP

SpoF 란?

  • Single Point of Failure (단일 장애점)이란 의미로 하나의 시스템이나 구성 요소에서 고장이 발생했을 때 전체 시스템의 작동이 멈추는 요소를 의미.
  • SpoF를 막고자 일반적으로 네트워크도 이중화, 다중화된 네트워크를 구성하며, 이를 위해 2대 이상의 스위치로 디자인하는 경우가 있다.

!! 스위치와 SpoF

  • SpoF를 피하고자 2대 이상의 스위치로 구성할 경우, 네트워크가 마비되는 상황이 발생할 수 있다. 흔히 이런 상황을 네트워크 루프(Loop)라고 일컫는다. 이를 예방하려면 별도의 메커니즘이 필요한데, 루프와 루프를 예방하기 위한 프로토콜에 대해서 배워보자.

(1) 루프란?

  • 네트워크에 연결된 모양이 고리처럼 되돌아오는 형태로 구성된 상황을 의미하며, 네트워크가 마비되고 통신이 안 되는 상황이 발생한다. 큼직하게 3가지 이유가 있지만, 대부분 브로드캐스트 스톰으로 인한 문제인 경우가 많다.

  1. 브로드캐스트 스톰

    • 루프 구조인 네트워크에 연결된 단말에서 브로드캐스트를 발생시키면 스위치는 이 패킷을 발생시킨 포트를 제외한 모든 포트로 플러딩한다. 이 플러딩된 패킷이 다른 스위치로도 보내지고, 이 패킷을 받은 다른 스위치는 앞선 스위치처럼 플러딩한다. 이런 방식으로 브로드캐스트 패킷이 지속적으로 돌아가는 상황을 지칭한다.
    • L3 계층에선 TTL(Time to Live)이라는 패킷 수명이 존재하지만, 2계층 헤더에는 이런 제한 시간이 존재하지 않아 패킷 하나가 모든 네트워크 대역폭을 차지할 수 있다. 이게 누적되면 네트워크에 연결된 모든 단말이 브로드캐스트를 처리하기 위한 시스템 리소스를 사용하면서 네트워크가 마비 증상을 보이게된다.

  2. 스위치 MAC 러닝 중복 문제

    • 브로드캐스트 말고도 유니캐스트로 문제가 발생한다. 스위치는 출발지 MAC 주소를 학습하는데 (1)직접 전달되는 패킷(2)스위치를 돌아 들어간 패킷 간의 포트가 달라 MAC 주소를 정상적으로 학습할 수 없다. (1) 패킷과 (2) 패킷의 학습이 지속된다는 건 MAC 테이블이 반복 갱신되어 정상적으로 동작하지 않는다는 의미다. 이 현상을 **MAC 어드레스 플래핑(MAC Address Flapping)**이라 한다.
    • 어드레스 플래핑 같은 현상의 근본인 루프 현상이 발생하지 않도록 네트워크에 조치를 해야하는데 이를 위한 방법으로 하나의 포트만 사용하지 못하도록 셧다운을 할 수 있다. 하지만, SpoF를 예방하기 위해 스위치를 2개 이상 디자인했는데 다시 수동으로 강제로 사용하지 못하게 하는 방법은 바람직하지 않다.
    • 위의 이유로 루프를 자동 감지해 포트를 차단하고 장애 때문에 우회로가 없을 때 차단된 포트를 스위치 스스로 다시 풀어주는 **스패팅 트리 프로토콜(STP)**이 개발됐다.

  3. STP 란?

    • 2에서 설명한 대로 루프가 생기지 않도록 예방하는 메커니즘이다. 스위치 연결 상황을 파악하기 위해 BPDU (Bridge Protocol Data Unit)이라는 프로토콜을 통해 스위치 간에 정보를 전달하고, 이를 기반으로 전체 네트워크 트리를 만들어 루프 구간을 확인한다.
  • 이에 관한 설명은 추후 수정하도록 하겠다.