4계층 장비 (로드 밸런서 / 방화벽)
2022-02-19 17:13:16
4계층 장비의 특징
- 4계층 장비(세션 장비)는 통신의 방향성이나 순서와 같은 통신 전반에 관한 관리가 필요하는데, 이러한 정보를 세션 테이블이라는 공간에 담아 관리한다.
로드 밸런서
-
서버의 부하를 분산시키기 위한 장비
-
로드 밸런서가 서비스에 사용되는 대표 IP주소를 가지고, 그 밑에 실제 서버들의 실제 IP주소로 요청을 전달한다.
-
WAS뿐만아니라 FWLB(FireWall Load Balancing) , VPNLB(VPN Load Balancing) 와 같이 다양한 서비스에 사용될 수 있다.
-
시스템 Scale Out시 사용
(* Scale up : 메모리,cpu와 같은 하드웨어 리소스의 성능을 높임 / Scale out : 같은 리소스를 가진 시스템을 여러개 병렬로 배치 )

로드밸런서는 동작하는 계층에 따라 4,7계층으로 나뉜다.
- L4 로드 밸런싱은 일반적인 로드 밸런서가 동작하는 방식으로 , 4계층 헤더 정보(TCP,UDP)를 기반으로 로드 밸런싱을 수행한다.
- L7 로드 밸런싱 application 계층의 프로토콜 (HTTP,FTP,SMTP)을 기반으로 로드 밸런싱을 수행한다.
- L7 로드 밸런서를 ADC(application delivery controller) 라고 부르며, proxy 역할을 수행하며, Nginx 의 reverse proxy와 유사한 기능을 수행한다. (https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/)
(* Reverse proxy : 외부에서 내부 서버가 제공하는 서비스 접근시, proxy 서버를 먼저 거치고 내부서버를 들어오는 방식)
- AWS 에서는 계층별로 L4,L7 로드 밸런싱을 수행해주는 컴포넌트를 제공한다.
- NLB(Network Load Balaner) == L4 로드 밸런싱 / ALB(Application Load Balancer) == L7 로드 밸런싱
L4 스위치
-
4계층에서 동작하는 로드 밸런서 기능이 있는 스위치로 여러개의 포트를 가지고 있다.
-
SW 형태의 로드 밸런서도 있지만, 다양한 네트워크 구성이 가능한 스위치형 로드 밸런서가 가장 대중화되어 있다.
-
L4 스위치가 동작하기 위해 필요한 설정은 다음과 같다
- 가상 서버 : 사용자가 바라보는 서비스
- 가상 IP : 사용자가 접근해야하는 서비스의 IP주소
- 리얼 서버 : 실제 서비스를 수행하는 서버
- 리얼 IP : 리얼 서버의 IP 주소
L4스위치는 사용자가 가상 IP주소로 접근하였을때 이를 리얼 IP주소에 대한 요청으로 변경해주는 역할을 한다.
ADC (Application Delivery COntroller)
- application 계층에서 동작하는 로드 밸런서
- proxy로 기능하며, 실제 서버에 요청되기 전에 부하 분산, 정보 수정 및 필터링 수행
- 대부분의 ADC는 4,7계층 로드 밸런싱을 함께 제공하고, FailOver(장애극복 기능)과 redirection 기능, 캐싱 , 인코딩 변환 , 압축 기능 들을 제공한다.
L4스위치와 ADC의 차이점
- L4 스위치는 TCP,UDP정보를 기반으로 부하 분산 및 TCP 최적화 (Connection pooling), 보안기능을 제공함
- ADC는 application 프로토콜 정보를 기반으로 application내용에 대한 부하 분산, redirection 기능 , 정적 콘텐츠 캐싱 기능 , 컨텐츠 압축 기능 , 암복호화 기능(SSL endpoint로서 역할)을 제공함
방화벽
-
네트워크 중간에 위치해 해당 장비를 통과하는 트래픽을 사전에 주어진 정책 조건에 맞추어 허용하거나 차단하는 장비
-
세션을 인지,관리하는 SPI(Stateful Packet Inspect)엔진을 기반으로 동작하는 장비를 방화벽이라고 부른다
-
세션 테이블을 사용하는 경우 : 패킷이 외부로 나갈떄 세션 정보를 세션 테이블에 저장하고, 패킷이 들어올때 내부 사용자에 대한 응답인지, 외부에서 처음 온 요청인지 판단
-
세션 테이블과 같은 공간이 없어 세션의 방향성을 파악하지 못한 경우 : 양방향 정책 설정
4계층 장비를 통과할때의 유의점
1. 세션 테이블 유지, 세션 정보 동기화
- 종단 장비에서 통신을 시작하면 세션 장비는 해당 세션 상태를 세션 테이블에 기록하고 일정시간 동안 메모리에 유지
- application 세션 timeout값보다 세션 장비의 세션 timeout값이 짧으면 세션장비는 세션 테이블에 세션이 없으므로 , SYN이 아닌 ACK로 들어온 패킷은 차단한다.
이러한 문제를 해결하기 위해서 세션장비와 application에서 적용할 수 있는 설정이 존재
- 세션 운영자 입장에서는 다음과 같은 방법이 있다.
- 세션 만료 시간을 증가시키는 방법
- 세션 만료 시간은 유지하고, 중간에 ack패킷을 차단하지 않도록 수정하는 방법 => 보안 취약점을 증가시키므로 지양
- 세션 장비에서 세션 타임아웃 시 양 단말에 TCP 헤더의 RST 플래그를 1로 설정해 양 단말에 전송하여 세션을 끊는 방법
- 개발자 입장에서는 다음과 같은 방법이 있다
- application 에서 주기적인 더미 패킷 발생
2. 경로 비대칭 문제
네트워크 안정성을 높이기 위해 네트워크 회선과 장비를 이중화한다. 이때 패킷이 지나는 경로가 2개 이상이므로, 인바운드 패킷과 아웃바운드 패킷의 경로가 다를 수 있음
- 대칭 경로 : 인바운드 패킷과 아웃바운드 패킷이 같은 세션 장비를 통과
- 비대칭 경로 : 인바운드 패킷과 아웃바운드 패킷아 다른 세션 장비를 통과
비대칭 경로의 경우 세션 테이블에 정보가 없으므로 방화벽에서 패킷 차단하는 등 정상적인 서비스가 수행되지 않는다
경로 비대칭 문제 해결 방법
- 세션 장비간 세션 테이블을 동기화하는 방법
- 세션 동기화 시간보다 패킷응답시간이 빠르면 방화벽에 막히므로, 패킷 응답시간이 긴 경우에 사용가능
- 세션 장비에서 패킷 경로를 보정하는 방법
- 인바운드 패킷이 통과하지 않았는데, 아웃바운드 패킷이 들어온 경우 다른 세션 장비쪽으로 경로를 보정하여 강제로 대칭경로를 만들어준다.
- 강제로 다른 방화벽으로 패킷을 보내므로 방화벽 간 통신용 링크가 필요하고, MAC rewriting , tunneling 기법으로 경로 보정
3. 하나의 통신에 2개 이상의 세션이 사용되는 경우
- 세션장비에서 두 세션 중 한 세션만 끊긴 경우 통신이 하지 못할 수도 있음.
- 하나의 통신에 2개 이상의 세션이 사용되는 대표적인 예로 FTP protocol은 데이터를 전송하는 data protocol과 세션을 제어하는 control protocol이 분리되어 있고, active 모드와 passive 모드가 존재한다,

- default 동작방식은 active모드로 명령어를 전달하는 control protocol과 데이터를 전달하는 데이터 protocol이 분리되어 있고, 방향도 반대로 동작한다.
- Client가 FTP서버에서 데이터 수신용 포트를 알림
- FTP서버가 데이터 수신용 포트로 송신하겠다고 알림
- 해당 X번 포트로 FTP서버가 송신
active 모드 사용시에는 x번 포트에 대해 방화벽을 열어주어야 하고, NAT의 경우 ALG(application layer gateway)라는 별도의 기능 필요
- passive 모드는 이와 반대로 control protocl 과 data protocol의 방향이 모두 client에서 서버 방향이다.

- Client는 FTP서버에게 Passive mode 사용알림
- FTP서버는 데이터 송신용 포트번호을 client에게 알림
- Client가 해당 포트번호로 데이터 요청
passive 모드 사용시에는 client는 별도의 설정이 필요없고, 단지 서버쪽에서 데이터 다운로드를 위한 추가적인 포트를 열어주면 된다.
reference
댓글
이 게시글에 대한 의견을 공유해주세요!
