서버 측의 LAN에는 무엇이 있는가?

김성혁·2023년 1월 25일
0

방화벽의 원리와 동작

(a)와 같이 환경을 구성하는 경우 IP 주소가 부족해지고 서버는 노출 상태로 방치되기 때문에 선호되지 않는 형태입니다.

(b)와 특정 서버에서 동작하는 애플리케이션에 액세스하는 패킷만 통과시키도록 방화벽을 두는 형태가 일반적입니다.

💡 특정 서버와 해당 서버 안의 특정 애플리케이션에 액세스하는 패킷만 통과시키고, 그 외의 패킷은 차단합니다.

  • 패킷을 받으면 정확하게 도착했는지를 송신측에 알리는 수신 확인 응답의 구조가 작용하므로 웹 서버에서 인터넷측으로 흐르는 패킷도 있습니다.
  • 애플리케이션을 한정할 때 포트 번호를 사용합니다.

  • 컨트롤 비트를 사용하여 패킷이 흐르는 방향이 아니라 액세스 방향을 판단하여 접속 방향을 판단해야 합니다.

💡 수신처 IP 주소, 송신처 IP 주소, 수신처 포트 번호, 송신처 포트 번호, TCP 컨트롤 비트를 조건으로 하고, 통신의 시점과 종점, 애플리케이션의 종류, 액세스 방향을 판별하여 방화벽 설정을 해야 서버가 위험한 상태에 빠지는 것을 예방할 수 있습니다.

방화벽은 패킷의 시점과 종점만을 가지고 판단하므로 위험한 패킷이 서버에 도착하여 서버를 다운시키는 상황을 예방할 수는 없습니다. 이 문제의 원인은 웹 서버의 소프트웨어의 버거에 있으므로 버그를 고쳐서 다운되지 않도록 합니다. 또한, 패킷의 내용을 조사하여 위험한 데이터가 포함된 패킷을 차단하는 별도의 준비가 필요합니다.

서버의 부하 분산

💡 복수의 서버를 사용하여 처리를 분담하는 방법

클라이언트에서는 부하 분산 장치에 액세스하고 부하 분산 장치가 복수의 웹 서버에 요청을 전달합니다.

부하 분산 장치를 이용해 복수의 웹 서버로 분할

부하 분산 장치(로드 밸런서)를 사용하여 웹 서버와 정기적으로 정보를 교환하여 CPU나 메모리의 사용률 등을 수집하고, 이것을 바탕으로 어느 웹 서버의 부하가 낮은지 판단하거나, 시험 패킷을 웹 서버에 보내 응답 시간으로 부하를 판단하는 방법으로 부하를 판단합니다.

캐시 서버를 이용한 서버의 부하 분산

여러 대의 서버를 활용한 부하 분산 뿐만 아니라 캐시 서버를 활용하여 부하 분산을 합니다.

  • 프록시 : 웹 서버와 클라이언트 사이에 들어가서 웹 서버에 대한 액세스 동작을 중개하는 역할을 하는데, 액세스 동작을 중개할 때 웹 서버에서 받은 데이터를 디스크에 저장해 두고 웹 서버를 대신하여 데이터를 클라이언트에 반송하는 기능을 가지고 있습니다. 이를 캐시라고 부릅니다.
  • 하지만, 웹 서버측에서 데이터가 변경되었을 때, 해당 데이터와 캐시의 데이터 일관성을 유지하는 것이 중요합니다.

데이터가 캐시에 저장되어 있는 경우

  1. 캐시 서버에서 웹 서버측에 데이터가 변경되었는지 조사하기 위한 ‘If-Modified-Since’라는 헤더 필드를 추가하여 웹 서버에 전송합니다.
  2. 웹 서버는 If-Modified-Since 헤더 필드와 데이터의 최종 갱신 일시를 비교하여 변경이 없었을 경우, 웹 서버에서 캐시 서버에 304 Not Modified 메시지를 보냅니다.
  3. 캐시 서버는 캐시에 저장한 데이터를 추출하여 클라이언트에게 전송합니다.

데이터가 캐시에 저장되어 있지 않은 경우

  1. 캐시 서버는 리퀘스트 메시지에 캐시 서버를 경유한 것을 나타내는 ‘Via’ 헤더 필드를 추가하여 웹 서버에 리퀘스트를 전송합니다.
  2. 한 대의 캐시 서버로 여러 대의 서버의 데이터를 캐시에 저장한 경우 전송 대상의 웹 서버를 판단하기 위해 리퀘스트 메시지의 URI를 사용합니다. 그리고 웹 서버로 요청을 보냅니다.
  3. 캐시 서버가 웹 서버에게 응답을 받으면 응답 메시지에 Via 헤더 필드를 추가하여 프록시를 경유한 사실을 클라이언트에 알립니다. 그리고 응답 메시지를 캐시에 저장하고 저장 일시를 기록합니다.

포워드 프록시 : 클라이언트측에 캐시 서버를 두는 방법으로, 캐시 이용뿐만 아니라 방화벽의 역할을 수행합니다. 리퀘스트의 내용을 조사한 후 전송하므로 리퀘스트의 내용에 따라 액세스가 가능한지 판단할 수 있습니다. 보통 브라우저 설정 화면에 준비되어 있는 프록시 서버라는 항목에 포워드 프록시 IP 주소를 설정합니다.

  • 포워드 프록시를 설정하면 URL의 내용에 상관 없이 리퀘스트를 전부 포워드 프록시로 보내는 것이 특징이고, http://…… 라는 URL을 그대로 리퀘스트 URL에 기록합니다.

리버시 프록시 : 포워드 프록시를 사용함으로써 발생하는 단점(브라우저에 별도의 설정이 필요하다는 점, 인터넷에 공개하는 웹 서버는 누가 액세스하는지 알 수 없는)을 극복하기 위해 리퀘스트 메시지의 URI에 쓰여있는 디렉토리명과 전송 대상의 웹 서버를 대응시켜서 전송할 수 있도록 하는 방법을 채택합니다. 서버측에 설치하는 캐시 서버

트랜스페어런트 프록시 : 캐시 서버에서 전송 대상을 판단하는 방법, 즉 리퀘스트 메시지의 패킷의 IP 헤더를 통해 액세스 대상 웹 서버를 알아내는 방법(전송 대상을 캐시 서버에 설정할 필요가 없습니다.)

0개의 댓글