Study/Computer Science

[Network] 6회차 스터디 - 로드 밸런서/방화벽: 4계층 장비(세션 장비)

나리 집사 2023. 2. 23. 20:40
[Network] 6회차 스터디
『IT 엔지니어를 위한 네트워크 입문』 책을 읽고 정리하는 스터디입니다.
이번 주는 6장 전체와 7장의 일부를 읽어온 후 스터디를 진행했습니다.
일시 : 2023년 2월 20일(월) 대면 진행
스터디장 : 우다현(C)
작성자 : 참여자 모두
참여자 : 우다현(C), 박지윤(L), 이웅희(C), 김다인(M), 박현재(M), 김수민(M)

1. 우다현

새롭게 알게 된 점

  • 4계층 장비는 TCP와 같은 4계층 헤더에 있는 정보를 이해하고 이를 기반으로 동작함, 세션 테이블과 그 안에서 관리하는 세션 정보가 중요함
  • 세션 장비가 최우선적으로 고려할 요소
    • 세션 테이블
      • 세션 장비는 세션 테이블 기반으로 운영됨
      • 세션 정보를 저장, 확인하는 작업 전반에 대한 이해가 필요함
      • 세션 정보는 세션 테이블에 남아 있는 라이프타임이 존재함. 이 부분에 대한 고려가 필요함
    • Symmetric(대칭) 경로 요구
      • Inbound와 Outbound 경로가 일치해야 함
    • 정보 변경(로드 밸런서의 경우)
      • IP 주소가 변경되며 확장된 L7 로드 밸런서(ADC)는 애플리케이션 프로토콜 정보도 변경됨
  • 로드밸런서
    • 서버나 장비의 부하를 분산하기 위해 사용하는 장비
    • L4 로드밸런서, L7 로드밸런서로 나눌 수 있음
    • L4 스위치, ADC 등이 존재
  • 방화벽
    • 네트워크 중간에 위치해 해당 장비를 통과하는 트래픽을 사전에 주어진 정책 조건에 맞추어 허용(Permit)하거나 차단(Deny)하는 장비
  • 4계층 장비를 통과할 때의 유의점
    • 세션 테이블 유지, 세션 테이블 동기화
      • 장비 운영자와 개발자가 할 수 있는 일이 따로 있음.
    • 비대칭 경로 문제
      • 세션 테이블 동기화 혹은 세션 장비에서 보정
  • NAT(Network Address Translagion) : 네트워크 주소 변환
    • IP 주소를 다른 IP 주소로 변환해 라우팅을 원활히 해주는 기술
    • 기본적으로 1:1, IP 고갈 문제를 해결하기 위해 여러 개의 IP를 하나의 IP로 변환하기도 함
    • 보안 강화
    • IP 주소 체계가 같은 두 개의 네트워크 간 통신을 가능하게 해줌
      • 사설 IP 주소 → 공인 IP 주소
    • 불필요한 설정 변경 줄여줌
  • PAT(Port Address Translation)
  • SNAT(Source NAT) - 출발지 주소를 변경하는 NAT
  • DNAT(Destination NAT) - 도착지 주소를 변경하는 NAT

어려웠거나 이해하지 못한, 혹은 궁금한 점

추가 내용

  • 로드 밸런싱의 작동 방식
    • 라우터가 여러 라우팅 프로세스(또는 RIP, RIPv2, IGRP, EIGRP, OSPF와 같은 라우팅 프로토콜)를 통해 특정 네트워크에 대한 여러 경로를 학습하면 라우팅 테이블에서 관리 거리가 가장 낮은 경로가 설치됩니다. 자세한 내용은 Cisco 라우터의 경로 선택을 참조하십시오.

 

참고 : 라우터에 대한 경로 선택 구성

 

  • 공인 IP (Public IP)
    • 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소이다. 공용 IP 주소라고도 불리며 외부에 공개되어 있는 IP 주소이다.
      • 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 PC로부터의 접근이 가능하다. 따라서 공인 IP 주소를 사용하는 경우에는 방화벽 등의 보안 프로그램을 설치할 필요가 있다.
  • 사설 IP (Private IP)
    • 일반 가정이나 회사 내 등에 할당된 네트워크의 IP 주소이며, 로컬 IP, 가상 IP라고도 한다. IPv4의 주소부족으로 인해 서브넷팅된 IP이기 때문에 라우터에 의해 로컬 네트워크상의 PC 나 장치에 할당된다.
    • 사설IP 주소대역
      • Class A : 10.0.0.0 ~ 10.255.255.255
      • Class B : 172.16.0.0 ~ 172.31.255.255
      • Class C : 192.168.0.0 ~ 192.168.255.255

 

참고 : 공인 IP, 사설 IP, 고정 IP, 유동 IP | GotoCloud

 

2. 박지윤

새롭게 알게 된 점

4계층 장비에서 고려해야 할 요소: 세션 테이블, Symmetric 경로 요구, 정보 변경

로드 밸런서는 동작하는 계층에 따라 4계층과 7계층으로 나뉜다.

  • 데이터 프로토콜 : 데이터를 실어 나른다.
  • 컨트롤 프로토콜 : 데이터가 잘 전송되도록 세션을 제어한다.

현대 프로토콜들은 대부분 컨트롤 프로토콜 기능과 데이터 프로토콜 기능을 하나의 프로토콜에서 헤더나 별도 메시지로 해결한다.

  1. IPv4 주소 고갈문제의 솔루션으로 NAT가 사용된다.
  2. 보안을 강화하는 데 NAT 기술을 사용한다.
  3. IP 주소 체계가 같은 두 개의 네트워크 간통신을 가능하게 해준다.
  4. 불필요한 설정 변경을 줄일 수 있다.
  • SNAT(Source NAT) : 출발지 주소를 변경하는 NAT
  • DNAT(Destination NAT) : 도착지 주소를 변경하는 NAT

어려웠거나 이해하지 못한, 혹은 궁금한 점

애플리케이션에서 세션 상태 정보를 체크하는 더미 패킷을 대부분의 플랫폼에서 내장하고 있다고 했는데, 어디서 찾아볼 수 있을지?

FTP를 제외하고 특별한 목적으로 두 개 이상의 세션을 만드는 경우가 어떤 경우들이 있는지?

추가 내용

[WEB] 🌐 Reverse Proxy / Forward Proxy 정의 & 차이 정리

 

3. 이웅희

새롭게 알게 된 점

  • 로드 밸런서
    • L4 로드 밸런싱 - TCP, UDP 정보 기반
      • 가상 IP를 리얼 IP로 변경해주는 역할 → 사용자는 L4 스위치의 가상 IP를 목적지로 서비스를 요청, L4 스위치가 목적지로 설정된 가상 IP를 리얼 IP로 다시 변경해 전송
    • L7 로드 밸런싱 - 애플리케이션 프로토콜 정보를 기반
      • 프록시(Proxy) 역할
      • ADC(Application Delivery Controller)
  • NAT(Network Address Translation) / NAPT(Network Address Port Translation)
    • 정의
      • 기본적으로 하나의 네트워크 주소에 다른 하나의 네트워크 주소로 변환하는 1:1 변환이 기본
      • 여러 개의 IP를 하나의 IP로 변환하는 기술도 NAT 기술 중 하나 (NAPT, PAT)
      • IPv4주소를 IPv6 주소로 변환하거나 그 반대로 IP 주소를 변환하는 기술도 NAT 기술 중 하나(AFT, Address Family Translation)
    • 목적
      1. IPv4 주소 고갈 문제의 솔루션 (중기 전략)
      2. 보안 강화
      3. IP 주소 체계가 같은 두 개의 네트워크 간 통신을 가능케 함
      4. 불필요한 설정 변경 감소
    • 구분
      • SNAT(Source NAT) - 출발지 주소를 변경하는 NAT
        • PAT가 해당
      • DNAT(Destination NAT) - 도착지 주소를 변경하는 NAT

어려웠거나 이해하지 못한, 혹은 궁금한 점

추가 내용

  1. ADC vs ADNGartner defines application delivery networking as the combination of WAN optimization  controllers (WOCs) and application delivery controllers (ADCs). At the data center end of an ADN is the ADC.
  2. Application delivery network
  3. ADC VS CDN
  4. [정리] CDN vs 로드 밸런서

 

4. 김다인

새롭게 알게 된 점

세션이란 네트워크 상에서, 양 종단간 일회용 논리적 연결

세션 테이블

로드 밸런서

  • 서버나 장비의 부하를 분산하기 위해 사용하는 장비.
  • 사용자 천명 동시 처리 서버 <<< 5천명 동시 처리 서버 (가격차이가 5배보다 크다)
    • Scale Up(↔Scale down): 기존 서버 장비의 성능을 향상시키는 것, 사용중인 서버의 CPU사양, 메모리, 디스크 용량 등을 증가시킨다.
    • Scale Out(↔Scale in): 동일한 사양의 서버를 추가해 사용하는 것
  • → 여러 대 묶는게 더 쌈

NAT(Network Address Translation): 네트워크 주소를 변환하는 기술, 주로 사설IP 주소 → 공인 IP 주소

PAT: 여러개의 IP를 하나의 IP로 변환하는 기술

  • IPv4 주소 고갈문제의 솔루션으로 NAT가 사용됨
  • 보안강화
  • IP 주소 체계가 같은 두 개의 네트워크 간 통신을 가능하게 해줌

→ 단점으로 IP가 변환되면 장애가 발생했을 때 문제 해결이 힘든 문제가 생기기도 함.

NAT와 PAT 동작방식 차이는 서비스 포트 까지 함께 변경하는 차이가 있음.

SNAT(Source NAT): 출발지 주소 변경 NAT

  • 사설 → 공인, 보안상 회사 내부 IP를 숨길 때

DNAT(Destination NAT): 도착지 주소 변경 NAT

어려웠거나 이해하지 못한, 혹은 궁금한 점

추가 내용

 

5. 박현재

새롭게 알게 된 점

어려웠거나 이해하지 못한, 혹은 궁금한 점

추가 내용

 

6. 김수민

새롭게 알게 된 점

  • 1장을 읽었을 때 그 느낌! 대부분을 새롭게 맛보기로만 알게 되었어요.
    • 세션
    • 프록시, 엔진엑스
    • SNAT, DNAT

어려웠거나 이해하지 못한, 혹은 궁금한 점

  • (상태, 세션, 커넥션)
  • 6.3 방화벽방화벽은 메모리에 남는 이런 상태와 세션 정보를 이용해 패킷을 상세히 로깅하고 관찰할 수 있습니다. 방화벽은 9.3 방화벽 절에서 더 자세히 다루겠습니다.
  • 이 세션 테이블을 이용해 인과 관계를 파악할 수 있어 정책을 간단히 유지할 수 있습니다. 만약 세션 테이블과 같이 상태 정보를 담아두는 공간이 없어 세션의 방향성을 파악하지 못한다면 많은 정책을 복잡하게 관리해야 합니다. 상태 정보가 없으면 방화벽에서는 하나의 정책을 설정하기 위해 최소한 두 개의 양방향 정책이 함께 설정되어야 합니다. (…). 상태, 세션 정보가 없을 때 패킷이 내부에서 시작한 것인지, 외부에서 시작한 것인지 인지할 수 없어 엄청나게 복잡한 정책관리가 필요합니다.

추가 내용

  • https://www.youtube.com/watch?v=tosLBcAX1vk
    • Stateless라 함은, 서버로 가는 모든 요청이 이전 리퀘스트와 독립적으로 다뤄진다는 뜻이야. 요청끼리 연결이 없어. 메모리가 없다규. 요청이 끝나면. 서버는 너가 누구지 잊어버릴 거야. 요청이 끝나면. 서버는 우리가 누군지 잊어버리기 때문에. 요청 할 때마다. 우리가 누군지 알려줘야 해. 이를 하는 방법 중 하나가 바로 세션이야.
  • https://coding-lks.tistory.com/147
    • 비연결 프로토콜: 매번 새롭게 연결이 성립되기 때문에 필요한 경우 매 연결 시 자신이 누구인지 알려줘야 한다.
  • https://en.wikipedia.org/wiki/Stateful_firewall
    • The method of maintaining a session's state depends on the transport protocol being used. (세션의 상태를 유지 관리하는 방법은 사용 중인 전송 프로토콜에 따라 다릅니다.)

 

스터디 내용

1. 질문

1. 애플리케이션에서 세션 상태 정보를 체크하는 더미 패킷을 대부분의 플랫폼에서 내장하고 있다고 했는데, 어디서 찾아볼 수 있을지?

  • 지윤 : chatgpt가 답해줬어요..

  • 웅희 : 세션이 의미하는 범주가 다양하다보니 많이 헷갈렸습니다. 아마 책에서 얘기하는 범주는 https://tech.kakao.com/2014/05/30/l4/ 해당 내용에 들어맞는 듯 합니다. https://aws-hyoh.tistory.com/102 위와 같은 주제로 이론적인 내용이 더 보충되어 있네요.
  • 다현 : 저도 “세션”의 범주가 많이 헷갈렸는데, 책에서는 “애플리케이션”과 “세션 장비” 사이의 “세션 타임아웃”을 일치시키는 방법으로 이야기하고 있는 것 같습니다.

 

2. FTP를 제외하고 특별한 목적으로 두 개 이상의 세션을 만드는 경우가 어떤 경우들이 있는지?

  • 수민 :  특별한 목적으로 두 개 이상의 세션을 만드는 경우인지는 모르겠지만 ALG가 필요한 프로토콜로는 BitTorrent, SIP, RTSP 등이 있는 것 같아요. (Application-level gateway)

 

3. 시스템 확장 방법에서 스케일 업과 스케일 아웃부분에서, 보통은 비용이 적게 드는 스케일 아웃 방식을 사용하는 것으로 이해했는데 그렇다면 비용이 많이 드는 스케일업을 실제 서비스 사례에서 어떤 분야에서 사용하게 될지 궁금합니다.

  • 지윤 : 저희 회사에서는 모든 서비스를 클라우드 기반으로 사용하고 있기 때문에 적절한 예시일지는 모르겠지만.. 외부에 공개되는 서비스가 아니라 회사 내부 인원을 대상으로 하는 서비스의 경우 스케일업만으로도 해결 가능한 범위의 문제가 많았어서 그럴 때는 스케일업으로 간단하게 해결했었어요. 그리고 스케일 아웃을 하려면 이것저것 다시 설정을 해주어야 하는게 많은데, 그런 것들도 리소스가 들어가는 부분이기 때문에 스케일업으로 해결이 가능하면 스케일업을 택했던 것 같아요.

 

4. 어플리케이션 개발자가 더미 패킷을 보내는 식으로 세션 상태 정보를 체크할 수 있다고 하는데, 개발자가 어떤 방식으로 패킷을 생성하여 보낼 수 있는지 궁금했습니다. (소켓 프로그래밍과 관련이 있는지?)

  • 논의해보았지만 답을 찾기 어려웠음

5. 이 세션 테이블을 이용해 인과 관계를 파악할 수 있어 정책을 간단히 유지할 수 있습니다. 만약 세션 테이블과 같이 상태 정보를 담아두는 공간이 없어 세션의 방향성을 파악하지 못한다면 많은 정책을 복잡하게 관리해야 합니다. 상태 정보가 없으면 방화벽에서는 하나의 정책을 설정하기 위해 최소한 두 개의 양방향 정책이 함께 설정되어야 합니다. (…). 상태, 세션 정보가 없을 때 패킷이 내부에서 시작한 것인지, 외부에서 시작한 것인지 인지할 수 없어 엄청나게 복잡한 정책관리가 필요합니다. 6.3 방화벽방화벽은 메모리에 남는 이런 상태와 세션 정보를 이용해 패킷을 상세히 로깅하고 관찰할 수 있습니다. 방화벽은 9.3 방화벽 절에서 더 자세히 다루겠습니다. → 왜 정책을 복잡하게 다루는지..

  • 지윤: 세션 테이블이 있으면 내부에서 외부로 요청을 해서 응답으로 돌아오는 패킷의 경우 세션 테이블을 참조하면 내부의 요청으로 돌아온 응답인 것을 바로 알 수 있지만, 세션 테이블이 없다면 이게 내부의 요청으로 돌아온 응답인지 아니면 외부의 공격으로 들어온 패킷인지 구분을 할 수 없기 때문에 그런 것 아닐까요? 그리고 세션 테이블이 있으면 내부에서 외부로 요청할 때 특정 아이피와 포트에 대한 정책을 세션을 통해 한가지로만 설정이 가능할텐데, 세션 테이블이 없으면 내부 → 외부에 대한 정책 하나, 외부 → 내부에 대한 정책 하나가 필요해져서 복잡해진다고 이해했어요.

 

2. 모두 함께 읽어본 자료

1. 로드 밸런싱의 작동 방식

  • 라우터가 여러 라우팅 프로세스(또는 RIP, RIPv2, IGRP, EIGRP, OSPF와 같은 라우팅 프로토콜)를 통해 특정 네트워크에 대한 여러 경로를 학습하면 라우팅 테이블에서 관리 거리가 가장 낮은 경로가 설치됩니다. 자세한 내용은 Cisco 라우터의 경로 선택을 참조하십시오.

라우터에 대한 경로 선택 구성

 

2. 공인 IP와 사설 IP의 차이

  • 공인 IP (Public IP)
    • 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소이다. 공용 IP 주소라고도 불리며 외부에 공개되어 있는 IP 주소이다.
      • 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 PC로부터의 접근이 가능하다. 따라서 공인 IP 주소를 사용하는 경우에는 방화벽 등의 보안 프로그램을 설치할 필요가 있다.
  • 사설 IP (Private IP)
    • 일반 가정이나 회사 내 등에 할당된 네트워크의 IP 주소이며, 로컬 IP, 가상 IP라고도 한다. IPv4의 주소부족으로 인해 서브넷팅된 IP이기 때문에 라우터에 의해 로컬 네트워크상의 PC 나 장치에 할당된다.
    • 사설IP 주소대역
      • Class A : 10.0.0.0 ~ 10.255.255.255
      • Class B : 172.16.0.0 ~ 172.31.255.255
      • Class C : 192.168.0.0 ~ 192.168.255.255

공인 IP, 사설 IP, 고정 IP, 유동 IP | GotoCloud

 

3. Proxy의 차이

[WEB] 🌐 Reverse Proxy / Forward Proxy 정의 & 차이 정리

  • 다현 : 서버 공부를 하면서 많이 접했던 개념인데, 스터디를 통해 다시 복습하게 됐네요. 감사합니다.

4. ADC vs ADN

Gartner defines application delivery networking as the combination of WAN optimization  controllers (WOCs) and application delivery controllers (ADCs). At the data center end of an ADN is the ADC.

 

5. ADC VS CDN

[정리] CDN vs 로드 밸런서

 

6. 방화벽의 inbound와 outbound rule의 작동방식

  1. https://www.techtarget.com/searchsecurity/answer/Comparing-firewalls-Differences-between-an-inbound-outbound-firewall

7. 세션 vs 토큰 vs 쿠키

  • https://www.youtube.com/watch?v=tosLBcAX1vk
    • Stateless라 함은, 서버로 가는 모든 요청이 이전 리퀘스트와 독립적으로 다뤄진다는 뜻이야. 요청끼리 연결이 없어. 메모리가 없다규. 요청이 끝나면. 서버는 너가 누구지 잊어버릴 거야. 요청이 끝나면. 서버는 우리가 누군지 잊어버리기 때문에. 요청 할 때마다. 우리가 누군지 알려줘야 해. 이를 하는 방법 중 하나가 바로 세션이야.
    • 현재 : 쿠키가 단지 유저의 세션을 가지고 있는 줄 알았는데, 정확히는 세션 ID 정보를 지니고 이것이 쿠키의 핵심 기능이라는 것을 알게 되었어요! 그리고 네이티브 앱에서 세션 ID를 어떻게 전달하는 지 생각해보지 않았는데 이 때에 토큰을 사용하는 것도 알게되었어요. 세션, 쿠키, 토큰의 개념을 명확히 구분할 수 있는 좋은 영상인것 같아요.

8. 연결 지향 vs 비연결 지향 프로토콜

  • https://coding-lks.tistory.com/147
    • 비연결 프로토콜: 매번 새롭게 연결이 성립되기 때문에 필요한 경우 매 연결 시 자신이 누구인지 알려줘야 한다.

9. Stateful firewall

  • https://en.wikipedia.org/wiki/Stateful_firewall
    • The method of maintaining a session's state depends on the transport protocol being used. (세션의 상태를 유지 관리하는 방법은 사용 중인 전송 프로토콜에 따라 다릅니다.)

 

3. 상점

  • 가장 정리를 잘 해온 사람 : 박지윤(L)
  • 가장 토론에 적극적으로 참여한 사람 : 김수민(M)