네트워크 인프라 5. 전송 계층 장비
전송 계층 장비의 탄생
: IP의 부족으로 인해 NAT와 방화벽, 프록시와 같은 장비들이 등장
: 포트번호, 시퀀스 번호, ACK 번호에 대한 개념도 등장
: 3계층에서 고려하지 않았던 통신의 방향성이나 순서와 같은 통신 전반에 대한 이해가 필요
: 이러한 정보를 세션 테이블에 저장하여 관리
: TCP와 같은 4계층 헤더에 있는 정보를 이해가 필요하며, 세션 테이블과 세션 정보에 대한 개념을 이해해야함
- 세션 장비
: 로드밸런서, 방화벽
세션 테이블
: 세션 정보를 저장하는 테이블
: 세션 정보에는 통신의 목적지, 라이프타임, 프로토콜 등의 정보가 저장됨
로드 밸런서
: 서버 및 장비의 부하를 분산하기 위해 사용하며 트래픽을 분배하는 역할 수행
: 전송 계층에서 전송 프로토콜 정보, 애플리케이션 정보를 확인하고 수정
: 웹 애플리케이션 및 FWLB (FireWall Load Balancing, 방화벽 부하 분산), VPNLB (VPN Load Balancing, VPN 부하분산) 등에 사용
- 구조
: 로드 밸런서가 서비스에 사용되는 대표 IP 주소를 서비스 IP로 갖고 로드 밸런서가 하위의 시스템의 실제 IP로 요청이 가도록 패킷을 변경하여 보냄
- L4 로드 밸런싱
: 일반적인 로드 밸런서가 동작하는 방식. TCP, UDP 정보 및 포트번호를 기반으로 부하를 분산
: 최근 로드 밸런서는 L4와 L7의 기능을 모두 지원하므로, 4계층 정보로만 분산 처리하는 경우를 일컬음
- L7 로드 밸런싱
: HTTP, FTP, SMTP와 같은 애플리케이션 프로토콜 정보를 기반으로 로드 밸런싱을 수행
: HTTP 헤더 정보나 URI와 같은 정보를 기반으로 프로토콜을 이해한 후 부하를 분산
: ADC (Application Delivery Controller)라고 부르며 프록시 역할을 수행
: Squid, Nginx에서 수행하는 리버스 프록시와 유사한 기능
로드 밸런서 관련 개념
- 스케일 업
: 기존 시스템에 CPU, 메모리, 디스크와 같은 내부 컴포넌트의 용량을 업그레이드
- 스케줄 아웃
: 같은 사양의 시스템을 여러 대 배치하여 병렬로 운영하는 방법
: 새로 시스템을 설계하거나 분산을 위한 별도의 프로세스 운영
: 부하를 분산해주는 별도의 외부 시스템 필요
- 스케일 다운
: 시스템의 사양을 낮춤
- 스케일 인
: 여러 개 의 서비스를 하나의 시스템에서 운영
L4 스위치 (스위치형 로드 밸런서)
: 전송 계층에서 동작하면서 로드 밸런서 기능을 가진 스위치
: 내부 동작은 L4 로드 밸런서 이지만, 외적으로는 스위치와 같이 여러 포트를 가짐
: 서버형 로드 밸런서나 소프트웨어형 로드 밸런서 보다 더 대중화된 로드 밸런서
- 기능
: 부하 분산, 성능 최적화, 리다이렉션
: TCP 세션 재사용
: TCP 레벨의 간단한 DoS 공격 방어
- 구조
: 가상 서버 (사용자가 사용할 실제 서비스)
: 가상 IP (사용자가 접근해야하는 서비스의 IP 주소)
: 리얼 서버 (실제 서비스를 수행하는 서버)
: 리얼 IP (실제 서버의 IP 주소)
: L4 스위치 (가상 IP를 리얼 IP로 변경)
ADC (Application Delivery Controller)
: 애플리케이션 계층에서 동작하는 로드 밸런서
: 애플리케이션 프로토콜의 헤더와 내용을 기반으로 동작
: 다양한 부하 분산, 정보 수정 및 필터링 기능을 제공
: 상세한 동작을 위해 프록시로 동작하며 대부분의 ADC는 L4 스위치의 기능을 포함
- 기능
: Fail Over (장애 극복)
: Redirection (전송 방향 전환)
: Caching
: Compression
: 콘텐츠 변환 및 재작성
: 인코딩 변환
: 애플리케이션 프로토콜 최적화
: WAF (Web Application Firewall)
: HTML 및 XML 검증 및 변환
: 최적화 (정적 콘텐츠 캐싱, 하드웨어 가속, 소프트웨어 최적화)
- SSL 연계
: SSL의 엔드 포인트로 동작하여 클라이언트에서 ADC 까지의 구간을 암호화
: ADC와 웹 서버 사이를 일반 HTTP로 통신
: 여러 대의 웹 서버에 대한 SSL 통신을 한 대의 ADC에서 수용 (SSL 가속 카드 필요)
방화벽
: 네트워크 중간에 위치해 장비를 통과하는 트래픽을 사전에 주어진 정책 조건에 맞추어 허용하거나 차단하는 장비
: 네트워크 3,4 계층에서 동작하고 세션을 인지, 관리하는 SPI (Stateful Packet Inspection) 엔진을 기반으로 동작하는 장비
- 동작
: NAT와 유사하게 패킷이 들어오거나 나갈때 세션 정보를 저장
: 저장된 세션 정보를 참조하여 외부에서 처음 시작된 패킷인지, 내부 사용자가 외부로 요청한 패킷인지 판단
: 상태 및 세션 정보를 저장하여 패킷을 상세히 로깅 및 모니터링을 수행
세션 관리
: 세션 테이블 정보를 이용해 패킷을 변경하거나 애플리케이션 성능을 최적화 하고 보안을 강화하기 위해 패킷을 포워드 하거나 드롭 할 수 있는데, 애플리케이션과 세션 장비 간 세션 정보를 동일하게 유지해야함
: 애플리케이션 설계 시 세션 장비를 고려한 기능 추가 필요
: 특히, 애플리케이션의 세션 시간과 서비스 방향성을 고려하여 비대칭 경로 피하도록 설계 해야함
- 세션 유지 시간 설정
: 애플리케이션의 세션 유지 시간 보다 방화벽 세션 유지시간이 길어야함
- 세션 장비에서 세션 타임아웃 시 양 단말에 세션 종료 통보
: 세션 장비에서 출발지와 목적지를 양 단말로 설정하고 TCP의 RST 플래그를 1로 세팅하여 장비에 전송
: 양단말에서는 해당 세션이 비정상적으로 종료된 것으로 판단해 해당 세션을 끊어냄
- 애플리케이션에서 주기적인 패킷 발생 기능 추가
: 중간에 통신이 없더라도 애플리케이션에서 일정 시간 마다 양 단말끼리 세션 상태 정보를 체크하는 더미 패킷을 보내 방화벽에서 세션 타임아웃이 발생하지 않고 유지할 수 있음
: 최근 대부분의 플랫폼에서 내장된 기능
비대칭 경로 문제
: 인바운드 패킷과 아웃바운드 패킷이 다른 장비를 통과하는 것을 비대칭 경로라고 함
: 네트워크 경로 이중화를 위해 세션 장비를 두 대 이상 설치한 경우 패킷이 들어올 때와 나갈때 경로가 일치하지 않아 서비스에 문제가 발생할 수 있음
: 비대칭 경로가 생기지 않도록 네트워크 경로를 디자인 해야함
- 방화벽 간 세션 테이블 동기화
: 두 경로 상의 두 장비가 하나의 장비 처럼 동작하도록 세션 테이블을 주기적으로 동기화
: 패킷 경로를 변경하지 않고 동작할 수 있지만, 동기화 시간 보다 패킷 응답 시간이 빠르면 정상적으로 동작하지 않게됨
: 응답 시간이 비교적 긴 인터넷 게이트 웨이로 방화벽이 사용될 때 유용한 방법
- 세션 장비에서 보정
: 인바운드 패킷이 통과하지 않았는데 아웃바운드 패킷이 장비로 들어온 경우, 인바운드 패킷이 통과한 다른 세션 장비 쪽으로 패킷을 보내 경로를 보정
: 강제로 대칭 경로를 만드는 방법으로, 방화벽간 통신용 링크가 필요하고 MAC 주소를 변경하는 MAC ReWriting이나 MAC 주소를 한 번 더 encapsulation 하는 터널링 기법으로 경로를 보정
하나의 통신에 두 개 이상의 세션이 사용되는 상황
: FTP와 같이 데이터 프로토콜과 제어 프로토콜이 다른 경우
- FTP Active 모드
: 컨트롤 프로토콜과 데이터 프로토콜의 방향이 반대인 경우 (FTP 서버에서 요청을 받고 데이터 세션을 연결)
: 세션 장비가 있는 경우 동작 방식에 맞춰 반대 방향에 대해서도 개방 필요
: 특히 NAT 환경인 경우 ALG (Application Layer Gateway) 기능을 통해 세션 장비와 NAT를 자동으로 동작 시키도록 해야함
- FTP Passive 모드
: 컨트롤 프로토콜과 데이터 프로토콜의 방향이 같은 경우 (클라이언트에서 데이터 세션을 연결)
: 특별한 작업이 필요하지 않음
Reference