4계층 장비 특징
TCP 같은 4계층 헤더에 있는 정보를 이해하고 이 정보들을 기반으로 동작. → 기존 네트워크 장비와 다름.
- 세션 테이블과 세션 정보가 가장 중요.
- 4계층 이상에서 동작하는 로드 밸런서, 방화벽 같은 장비를 세션 장비 라고 부르기도 함.
세션 장비는 추가로 고려해야 할 특징이 많은데 그 중 최우선적으로 고려할 요소는..?
세션 테이블
- 세션 장비는 세션 테이블 기반으로 운영.
- 세션 정보를 저장, 확인하는 작업 전반에 대한 이해 필요.
- 세션 테이블에 남아있는 라이프 타임 존재. → 고려하세욧!
Symmetric (대칭) 경로 요구
- Inbound 와 Outbound 경로가 일치해야 함.
정보 변경(로드밸런서의 경우)
- IP 주소가 변경되며 확장된 L7 로드밸런서(ADC) 는 애플리케이션 프로토콜 정보 변경도 가능.
그리고…
로드 밸런서
서버나 장비의 부하를 분산하기 위해 사용하는 장비. → 트래픽 분산 ! ! !
- IP 주소, 4계층 정보, 애플리케이션 정보를 확인하고 수정
- 비싸서 스케일 아웃으로 많이 사용.
- 로드 밸런서가 서비스에 사용되는 대표 IP 주소를 서비스 IP 로 가짐 → 그 밑에 시스템이 늘어나면 → 로드밸런서가 각 시스템의 실제 IP 로 변경해 요청 보냄.
- 웹 서버 부하 분산에 가장 많이 사용
- FWLB (방화벽)
- VPNLB (VPN 로드밸런싱)
- 이런 서비스에도 사용.
로드밸런서는 동작하는 계층에 따라 4계층과 7계층으로 나뉨.
L4 로드 밸런싱
일반적인 로드밸런서 동작 방식
- TCP, UDP 정보(특히 포트 넘버)를 기반으로 로드 밸런싱 수행.
- 최근 로밸은 L4,L7 기능 모두 제공하긴 하지만
- L7 지원 여부와 상관없이 4계층 정보로만 분산 처리하는 경우를 L4 로드 밸런싱
L7 로드 밸런싱
HTTP, FTP, SMTP 와 같은 애플리케이션 프로토콜 정보를 기반으로 로드밸런싱
- HTTP 헤더나 URI 같은 정보를 기반으로 프로토콜 이해 후, 부하 분산
- 일반적으로 이런 장비를 ADC 라고 부르며 → 프록시 역할 수행
- 스퀴드나 Nginx 에서 수행하는 리버스 프록시와 유사한 기능을 가지고 있다.
💡 데이터 센터에서 사용하는 로드 밸런서 장비는 L4, L7 모두 지원함. 실제로 어떻게 설정했는지에 따라 L4, L7 로드 밸런싱으로 나뉘는데…
반면 클라우드에서는 L4 로드 밸런싱과 L7 로드 밸런싱을 지원하는 컴포넌트를 계층별로 구분해 전용으로 사용함.
예시) → AWS NLB (L4) ALB (L7)
L4 스위치
4계층에서 동작하며 로드 밸런서 기능이 있는 스위치. 내부 동작은 4계층 로드 밸런서지만 외형은 스위치처럼 여러 포트를 가지고 있음.
기능
- 부하 분산
- 성능 최적화
- 리다이렉션
동작
가성 서버, 가상 IP, 리얼 서버, 리얼 IP 설정.
- 사용자가 L4 스위치의 가상 IP 를 목적지로 서비스를 요청.
- L4 스위치가 목적지로 설정된 가상 IP 를 리얼 IP로 다시 변경.
- 이 과정에서 부하를 어떤 방식으로 분산할지 결정 가능.
ADC
애플리케이션 계층에서 동작하는 로드 밸런서. 애플리케이션 프로토콜 헤더와 내용을 이해하므로 부하 분산, 정보 수정, 정보 필터링 가능.
- 상세한 동작을 위해 Proxy 로 동작함.
- 대부분의 ADC 는 L4 로드밸런싱 기능 포함
- 페일오버 (장애 극복 기능)
- 리다이렉션
- 이 외에도 캐싱, 압축, 콘텐츠 변환 및 재작성, 인코딩 변환, 애플리케이션 프로토콜 최적화 가능.
L4 스위치 vs ADC
L4 스위치 | ADC | |
동작 | 4계층 | 7계층 (애플리케이션 계층), (사실 4계층 역할 가능) |
기반 정보 | TCP, UDP | 애플리케이션 프로토콜 |
기능 | TCP 계층 최적화와 보안 기능 TCP 레벨의 간단한 Dos 공격 방어 TCP 세션 재사용(보안 성능 증가) |
애플리케이션 내용에 대한 분산 |
ssl 엔드 포인트 | 사용 불가 | ssl 의 엔드 포인트로 동작 가능 - 클라이언트 ~ ADC 구간 ssl 처리 가능 - ADC 와 웹 서버 사이를 일반 HTTP 를 이용해 통신 ADC 에 전용 ssl 가속 카드 내장 → 웹 서버 여러 대의 ssl 통신을 하나의 ADC 에서 하기 위하여. |
스케일 업, 다운 장단점
스케일 업 | 스케일 다운 | |
설명 | 하드웨어 성능 자체를 업그레이드, 높은 성능으로 마이그레이션 | 여러 대의 서버로 로드 분산, 서비스 자체를 구분해 나누거나 같은 서비스를 분산해 처리 |
장점 | 부품 쉽게 추가 가능 시스템 설계 변경 없이 서비스 사용량을 쉽게 늘릴 수 있음.(주로 기존 대형 유닉스 시스템에서 사용) |
스케일 업보다 더 적은 비용. 여러 대로 로드를 적절히 분산하면 하나의 시스템에서 장애가 발생해도 서비스에 미치는 영향이 없도록 결함 허용 구현 가능. |
단점 | 부품 추가가 어렵고, 시스템이 커질 수록 비용 기하급수적으로 증가 | 별도의 복잡한 아키텍처를 이해하고 운영해야만 할 수 있음. 프로세스나 네트워크 장비 추가 필요할 수도… |
방화벽
네트워크 중간에 위치하여 해당 장비를 통과하는 트래픽을 사전에 주어진 정책 조건에 맞춰 허용하거나 차단하는 장비.
- 네트워크 3, 4계층에서 동작
- 세션을 인지, 관리하는 SPI 엔진을 기반으로 동작하는 장비
NAT 와 유사한 동작 방식
- 세션 정보를 장비 내부에 저장.
- 패킷이 외부로 나갈 때 세션 정보 저장.
- 패킷이 들어오거나 나갈 때 저장했던 세션 정보(세션 테이블) 먼저 참조.
- 외부에서 처음 시작된 패킷?
- 내부 사용자가 외부로 요청한 응답 패킷?
→ 세션 테이블을 이용해 패킷의 인과 관계를 파악하여 정책을 간단히 유지.
4계층 장비를 통과할 때의 유의점(세션 관리)
애플리케이션과 세션 장비 간 세션 정보를 동일하게 유지해주거나 세션 장비를 고려해 여러 가지 기능을 추가해줘야 한다. 특히 애플리케이션 세션 시간과 서비스 방향성을 고려하고 비대칭 경로 피하기…
세션 테이블 유지, 세션 정보 동기화
- 종단 장비에서 통신을 시작하면 → 세션 장비는 해당 세션 상태를 테이블에 기록
- 통신이 없더라도 통신 정상 종료 상태가 아니라면 → 일정 시간동안 세션 테이블 유지
- “일정시간” 유지하며 메모리 사용률 적절히 유지
- 악의적인 공격자가 과도한 세션을 발생시켜 정상적인 세션 테이블 생성을 방해하는 세션 공격으로부터 시스템 보호 → 타임 아웃 값 줄이기
- 여러가지 이유로 세션 장비는 적당한 세션 타임아웃 값을 유지.
하지만 일부 애플리케이션 → 세션 타임아웃 길다?
- 세션 장비의 세션 타임아웃 값이 애플리케이션의 세션 타임아웃 값보다 짧으면 통신에 문제 생김.
- 세션 테이블에 세션 정보 사라짐 → 애플리케이션에서는 세션 유지 → 세션 장비에서 세션 요청했는데 막힘. → 비정상 통신
문제 해결법 - 세션 장비 운영자
- 세션 만료 시간 증가
- 애플리케이션에 맞게 세션 만료 시간을 늘리면 됨.
- 방화벽 세션 유지 시간 > 애플리케이션 세션 유지 시간
- 세션 시간을 둔 채로 중간 패킷을 수용할 수 있게 방화벽 설정(세션 장비 중 방화벽에 해당)
- 방화벽 옵션을 조정해 세션 테이블에 정보가 없는 ACK 패킷이 들어와도 세션을 새로 만들어서 통과시킬 수 있는 옵션 설정.
- 보안이 취약하니까 가능하면 적용 ㄴㄴ.
- 세션 장비에서 세션 타임아웃 시 양 단말에 세션 종료 통보.
- 세션 정보에 있는 양 종단 장비에 세션 정보 만료(RST) 통보.
- 장비가 세션을 끊음.
- 애플리케이션에서 통신이 필요하면 새로운 세션 맺어 통신.
문제 해결법 - 개발자
- 애플리케이션에서 주기적인 패킷 발생 기능 추가 (젤 조은 방법)
- 통신이 없어도 일정 시간마다 세션 상태 정보 체크하는 더미 패킷 보내는 기능 추가
- 중간 방화벽에서 세션 타임아웃 생기기 전 세션 유지 가능.
- 가장 바람직함. 요즘에 대부분 이런 기능 내장함.
비대칭 경로 문제
네트워크 안정성을 높이기 위해 네트워크 회선과 장비를 이중화하면 패킷이 지나가는 경로가 2개 이상이라 인바운드 패킷과 아웃바운드 패킷의 경로가 같거나 다를 수 있다.
- 인바운드 패킷과 아웃바운드 패킷이
- 같은 장비를 통과 → 대칭 경로
- 다른 장비를 통과 → 비대칭 경로
- 패킷이 들어올 때와 나갈 때 경로가 일정하게 유지되지 않으면 정상적인 서비스가 되지 않음.
비대칭 경로를 방화벽에서 처리할 수 있는 방법
- 세션 테이블 동기화
두 개 경로 상의 두 장비가 하나의 장비처럼 동작하니 비대칭 경로에서도 정상적으로 동작 가능!
- 패킷 경로를 변경하지 않고 동작하는 장점
- 세션을 동기화하는 시간보다 패킷 응답이 빠르면 정상적으로 동작하지 않을 수 있다는 단점
- 응답시간이 빠른 애플리케이션을 사용하면 세션 동기화 시간보다 응답 시간이 더 빠를 수 있음 → 사용 추천 XXXX
- 응답 시간이 비교적 긴 인터넷 게이트웨이로 방화벽이 사용될 때 유용
- 비대칭 경로가 생기면 세션 장비에서 다양한 방법으로 이를 보정하기
- 인바운드 패킷이 통과하지 않았는데 아웃바운드 패킷이 장비로 들어옴 → 인바운드 패킷이 통과한 다른 세션 장비 쪽으로 패킷을 보내 경로 보정하기
- 강제로 대칭 경로 만들어 비대칭 경로 문제 해결
- 강제로 다른 방화벽으로 패킷을 보내기 위해
- 방화벽 간 통신용 링크
- MAC 주소 변경하는 MAC 리라이팅
- 기존 패킷에 MAC 주소를 한 번 더 인캡슐레이션하는 터널링 기법 으로 경로 보정
하나의 통신에 두 개 이상의 세션이 사용될 때 고려할 사항
서로 다른 두 세션이 하나의 통신을 위해 사용하고 있다는 것을 네트워크 통신 중간에 놓은 세션 장비도 파악해야 한다.
- 두 통신 중 한쪽 세션이 끊기거나
- 세션 장비의 세션 테이블에서 삭제되면
- 단방향 통신만 가능하거나 통신하지 못할 수 있음..
프로토콜
- 데이터 프로토콜 : 데이터 나르기
- 컨트롤 프로토콜 : 세션 제어
💡 현대 프로토콜들은 대부분 컨트롤 프로토콜 + 데이터 프로토콜을 하나의 프로토콜에서 헤더나 별도의 메시지로 해결하지만 → 특별한 목적이 있거나 오래된 프로토콜은 두 개의 프로토콜이 분리되어 있기도 함.
- 대표적인 프로토콜이 FTP
FTP
FTP 는 컨트롤 프로토콜과 데이터 프로토콜이 완전히 분리되어 있고 통신 방법이 다른 두 가지 모드를 가지고 있다.
기본적인 구동 방식 - Active
명령어를 전달하는 컨트롤 프로토콜과 데이터를 전달하는 데이터 프로토콜이 분리되어 있음. 방향도 반대로 동작.
- 클라이언트가 FTP 서버에 접속. 클라이언트는 1023번 이상의 TCP 포트 사용. 서버는 TCP 21번 포트 사용.
- 클라이언트가 서버에 데이터를 1025번 포트를 사용해 수신하겠다고 알림. (클라이언트가 포트 정함)
- 서버는 클라이언트에 1025번 포트를 사용해 송신하겠다고 응답.
- 서버에서 데이터 보냄. 클라이언트에서 응답하고 데이터 수신
Active 모드 사용 주의
- 중간에 방화벽이나 세션 장비가 있으면 Active 모드 동작 방식에 맞춰 방화벽의 반대 방향도 열어줘야 함.
- NAT 환경이면 FTP 가 동작하는 프로토콜을 모두 이해할 수 있는 별도 기능 동작시켜야 함 → ALG
- ALG → FTP 명령을 이해하고 반대방향으로 시작하는 데이터 세션을 인지해 방화벽과 NAT 를 자동으로 동작시켜줌.
💡 하지만 액티브 모드의 가장 큰 문제는.. 컨트롤 프로토콜과 데이터 프로토콜의 방향이 반대라는 것… ㅠㅠ
기본적인 구동 방식 - Passive
액티브 모드의 단점 보완을 위해 만들어짐. 컨트롤, 데이터 프로토콜이 분리되어 있는 것은 같으나 클라이언트 → 서버 쪽으로 데이터를 요청해 다운받도록 동작함.
- 클라이언트가 FTP 서버에 접속. 클라이언트는 1023번 이상의 TCP 포트 사용. 서버는 TCP 21번 포트 사용. (Active 동일)
- 클라이언트가 Passive 모드를 사용하겠다고 알림.
- 서버 → 클라이언트에게 데이터 수신에 사용할 포트를 알림. 2024번 포트를 사용해 수신하겠다고 응답. (서버가 수신 포트 정함)
- 클라이언트에서 서버에 데이터 요청 → 서버에서 알려준 2024번 포트에 요청
- 데이터 전송
Passive 모드 사용 주의
- 클라이언트에서 방화벽, 세션 장비가 있어도 특별한 작업 없이 동작은 가능하나
- 서버 쪽에 방화벽이 있다면 데이터 다운로드를 위한 추가 포트를 열어줘야 함.
- FTP 서버에서는 Passive 모드에서 사용하는 데이터 포트 범위 설정 가능.
'개발공부 개발새발 > Network' 카테고리의 다른 글
Network ) CIDR (0) | 2024.09.20 |
---|---|
통신을 도와주는 네트워크 주요 기술 (NAT, PAT, DNS, GSLB, DHCP) (3) | 2024.08.28 |
Network ) 라우터 (0) | 2024.07.19 |
Network ) 스위치 (0) | 2024.06.14 |
Network ) ARP, GARP , 게이트웨이.. (0) | 2024.05.30 |