컴퓨터(Computer Science)/네트워크, Network

Proxy, 프록시, 중개자

게임이 더 좋아 2022. 11. 27. 16:40
반응형
728x170

 

 

Proxy : 대리인 역할, 중계 역할

→ 클라이언트와 서버 간의 요청한 데이터를 전달함 + Proxy를 통해 실제 IP를 가상 IP로 대체함

 

 

 

역할

  • 캐시 : 웹 서버에서 가져온 데이터를 클라이언트에 전송 후 캐시로 저장(같은 데이터를 요청하면 서버까지 가지 않고 캐시에서 바로 데이터 전송
  • 보안성 1 : 한 단계 서버를 더 거쳐야 하기 때문에 들어오는 요청에 대한 보안 유지 가능 → 외부 인터넷에서는 Client의 정보를 알 수 없음 ( Proxy를 이용하면 실제 IP 주소를 숨길 수 있음, 사이트에서는 원래 IP 주소가 아닌 Proxy 의 IP 주소를 인식 )
  • 보안성 2: 바깥으로 나가는 데이터를 검사 가능(지역 제한 우회로도 쓰임)
  • 보안성 3: 방화벽의 역할도 할 수 있음
  • 보안성 4: 부적절한 사이트로의 접근 방지

 

 

 

프록시 서버의 대표적인 유형 세 가지

 

  1. HTTP Proxy: 웹페이지에만 적합한 프록시
    1. HTTP Proxy는 브라우저를 설정하면 모든 브라우저 트래픽이 해당 경로를 통해 라우팅
  2. SOCKS Proxy: 웹페이지뿐만 아니라 응용프로그램에서도 사용할 수 있는 프록시
    1. SOCKS Proxy는 모든 종류의 트래픽을 처리할 수 ​​있지만 보통 HTTP Proxy보다 연결 속도가 느리고 로딩 시간이 더 오래 걸림
  3. transparent  Proxy:  사용자들이 transparent  Proxy를 사용하고 있다는 사실 자체를 모르는 경우가 많음
    1. 일반적으로 transparent  Proxy는 회사가 기기 사용자의 온라인 활동을 모니터링하고 특정 웹사이트에 접근하지 못하도록 차단하고 싶은 경우에 사용되며 호텔과 카페는 transparent  Proxy를 통해 공용 와이파이에서 사용자를 인증하고 액세스 권한을 허용

 

 

 

 

**Web Server와 WAS를 이해하기 위해선 Reverse Proxy에 대한 선행 학습이 필수

 

Proxy 의 종류

Proxy는 서버가 어디에 위치하느냐에 따라 종류가 나누어짐

각각 용도와 역할이 달라짐

 

1. Forward Proxy(일반적인 프록시) → 기업의 내부망에서 주로 사용

 

클라이언트에서 서버로 리소스를 요청할 때 직접 요청하지 않고 Proxy에 요청

  1. 클라이언트가 서버에 요청
  2. 포워드 프록시 서버가 클라이언트의 요청을 받아서 서버에 전달
  3. 서버의 결과를 다시 클라이언트에 전달

 


 

2. Reverse Proxy(포워드의 반대 개념) → 애플리케이션 서버를 감추는 역할 ★★★★★

**Nginx, Apache, Squid가 이를 지원함

 

클라이언트의 요청을 Proxy를 통해 받음

- 애플리케이션 서버를 직접 호출하는 것이 아니라 Proxy를 통해 호출

  1. A라는 회사가 고객들에게 제공하기 위한 example.com 서비스를 만듦
  2. 클라이언트가 example.com 서비스에 요청을 핢
  3. 리버스 프록시는 이 요청을 받아 내부 서버(WAS)에서 데이터를 받음
  4. 데이터를 받은 후 클라이언트에게 전달

 

 

Reverse Proxy의 역할 ★★★★★

  • LB 1: 리버스 프록시 뒤에 여러 개의 WAS를 둠으로써, 요청을 분산시킴
  • LB 2: End-Point 마다 호출 서버를 설정할 수 있어 역할에 따라 서버 트래픽 분산
  • 보안  : 서버에 직접 접근하는 것을 막기 위해 DMZ 같은 네트워크에 리버스 프록시 구성
  • 캐싱 : 포워드와 같음

 

아래 그림이 추가되어 더 이해하기 쉬울 것 같다.

GSLB에서 Reverse Proxy를 쓴다.

[DevOps] - GSLB, 트래픽이 높을 때 로드밸런싱하기

 

 


 

여기서부터는 Linux로 Proxy Server를 운영하는 예이다.


 

Proxy Server 운영

예시 Proxy Open source : squid

 

관련 설정 파일

/etc/squid/squid.conf

 


주요 파일 설정

 

 

acl : Access Control List, 모든 컴퓨터가 아닌 지정된 컴퓨터나 네트워크만 프록시 서버에 접근할 수 있도록 제한하는 구문

 

http_access : allow, deny 설정 가능 ( http 접근 허용 여부)

 

cache_dir :  캐시할 디스크를 지정

 

ufs : 일반적으로 사용되는 스퀴드용 파일 시스템 지정

 

/var/spool/squid : 캐시 디렉터리 지정

 

1000: 캐시할 데이터 공간을 지정 (MB)

 

16: 캐시에서 사용할 하부 디렉터리 개수

 

256: 앞의 16개 디렉터리 안에 다시 생성할 디렉터리 개수

 

visible_hostname : 네트워크 이름을 외부에 보이도록 허용할 지 여부

 

Squid :  기본 포트(3128)

 

 


 

차단한 웹사이트는 아래 디렉터리에서 지정할 수 있음

 

/etc/squid/blocked_sites

 

기본 설정 방법

 

#1
sudo vi /etc/squid/blocked_sites

#2
facebook.com
twitter.com
instagram.com

#3
sudo vi /etc/squid/squid.conf

#4
acl blocked_sites dstdomain "/etc/squid/blocked_sites"
http_access deny blocked_sites

#5
sudo systemctl restart squid

#6 접속 시 403 Error

 

 

 

 

 


 

 

참고 링크

 

https://www.jscape.com/blog/forward-proxy-vs-reverse-proxy

http://www.ktword.co.kr/test/view/view.php?m_temp1=1829\

https://www.lesstif.com/system-admin/forward-proxy-reverse-proxy-21430345.html

 

 

 

 

728x90
반응형
그리드형