혼자하는 네트워크 공부 #6

배석주·2023년 1월 7일
0

네트워크

목록 보기
6/11
post-thumbnail

로드 밸런서/ 방화벽: 4계층 장비(세션 장비)

4계층 장비는 4계층의 특징인 포트 번호, 시퀀스 번호, ACK 번호에 대해 이해해야 한다.
2, 3계층 장비에서 고려하지 않았던 통신의 방향성이나 순서와 같은 통신 전반에 대한 관리가 필요하며 이런 정보를 세션 테이블(Session Table)이라는 공간에 담아 관리한다.
4계층 이상에서 동작하는 네트워크 장비는 이런 세션 테이블을 관리해야 하고 이 정보를 기반으로 동작한다.

4계층 장비의 특징

4계층의 장비는 세션 테이블과 그 안에서 관리하는 세션 정보가 가장 중요하다. 4계층 이상에서 동작하는 로드 밸런서, 방화벽과 같은 장비를 '세션 장비'라고 부른다.
세션 장비는 추가로 고려해야 할 특징이 많은데 그 중 최우선적으로 고려할 요소는 다음과 같다.
  • 세션 테이블
    세션 장비는 세션 테이블 기반으로 운영된다.
    세션 정보를 저장, 확인하는 작업 전반에 대한 이해가 필요하다.
    세션 정보는 세션 테이블에 남아 있는 라이프타임이 존재한다.
  • Symmetric(대칭) 경로 요구
    Inbound와 Outbound 경로가 일치해야 한다.
  • 정보 변경(로드 밸런서의 경우)
    IP 주소가 변경되며 확장된 L7 로드 밸러서(ADC)는 애플리케이션 프로토콜 정보도 변경된다
  • 로드 밸런서

    서버나 장비의 부하를 분산하기 위해 사용하는 장비를 흔히 로드 밸러서라고 부른다. 트래픽을 분배해주는 기능 때문에 4계층 이상에서 동작하면서 IP 주소나 4계층 정보, 애플리케이션 정보를 확인, 수정하는 기능이 있다. 가장 많이 사용되는 분야는 웹 서버의 부하 분산이다.
    로드 밸런서가 서비스에 사용되는 대표 IP 주소를 서비스 IP로 갖고 그 밑에 시스템이 늘어나면 로드 밸런서가 각 시스템의 실제 IP로 변경해 요청을 보낸다.
    로드 밸런서는 동작하는 계층에 따라 보통 4계층과 7계층으로 나뉜다.
  • L4 로드 밸런싱
    일반적인 로드 밸러서가 동작하는 방식이다. TCP, UDP 정보(특히 포트 넘버)를 기반으로 로드 밸런싱을 수행한다.
  • L7 로드 밸런싱
    HTTP, FTP, SMTP와 같은 애플리케이션 프로토콜 정보를 기반으로 로드 밸런싱을 수행한다. HTTP 헤더 정보나 URI와 같은 정보를 기반으로 프로토콜을 이해한 후 부하를 분산할 수 있다. 일반적으로 이런 장비를 ADC(Application Deliver Controller)라고 부르며 프록시(Proxy) 역할을 수행한다.
  • *프록시 - '대리'의 의미를 가지고 있으며 프로토콜에 있어 대리 응답 등에서 사용하는 개념이다. 보안상 문제로 직접 통신을 주고 받지 못하는 사이에서 프록시를 이용해 중계하는 개념이다. 이렇게 중계하는 기능을 하는 것을 '프록시 서버'라 부른다.

    L4 스위치

    용어 그대로 4계층에서 동작하면서 로드 밸런서 기능이 있는 스위치이다. 내부 동작 방식은 4계층 로드 밸러서이지만 외형은 스위치처럼 여러 개의 포트를 가지고 있다.
    L4 스위치는 부하 분산, 성능 최적하, 리다이렉션 기능을 제공한다.
    L4 스위치가 동작하려면 가상 서버(Virtual Server), 가상 IP(Virtual IP), 리얼 서버(Real Server)와 리얼 IP(Real IP)를 설정해야한다.
  • 가상 서버 - 사용자가 바라보는 실제 서비스
  • 가상 IP - 사용자가 접근해야 하는 서비스 IP 주소
  • 리얼 서버 - 실제 서비스를 수행하는 서버
  • 리얼 IP - 실제 서버의 IP
  • L4 스위치는 가상 IP를 리얼 IP로 변경해주는 역할을 한다.
    사용자는 L4 스위치의 가상 IP를 목적지로 서비스를 요청하고 L4스위치가 목적지로 설정된 가상 IP를 리얼 IP로 다시 변경해준다.

    ADC(Application Delivery Controller)

    ADC는 애플리케이션 계층에서 동작하는 로드 밸런서이다. 4계층에서 동작하는 L4 스위치와 달리 애플리케이션 프로토콜의 헤더와 내용을 이해하고 동작하므로 다양한 부하 분산, 정보 수정, 정보 필터링이 가능하다. ADC는 이런 상세한 동작을 위해 프락시로 동작한다. 대부분의 ADC는 4계층에서 애플리케이션 계층까지 로드 밸런싱 기능을 제공하고 페일오버(Failover, 장애극복 기능), 리다이렉션(Redirection) 기능도 함께 수행한다.

    L4 스위치 vs ADC

    L4 스위치는 4계층에서 동작하면서 TCP, UDP 정보를 기반으로 부하를 분산하다. 부하 분산 뿐만 아니라 TCP 계층에서의 최적화와 보안 기능도 함께 제공한다.
    ADC는 애플리케이션 프로토콜을 이해하고 애플리케이션 내용에 대한 분산, 리다이렉션, 최적화를 제공해 L4 스위치보다 더 다양한 기능을 사용할 수 있다.
    <ADC의 성능 최적화: 캐싱 기능>
    ADC는 하드웨어 가속이나 소프트웨어 최적화를 통해 이런 부하가 걸리는 작업을 최적화 하는 기능이 있다.
    <ADC의 성능 최적화: 압축 기능>
    최근 SSL 프로토콜을 사용하는 비중이 늘며 웹 서버 SSL암복호화 부하가 늘고 있다. ADC에서는 SSL의 엔드 포트로 동작해 클라이언트에서 ADC까지의 구간을 SSL로 처리해주고 ADC와 웹 서버 사이를 일반 HTTP를 이용해 통신한다.
    *SSL(Secure Sockets Layer) - 암호화 기반 인터넷 보안 프로토콜이다.

    시스템 확장 방법: 스케일 업과 스케일 다운

    데이터 양이 늘거나 CPU나 메모리 사용량이 늘어 서버 하나로 서비스가 불가능해지면 시스템을 확장해야 한다. 시스템을 가장 쉽게 혹장해 서비스 용량을 키우는 방법은 스케일 업이다.
  • 스케일 업 - 기존 시스템에 CPU, 메모리, 디스크와 같은 내부 컴포넌트 용량을 키우거나 이것이 불가능한 경우, 새로 더 큰 용량의 시스템을 구매해 서비스를 옮기는 방법이다.
  • 장점 - 시스템을 가장 쉽게 확장하는 방법
    단점 - 스케일 업 확장을 미리 고려해 시스템을 구축하면 초기 투자비용이 커지며 적합한 시스템을 구매하면 확장이 필요할 때 기존 시스템을 버리고 더 큰 시스템을 새로 구매하므로 기존 시스템 비용이 낭비되는 문제가 있다.
    위와 같은 스케일 업의 문제들 때문에 가능하면 스케일 아웃을 이용해 시스템 용량을 높인다.
    시스템 업은 시스템 하나의 용량 자체를 키우지만 스케일 아웃은 같은 용량의 시스템을 여러 대 배치한다.
    사용자 천 명의 요청을 처리하는 시스템이 한 대 구동된다면 5천 명을 위해서는 5대의 시스템을 병렬로 운영하는 방법이다.
    확장과 반대로 시스템을 축소시켜야 하는 경우에도 두 가지 방법이 있다.
  • 스케일 다운 - 기존 시스템보다 작은 용량의 시스템으로 서비스를 옮기는 방법이고 이는 스케일 업의 반대 개념이다.
  • 스케일 인 - 스케일 아웃의 반대 개념으로 여러 개의 서비스를 합쳐 하나의 시스템에서 운영하는 방법이다.
  • 스케일 업과 스케일 아웃의 장,단점을 비교하면 다음과 같다.
    스케일 업(Scale-Up)스케일 아웃(Scale-Out)
    설명하드웨어 성능 자체를 업그레이드하거나 더 높은 성능의 시스템으로 마이그레이션하는 방법여러 대의 서버로 로드를 분산하는 방법, 서비스 자체를 구분해 나누거나 같은 서비스를 분산해 처리하는 방법이 있다.
    장점부품을 쉽게 추가할 수 있으면 시스템 설계 변경 없이 서비스 사용량을 쉽게 늘릴 수 있다(주로 기존 대형 유닉스 시스템에서 사용).스케일 업 방식보다 더 적은 비용으로 시스템 확장이 가능하다. 여러 대의 시스템에 로드를 적절히 분산해 하나의 시스템에 장애가 발생하더라도 서비스에 미치는 영향이 없도록 결함허용을 구현할 수 있다.
    단점부품 추가가 어렵고 시스템이 커질수록 비용이 기하급수적으로 증가한다.시크엘 아웃을 위해 별도의 복잡한 아키텍처를 이해하고 운영해야만 할 수 있다. 프로세스나 네트워크 장비가 추가로 필요할 수 있다.

    방화벽

    네트워크 중간에 위치해 해당 장비를 통과하는 트래픽을 사전에 주어진 정책 조건에 맞추어 허용(Permit)하거나 차단(Deny)하는 장비를 방화벽이라고 부른다. 네트워크 3, 4계층에서 동작하고 세션을 인지, 관리하는 SPI(Stateful Packet Inspection) 엔진을 기반으로 동작하는 장비를 방화벽이라고 부른다.
    <세션 테이블이 있는 방화벽>
    방화벽은 NAT(Network Address Translation) 동작 방식과 유사하게 세션 정보를 장비 내부에 저장한다. 패킷이 외부로 나갈 때 세션 정보를 저장하고 패킷이 들어오거나 나갈 때 저장했던 세션 정보를 먼저 참조해 들어오는 패킷이 외부에서 처음 시작된 것인지, 내부 사용자가 외부로 요청한 응답인지 가려낸다.

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

    세션 장비는 세션을 이해하고 세션 테이블을 유지한다. 세션 테이블 정보를 이용해 패킷을 변경하거나 애플리케이션 성능을 최적화하고 보안을 강화하기 위해 패킷을 포워드(Forward)하거나 드롭(Drop)할 수 있다.

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

    세션 장비는 세션 정보를 무제한으로 저장할 수 없고 여러 가지 애플리케이션 통신을 관리하므로 일반적인 애플리케이션에 맞추어 적당한 세션 타임아웃값을 유지한다.
    세션 장비의 세션 만료 시간이 애플리케이션 세션 만료 시간보다 짧을 경우 세션 테이블에 있는 세션 정보가 사라졌는데도 양쪽 단말에서는 세션이 유지되고 있다면 다시 통신이 시작되어 데이터를 보낼 때 중간 세션 장비에서 막히는 문제가 발생한다.
    동작 순서는 다음과 같다.
    1. 3방향 핸드셰이크를 통해 정상적으로 세션 설정
    ① 방화벽에서 세션 설정 과정을 확인하고 세션 테이블 기록
    2. ②, ③ 세션 테이블을 참조해 방화벽에서 패킷 통과
    3. 일정 시간 동안 통신 없음
    4. ④ 세션 타임으로 세션 테이블 만료
    5. 세션 만료 후 애플리케이션 통신 시작
    6. ⑤ 세션이 만료되어 방화벽에서 패킷 드롭
    다음은 이러한 문제의 해결 방법이며 이 중 하나만 적용되어도 서비스는 정상적으로 동작할 수 있다.

    세션 장비 운영자 입장

    가. 세션 만료 시간 증가

    세션 장비 운영자가 애플리케이션에 맞게 세션 만료 시간을 늘리는 방법이다. 이 경우, 애플리케이션의 세션 유지 시간보다 방화벽 세션 유지 시간이 길어야 한다.
    대부분의 세션 장비는 포트 번호나 IP 주소마다 별도의 세션 만료 시간을 설정할 수 있어 전체 세션 유지 시간이 길어져 시스템 메모리가 고갈되는 문제를 예방할 수 있다.

    나. 세션 장비에서 세션 타임아웃 시 양 단말에 세션 종료 통보

    이 기능은 양 종단의 세션 정보와 중간 세션 장비의 세션 정보가 일치하지 않아 발생하는 문제를 해결하기 위해 사용하는 기능이다.
    세션 만료 시 세션 장비에서 양 단말에 통보한다.
    세션 만료 시의 동작 과정은 다음과 같다.
    1. 세션 설정
    2. 일정 시간 동안 통신 없음
    3. ① 세션 타임아웃값이 넘어 세션 만료
    4. ② 방화벽에서 양 종단 장비에 RST 패킷 정보
    A. A, B 장비 통신일 경우
    B. A 장비에는 출발지 B, 도착지 A인 RST 패킷 전송
    C. B 장비에는 출발지 A, 도찾기 B인 RST 패킷 전송
    5. ③ RST 패킷을 받은 양 종단 장비는 해당 프로세스 종료

    개발자 입장

    가. 애플리케이션에서 주기적인 패킷 발생 기능 추가

    애플리케이션과 세션 장비의 세션 타임아웃 시간을 일치시키는 가장 좋은 방법은 애플리케이션에서 패킷을 주기적으로 발생시키는 것이다. 애플리케이션 개발 시 중간에 통신이 없더라도 일정 시간마다 양 단말 애플리케이션의 세션 상태 정보를 체크하는 더미 패킷(Dummy Packet)을 보내는 기능을 추가해 패킷이 주기적으로 발생해 중간 방화벽에서 세션 타임아웃이 발생하기전 세션을 유지할 수 있다.

    비대칭 경로 문제

    네트워크의 안정성을 높이기 위해 네트워크 회선과 장비를 이중화한다. 이때 패킷이 지나가는 경로가 2개 이상이므로 인바운드 패킷과 아웃바운드 패킷의 경로가 같거나 다를 수 있다. 인바운드 패킷과 아웃바운드 패킷이 같은 장비를 통과하는 것을 대칭 경로(Symmetric Path)라고 하고 다른 장비를 통과하는 것을 비대칭 경로(Asymmetric Path)라고 부른다.
    대칭 경로, 인바운드, 아웃바운드 패킷이 한 장비를 통과하는 것은 통신에 문제가 없다.
    세션 장비는 세션 테이블을 만들어 관리해야 하므로 패킷이 들어오고 나갈 때 동일한 장비를 통과해야 한다. 네트워크 경로 이중화를 위해 세션 장비를 두 대 이상 설치한 경우, 패킷이 들어올 때와 나갈 때 경로가 일정하게 유지되지 않으면 정상적인 서비스가 되지 않는다.
    비대칭 경로를 방화벽에서 처리할 수 있는 첫 번째 방법은 세션 테이블을 동기화하는 것이다. 세션 테이블을 동기화하면 두 개 경로상의 두 장비가 하나의 장비처럼 동작하므로 비대칭 경로에서도 정상적으로 동작할 수 있다. 패킷 경로를 변경하지 않고 동작한다는 장점이 있지만 세션을 동기화하는 시간보다 패킷 응답이 빠르면 정상적으로 동작하지 않을 수 있다는 단점이 있다.
    이 기능은 응답시간이 비교적 긴 인터넷 게이트웨이로 방화벽이 사용될 때 유용하게 사용될 수 있다.
    두 번째 방법은 인바운드 패킷이 통과하지 않았는데 아웃바운드 패킷이 장비로 들어론 경우, 인바운드 패킷이 통과한 다른 세션 장비 쪽으로 패킷을 보내 경로를 보정하는 방법이다. 강제로 대칭 경로를 만들어주므로 비대칭 경로로 인한 문제를 해결할 수 있다.
    강제로 다른 방화벽으로 패킷을 보내기 위해 방화벽 간 통신용 링크가 필요하고 MAC 주소를 변경하는 MAC 리라이팅(Rewriting)이나 기존 패킷에 MAC 주소를 한 번 더 인캡술레이션하는 터널링(Tunneling) 기법으로 경로를 보정한다.
    출처
    IT 엔지니어를 위한 네트워크 입문을 정리한 포스팅입니다.

    0개의 댓글