17장. 프록시 서버 설치 및 운영 - 프록시 서버 구축

728x90
반응형

출처 : https://www.youtube.com/watch?v=PZTvDTgggKA&list=PLVsNizTWUw7FqN2gq79Cb3R6qkS7mqOJk&index=71

 

 

프록시 서버 개념

 

  • 프록시(Proxy)란 단어는 '대리인'이라는 뜻이다. 프록시 서버는 대리인의 역할을 하는 서버를 의미한다.
  • 웹 환경에서 프록시 서버는 웹 클라이언트와 웹 서버 사이에서 요청한 데이터를 전달하는 역할을 한다.
  • 한번 전송한 데이터를 캐시에 저장한 후, 같은 데이터를 또 요청할 경우에 캐시에 저장된 것을 보내준다.

자세한 내용은 네트워크 항목 참고.

 

2. Application Layer (1)

Principles of network application 이 챕터에서는 Application Protocol이 구성이 되는지, 어떤 패러다임에 의해서 만들어졌는지, 다양한 Application Protocol에 무엇이 있는지를 배우는 것을 목표로 한다. TCP/IP 네

zangwoo.tistory.com

 

프록시 서버의 작동 방식

1. '웹 브라이저 1'에서 웹 서핑을 요청한다.

2, 3. 프록시 서버가 웹 서버에 접근해 데이터를 가져온다.

4. 가져온 데이터를 캐시에 저장한다.

5. 요청한 데이터를 '웹 브라우저 1'에게 전송한다.

6. '웹 브라우저 2'가 웹 서핑을 요청한다(이때 요청한 데이터는 '웹 브라우저 1'이 요청한 것과 같다고 가정한다).

7. 프록시 서버는 외부로 나가지 않고 자신의 캐시에 있던 데이터를 가져온다.

8. 그 데이터를 '웹 브라우저 2'에게 바로 전송한다.

 

 

프록시 서버 구현

 

실습 목표

  • Rocky Linux에서 제공되는 'Squid 프록시 서버'를 설치한다.
  • 설정 파일인 /etc/squid/squid.conf 파일 내용을 파악한다.
  • 웹 클라이언트의 다운로드 속도가 향상되는 것을 확인한다.

 

server, client 가상 머신을 설정 완료 상태로 초기화하고 부팅한 다음, root 사용자로 접속한다. Winclient 가상 머신은 초기화를 하지 않아도 된다.

 

프록시 서버 구축

 

server 가상 머신에 Squid 프록시 서버 패키지를 설치한다.

dnf -y install squid

 

 

gedit 에디터로 /etc/squid/squid.conf 파일을 실행하고 다음 내용을 작성한다.

gedit /etc/squid/squid.conf

28행에 추가: acl rocky9 src 192.168.111.0/255.255.255.0	
56행에 추가: http_access allow rocky9
64행에 주석 제거 후 수정: cache_dir	ufs	/var/spool/squid	1000	16	256
가장 아래쪽에 추가: visible_hostname	rocky9

 

acl rocky9 src 192.168.111.0/255.255.255.0 : acl(Access Control List)는 모든 컴퓨터가 아닌 지정한 컴퓨터나 네트워크만 프록시 서버에 접근할 수 있도록 제한하는 구문이다. 즉, 우리의 네트워크(192.168.111.0)의 컴퓨터들은 프록시 서버에 접근을 허용하겠다는 의미이다. 그리고 그 사용자들의 이름은 rocky9이다.

 

http_access allow rocky9 : http_access는 allow와 deny로 설정할 수 있는데 여기에서는 allow로 설정해 rocky9이라는 이름을 가진 네트워크의 접근을 허용한다는 의미이다.

 

cache_dir ufs /var/spool/squid 1000 16 256 : cache_dir은 캐시할 디스크를 지정하는 부분이다. ufs는 디스크 형식을 지정하는 것으로 이번 실습에서는 일반적으로 사용되는 스퀴드용 파일시스템으로 디스크를 지정했다. 그리고 /var/spool/squid 부분에는 캐시 디렉토리를 적어주면 된다. 1000은 캐시할 데이터 공간을 MB단위로 지정한 것이고, 16은 캐시에서 사용할 하부 디렉토리 갯수, 256은 앞 16개 디렉토리 안에 다시 생성할 디렉토리 갯수를 지정하는 것이다.

 

visible_hostname rocky9 : visible_homename은 네트워크의 이름을 외부에 보이도록 설정하는 부분이다. 

 

 

방화벽에서 프록시 서버 관련 포트인 3128번을 영구적으로 허용하고 저장한다.

firewall-cmd --permanent --add-port=31285/tcp
firewall-cmd --reload

 

 

혹은 firewall-config로 방화벽 설정에서 추가해줘도 된다.

 

 

Client 가상 머신에서 현재는 아직 squid를 사용하지 않기 때문에 인터넷이 정상적으로 접속이 가능하다.

 

 

Firefox 웹 브라우저에서 우측 상단에 [메뉴] -> [설정] -> [네트워크 설정]으로 들어가 인터넷 프록시 접근 설정을 [수동 프록시 설정]으로 설정하고 위 그림처럼 입력한다.

 

그리고 확인 버튼을 누르고 Firefox 웹 브라우저를 닫는다.

 

 

다시 Firefox를 키고 구글로 들어가면 접속이 되지 않는다. 왜냐하면 현재 프록시 서버가 꺼져있기 때문에 외부의 웹 서버로 접속이 되지 않기 때문이다.

 

 

다시 server 가상 머신으로 돌아와 squid 프록시 서버를 가동시키고 상시 가동되도록 설정한다. 상태를 확인해 active (running) 상태가 되었는지 확인하는 것을 추천한다.

systemctl restart squid
systemctl enable squid
systemctl status squid

 

 

다시 client 가상 머신으로 돌아와 파이어폭스를 새로고침하면 접속이 된다.

 

현재는 프록시 서버가 잘 작동하고 있기 때문에 외부에 웹 서버에 접속이 가능하다. 그리고 접속된 데이터들은 캐시에 저장된다.

 

 

WinClient 가상 머신에서 [시작] 우클릭 -> [설정] -> [네트워크 및 인터넷]->[프록시]로 들어가 [자동으로 설정 검색]을 끄고, [수동 프록시 설정]에서 [프록시 서버 사용]을 켠 후 [주소]에 192.168.111.100, [포트]에 3128을 입력한다. 그리고 하단에 [저장]을 클릭하고 [설정] 창을 닫는다.

 

 

웹 브라우저로 구글을 접속하면 잘 접속이 된다. 체감은 안되겠지만 현재 우리가 구축한 프록시 서버를 통해 외부의 구글 웹 서버로 접속하고, 구글 웹 서버에서 전송한 데이터는 프록시 서버의 캐시에 저장이 된다.

 

프록시 서버를 사용하면 중앙 서버에 부하를 줄이고, 외부에 나갈 필요 없이 프록시 서버에서 데이터를 제공해 줄 수 있어서 빠르게 응답을 받을 수 있다는 장점이 있다.

 

 

728x90
반응형