개발하는 프로 국밥러
article thumbnail

IT 엔지니어를 위한 네트워크 입문

고재성, 이상훈님의 책을 보며 정리한 내용입니다.

문제가 될 시 해당글 삭제하겠습니다.


4계층 장비의 특징

  • 4계층 장비는 TCP 와 같은 4계층 헤더에 있는 정보를 이해하고 이 정보를 기반으로 동작한다.
    → 4계층에 대한 이해 없이 2,3 계층처럼 관리하게 되면 문제가 발생한다.
  • 4계층 장비에서 우선적으로 고려해야 할 요소는 다음과 같다.
    • 세션테이블
      • 세션 장비는 세션 테이블 기반으로 운영된다.
      • 세션 정보를 저장, 확인하는 작업 전반에 대한 이해가 필요하다.
      • 세션 정보는 세션 테이블에 남아 있는 라이프타임이 존재한다. 이 부분에 이해가 필요.
        → 3계층 라우터의 TTL (홉에서 패킷 생존기간) 을 생각해보자!
    • Symmetric(대칭) 경로 요구
      • Inbound, Outbound 경로가 일치해야 한다.
    • 정보 변경(로드 밸런서의 경우)
      • IP 주소가 변경되며 확장된 L7 로드밸런서(ADC) 는 애플리케이션 프로토콜 정보도 변경된다.

로드 밸런서

  • 서버나 장비의 부하를 분산하기 위해서 사용하는 장비를 로드 밸런서라고 부른다.
  • 트래픽을 분산하는 장비로 4계층 이상에서 동작하면서 IP주소, 4계층 정보, 애플리케이션 정보를 확인 수정하는 기능이 있다.
  • 로드 밸런서는 동작하는 계층에 따라서 보통 4계층과 7계층으로 나뉜다.
    • L4 로드 밸런싱
      • 일반적인 로드 밸런서가 동작하는 방식
      • TCP/UDP 정보(특히 포트 번호)를 기반으로 로드 밸런싱을 수행한다.
    • L7 로드 밸런싱
      • HTTP, FTP, SMTP 와 같은 애플리케이션 프로토콜 정보를 기반으로 로드 밸런싱을 수행한다.
      • HTTP 헤더 정보나 URI 와 같은 정보를 기반으로 프로토콜을 이해한 후 부하를 분산할 수 있다.
      • 일반적으로 이런 장비를 ADC(Application Delivery Controller) 라고 부르며 프록시 역할을 수행한다.

L4 스위치

  • 4계층에서 동작하며 로드 밸런서의 역할을 하는 스위치이다.
  • 내부 방식은 4계층 로드 밸런서이지만, 외형은 스위치처럼 여러 개의 포트를 가지고 있다.
  • L4 스위치가 동작하려면 가상서버, 가상IP, 리얼서버, 리얼IP를 설정해야 한다.
  • 가상 서버는 사용자가 바라보는 실제 서비스이고, 가상 IP는 사용자가 접근해야 하는 서비스 IP 주소이다.
  • 여기서 L4 스위치는 가상 IP를 리얼 IP로 변경해주는 역할을 한다.

ADC(Application Delivery Controller)

  • 7계층에서 동작하는 로드 밸런서이다. (대부분의 ADC 는 4계층의 동작도 포함하고 있다)
  • L4 와 달리 애플리케이션 프로토콜의 헤더와 내용을 이해하고 동작하므로, 다양한 부하 분산 / 정보 수정 / 정보 필터링이 가능하다.
  • ADC 는 이런 상세한 동작을 위해서 프록시로 동작한다.
    → 요청의 가장 앞 단에서 동작. 

L4 스위치 vs ADC

TLS 프로콜이 적용된 패킷

  • L4 스위치는 4계층에서 동작하며, TCP / UDP 정보(특히 포트 번호)를 기반으로 부하를 분산한다.
  • 부하 분산 뿐 아니라 TCP 계층에서의 최적화와 보안 기능도 함께 제공할 수 있다.
  • ADC애플리케이션 프로토콜을 이해하고 애플리케이션 내용에 대한 분산, 리다이렉션, 최적화를 제공해 L4 스위치보다 다양한 기능을 제공.
    → 성능 최적화를 위해 서버의 작업 중 부하가 많이 걸리는 작업을 별도로 수행
    ex) 이미지나 정적 콘텐츠 캐싱
  • 최근 보안 강화를 위해 일부 페이지가 아닌 웹사이트 전체를 SSL로 처리하는 추세
    → SSL : TLS 의 전신으로 HTTPS 프로토콜은 TLS가 적용된 프로토콜이다.
    패킷을 까보면 TLS 1.2 등의 프로토콜이 표시되는 것을 확인할 수 있다.
  • ADC 에서는 SSL 의 엔드포인트로 동작해 클라이언트에서 ADC 까지의 구간을 SSL 로 처리해주고 ADC 와 웹서버 사이를 HTTP 를 이용해 통신한다.
    전기 신호가 1~7 계층을 통과하는 과정은 SSL를 사용하고(보안강화),
    → 실제 서버와 통신하는 구간은 HTTP 통신을 사용한다.

<스케일 업(다운) & 스케일 아웃(인)>

  • 시스템 확장 방법으로 스케일 업은 질적 향상을 뜻하고, 스케일 아웃은 양적 향상을 뜻한다.
  • 스케일 업의 문제
    1. 확장을 고려에 초기부터 스케일 업을 해 시스템을 구축하면 비용이 커지고, 낭비가 생긴다.
    2. 스케일 업은 어느 시점이 지나가면 필요한 용량만큼 시스템을 늘리는데 필요한 비용이 기하급수적으로 늘어난다.
  • 스케일 아웃의 문제
    1. 스케일 업에 비해 비용이 적게 든다는 큰 장점이 있지만, 이를 위해 복잡한 아키텍처를 이해하고 운영해야만 할 수 있다.

상황에 따라서 적절하게 선택해라;;

방화벽

  • 네트워크 중간에 위치해 해당 장비를 통과하는 트래픽을 사전에 주어진 정책 조건에 맞추어 허용하거나 차단하는 장비를 방화벽이라고 한다.
  • 일반적으로 3,4 계층에서 동작하고 세션을 인지 관리하는 SPI 엔진을 기반으로 동작하는 장비를 방화벽이라고 부른다.
  • 방화벽은 NAT(공인 IP → 사설 IP) 동작 방식과 유사하게 세션 정보를 장비 내부에 저장한다.
    → 이를 통해서 사용자를 가려낼 수 있다.

4계층 장비를 통과할 때의 유의 점(세션관리)

세션 테이블 유지, 세션 정보 동기화

  • 종단 장비에서 통신을 시작하면 중간에 있는 세션 장비는 해당 세션 상태를 테이블에 기록한다.
    → 통신이 없더라도 종단 장비 간 통신이 정상적으로 종료되지 않았다면 일정 시간 동안 세션 테이블을 유지한다.
    → 악의적으로 세션 테이블 정보를 변경할 수도 있기 때문에, 타임 아웃 값을 더 줄이기도 함.
    Servlet 에서 세션 유지 시간을 조정해주는 것을 생각하자..
  • 세션 장비의 세션 타임아웃 값이 애플리케이션 세션 타임아웃 값보다 짧으면 통신에 문제가 생긴다.
    (세션 타임아웃 설정 값은 장비와 애플리케이션 모두 같아야 한다.)
  • 동작 과정
    1. 3WAY HANDSHAKE 를 통해 정상적인 세션 설정 (방화벽에서 세션 설정 과정 확인 후 세션 테이블 기록)
    2. 세션 테이블을 참조해 방화벽에서 패킷 통과
    3. 일정시간 통신 없음
    4. 세션 타임 만료로 세션 테이블 만료
    5. 세션 테이블 만료 후 애플리케이션 통신 시작
    6. 세션 장비의 세션 타임아웃이 만료되어 방화벽에서 패킷 드롭

세션 장비 운영자 입장

  1. 세션 만료 시간 증가
    • 세션 장비 운용자가 애플리케이션에 맞게 세션 만료 시간을 늘리는 방법이 있다.
    • 대부분의 세션장비는 포트번호나 IP 주소마다 별도의 세션 만료 시간을 설정할 수 있다.
  2. 세션 시간을 둔 채로 중간 패킷을 수용할 수 있도록 방화벽 설정(세션 장비 중 방화벽 해당)
    • 해당 해결책은 보안이 약해지는 단점이 있기에 사용하지 않는 것이 좋다.
  3. 세션 장비에서 세션 타임아웃 시, 양 단말에 세션 종료 통보

개발자 입장

  1. 애플리케이션에서 주기적인 패킷 발생 기능 추가
    • 중간에 통신이 없더라도 일정 시간마다 양 단말 애플리케이션의 세션 상태 정보를 체크하는 더미 패킷을 보내는 기능을 추가할 수 있다.
    • 최근 대부분의 플랫폼에서는 이런 기능들을 내장하고 개발하도록 안내한다.
    • 보안 문제는??
      아는 분 있으시면 답글 남겨주세요.. ㅠㅠ

비대칭 경로 문제

  • 네트워크 안정성을 높이기 위해서 네트워크 회선과 장비를 이중화한다.
  • 이때! 세션에 고려 없이 비대칭 경로를 사용하게 되면, 정상적인 서비스가 되지 않는다..
  • 비대칭 경로를 방화벽에서 처리할 수 있는 방법
    1. 세션 테이블 동기화!
      1. 패킷 경로를 변경하지 않고 동작한다는 장점이 있다.
      2. 하지만, 세션을 동기화하는 시간보다 패킷 응답이 빠르면 정상적으로 동작하지 않을 수 있다.
      3. 이 기능은 응답 시간이 비교적 긴, 인터넷 게이트웨이로 방화벽이 사용될 때 유용하게 사용될 수 있다.
    2. 세션 장비에서 다양한 방법으로 이를 보정하는 것이다.
      1. 인바운드 패킷이 통과하지 않았는데, 아웃바운드 패킷이 들어올 경우, 인바운드 패킷이 통과한 다른 세션 장비 쪽으로 패킷을 보내 경로를 보정한다.
profile

개발하는 프로 국밥러

@gugbab2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!