L2 스위치 포트포워딩 - l2 seuwichi poteupowoding

Switch가 하는일은 경로 선택, 즉 Switching이다. Switching을 해주는 기기는 모두 Switch이기 때문에, 어떤 한 장치를 지칭하는 단어가 아니라는 점에 유의해야 한다. 대표적인 예로 Router는 기본적으로 IP Layer에서 스윗칭을 하는 기기다. 즉, 스위치는 라우터를 포함하는 개념이다. 이걸 왜 설명하지?라고 생각할 수 있겠지만 필자는 헷갈렸다..

네트워크를 도로로, 패킷을 자동차라고 생각했을 때, Switch는 교차로에 존재하고있다가, 그 교차로에서 routing table이라는 이정표를 보고 패킷이 가야할 경로로 switching해준다. 물론 이때 이 routing table을 적절한 알고리즘으로 계산하기 위해 자기들끼리 프로토콜을 가지고 최적화된 경로를 결정한다.

자 여기서 이제 스위치에 대해 알아야 할 용어들을 정리해보자

  • 스위치 : 교차로에 존재하면서, 스위칭을 하는 기기
  • 스위칭 : 경로를 선택하는 행위
  • 라우팅 테이블 : 스위치가 경로를 선택하기 위해 참고하는 이정표
  • 라우터 : L3스위치의 일종

정리하면 인터넷을 이루는 요소 중 가장 큰 역할을 하는 스위치인 라우터는 L3스위치의 일종이다. 그 외에도 다양한 종류의 스위치가 있으며, 본 글에서는 어떤 종류의 스위치가 있는지 다뤄보도록 하겠다.

L2 스위치 포트포워딩 - l2 seuwichi poteupowoding

다양한 종류의 switch들

이렇게 각 종류의 스위치들을 OSI 7계층에 따라 각각 다뤄보는 이유는 각 레벨에서의 스위치들이 다 위 사진처럼비슷하게 생겼는데, 하는 역할이 다르기 때문이다. 그리고 이 스위치들을 다룰 때 한 가지 주의할 점은 스위치의 상위 계층은 하위 계층의 기능을 모두 포함하고 있다는 점이다. 쉽게 말해 L4 스위치는 L1~L3 스위치들의 기능을 다 가지고 있다.

L1 스위치 : 허브, 더미허브

L1 스위치는 말 그대로 OSI Layer1 계층에서 작동하는 스위치를 의미한다. L1기능만 하는 스위치를 허브라고 부르는데, 인터페이스에 꽂혀있는 모든 기기들에게 자신에게 넘어온 데이터를 모두 전달한다.

L2 스위치 : 스위칭 허브

L2 스위치는 MAC주소를 기반으로 자신에게 연결된 기기들을 식별하여 프레임을 전달한다. L2스위치인 이유는 MAC주소가 OSI계층 중 2계층에 해당하기 때문이다.

L2 스위치는 ~프로토콜에 의해 동작하고, 해당 프로토콜의 동작 방식은 추후 다른 글에서 자세히 다뤄보도록 하겠다.

L3 스위치 : 라우터, 공유기

L3 스위치는 IP주소를 기반으로 자신에게 연결된 기기들을 식별하여 패킷을 전달한다. L3 스위치인 이유는 IP주소가 OSI계층 중 3계층에 해당하기 때문이다. L3스위치를 라우터라고 부르며, 앞서 말했듯 상위계층의 스위치는 하위 계층의 기능을 포함하기 때문이 라우터는 L2스위치의 기능을 포함하고 있다.

L4 스위치 : 로드밸런서

L4 스위치는 IP주소와 포트 번호를 기반으로 자신에게 연결된 서버들에게 요청을 전달하고, 서버 작업 결과를 대신 받아 클라이언트에게 전달한다. 흔히 L4 스위치를 로드밸런서라고 부르고, 부하를 분산해서 여러 서버들에게 전달하는 역할을 담당한다. 부하 분산 뿐만 아니라 한 서버에서 장애가 발생했을 때 Failover 기능(ACITVE-ACTIVE / ACTIVE-STANDBY)을 담당한다.

L4 스위치의 특징은 아래와 같다

1) 메시지의 content를 확인하지 않는다.

2) IP 주소와 Port번호만으로 패킷의 경로를 선택한다.

3) 로드밸런서의 NAT에 의해 src, dest IP주소가 변경된다.

L7 스위치 : 리버스 프록시, 보안스위치

L7스위치는 어플리케이션 영역의 스위치로, L4와 비슷하게 서버들의 로드밸런싱을 위해 사용된다. 하지만 L4 스위치와의 차이는 아래와 같다.

L4 스위치(L4 로드밸런서) : OSI 3 Layer의 IP주소와 4 Layer의 TCP/UDP포트 정보를 보고 스위칭

L7 스위치 (L7 로드밸런서): IP주소 + 포트번호 + L5~L7(Session, Presentation, Application) 패킷 payload까지 보고 스위칭 (예: HTTP/HTTPS헤더, payload정보, URL type, 쿠키 등)

쉽게 말해 L4 로드밸런서는 포트번호를 이용하여 트래픽을 분산처리한다면, L7 로드밸런서는 패킷에 적힌 URL, 쿠키정보 바이러스 패턴을 분석하는 등 더 정교한 로드밸런싱을 수행한다. 또한 L7 로드밸런서는 웹방화벽, UTM장비와 같은 보안스위치라고도 부른다.


자 이제 여러 종류의 스위치에 대해 다루어봤다. 여기까지는 정말 초초초초초 기본이고, 이제 각 스위치들이 어떤 기능을 하는지, 어떤 프로토콜로 동작하는지 등에 대해 탐구해 봐야한다. 

스위치가 뭔지는 알아도 조금 더 구체적으로 들어가면 L2스위치, L3스위치, L4스위치, L7스위치 등... 숫자가 들어가지요. 스위치라고 다 똑같은 스위치가 아닙니다. L2와 같이 기능이 단순한 것도 있지만, L7과 같이 기능이 무지 많고 엄청 비싼 스위치도 있습니다.


스위치 계층

L2스위치, L3스위치, L4스위치 등 스위치를 보통 얘기할 때 스위치가 처리할 수 있는 계층(Layer)을 의미하는 숫자가 함께 붙습니다. 계층을 잘 모른다면 아래 글을 한 번 보시길 바랍니다.



"OSI 7 계층 vs TCP/IP 계층"



예를 들어, 보통 우리가 많이 쓰는 L2스위치는 MAC주소를 기반으로 패킷을 처리해주는 스위치입니다. L3스위치는 L2에 해당하는 MAC주소 뿐만 아니라, L3에 해당하는 IP주소를 기반으로 패킷처리가 가능합니다. 이런식으로 보면 L4스위치는 MAC, IP주소 뿐만 아니라 Port번호를 기반으로도 패킷을 처리해줄 수 있겠죠. 


계층별 스위치

계층별로 스위치가 패킷을 처리하는 개념을 보겠습니다.


L2스위치

Layer 2 기반의 스위치입니다. L2스위치는 PC들이 연결되면 NIC(Netwrok Interface Card)에 할당되어 있는 MAC주소들을 수집하여 각 포트별로 연결된 PC들을 구분합니다. 즉, MAC 주소 테이블을 관리한다는 뜻이구요. 이를 이용하여 L2스위치에 연결된 서로 다른 PC들이 통신을 한다면 L2스위치는 두 PC가 연결되어 있는 인터페이스로만 패킷을 전달합니다.



L2 스위치 포트포워딩 - l2 seuwichi poteupowoding

<출처: 구글검색>


예를 들어, 위와 같은 L2 스위치의 각 포트에 A, B, C, D의 시스템이 연결되어 있다면 L2스위치는 위와 그림에서처럼 MAC주소와 포트정보로 구성된 MAC테이블을 관리합니다. 그리고 A가 C에게 패킷을 보내기 위해서 C의 MAC주소를 목적지로 하는 패킷을 보내면 L2스위치는 C가 연결된 E2 인터페이스로만 패킷을 보냄으로써 C가 패킷을 수신하게 됩니다.

몇 가지 부연설명을 하자면,

- E1, E3에 연결된 B, D 시스템은 A가 C에게 보낸 패킷을 구경도 할 수 없습니다. 이유는 스위치가 그쪽으로 패킷을 아예 보내지도 않기 때문입니다. 참고로, 더미허브였다면 모든 패킷을 복사하여 모든 포트로 보내주기 때문에 B와 D도 C로 가는 패킷을 구경할 수 있습니다. 스니핑(snifing)이라고 하지요.

- 또하나, A가 C에게 보낸 패킷에는 L2에 해당하는 MAC주소 말고도 L3에 해당하는 IP주소도 있습니다. 하지만 L2는 L2의 헤더에 해당하는 MAC주소정보만 참고하고 나머지는 모두 관심없는 L3이상의 데이터이기 때문에 IP주소조차 확인하지 않습니다. L3스위치라면 IP까지도 볼 수 있겠지만요. 그래서 L2스위치는 IP정보를 이용하여 접근제어는 못하지만 MAC주소로 접근제어는 가능하겠죠. 


L3스위치

L3스위치는 L2와 L3의 정보를 모두 확인하기 때문에, L2보다 스마트하다고 할 수 있죠. L2가 할 수 있는 기능은 당연하고, L3에 해당하는 IP정보를 확인하여 패킷처리가 가능합니다. IP정보를 기반으로 패킷 필터링도 가능하겠죠. L3는 보통 네트워크와 네트워크간에 패킷을 전송하는 라우터에 해당됩니다.


L2 스위치 포트포워딩 - l2 seuwichi poteupowoding

<출처: 구글검색>

 

같은 네트워크가 아니라면 라우터를 통해 패킷이 목적지까지 라우팅되어야 원하는 목적지까지 패킷이 전달됩니다. 위 그림과 같이 라우터는 L3에 해당하는 IP정보를 처리하여 라우팅을 합니다.



L4스위치

그런식으로 L4스위치는 L2, L3는 물론 L4에 해당하는 Port정보를 확인하여 패킷처리가 가능합니다. 보통 Port정보를 이용해서 처리하는 것은 로드밸런싱이나 포트포워딩, QoS 등의 기능이 있죠. 보안기능으로 보면 소스IP/소스Port/목적지IP/목적지Port를 기반으로 패킷을 허용 또는 차단하는 기본적인 방화벽기능도 가능합니다. 점점 스마트해지고 점점 비싸지는 거죠...


아래 그림은, L4 스위치에 가상IP(Virtual IP)를 할당하고 포트에 따라 L4스위치 뒤에 실제로 배치된 웹 또는 메일서버(SMTP)로 연결하기도 하고 부하를 고려하여 로드밸런싱도 하는 예를 설명하고 있습니다.



L2 스위치 포트포워딩 - l2 seuwichi poteupowoding

<출처 : 구글검색>




L7스위치

L7 스위치는 예상하시는 것과 같이 패킷의 모든 계층의 정보를 커버할 수 있으니 하고 싶은 것은 다 할수 있겠죠. L4스위치가 하는 것은 물론이고, 웹프록시 같은 L7프로토콜을 처리하는 것도 가능하고, 캐싱도 가능합니다. 패킷을 검사하여 침입탐지도 가능합니다. 물론 기본적으로 스위치의 역할에 충실해야하니 너무 많은 기능을 넣으면 스위치 성능이 떨어질테죠.


L4와 L7 스위치를 비교하면 아래와 같습니다.


L2 스위치 포트포워딩 - l2 seuwichi poteupowoding

<출처 : 정보보안기사, 예문사>



결론

계층이 높을 수록 스마트하지만 비싼 스위치가 됩니다. 용도에 맞게 적절한 스위치를 사용하여 네트워크 인프라를 설계해야 합니다.

그리고 보안 담당자는 각 스위치의 동작원리를 어느정도 이해해야 합니다. 다른 시스템간의 통신을 훔쳐보는 것을 스니핑(sniffing)이라고 하는데, 이것을 막기위해 기본적으로 허브를 사용하지 않고 스위치를 사용합니다. 스위치를 사용하더라도 패킷을 내가 훔쳐볼 수 있도록 스위치 재밍(switch jamming)을 할수도 있으며, ARP spoofing을 이용하여 패킷을 훔쳐보고 변조할 수도 있습니다. 오늘은 이러한 공격기법을 설명한 것은 아니지만 이런 것들을 이해하려면 기본동작원리는 어느정도 이해해야 합니다.