강좌
클라우드/리눅스에 관한 강좌입니다.
네트워크 분류

리눅스마스터1급 : PROXY서버 설치와 설정 그리고 활용(Trouble shooting)

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: PROXY서버 설치와 설정 그리고 활용(Trouble shooting)

 

 

 

1) Squid 설치

 

 

리눅스의 대표적인 프록시 서버는 Squid이다.

 

 

 

Squid는 대부분의 배포판에서 패키지 형태로 제공하고, dnf, yum, apt-get, yast등의 패키지관리 프로그램으로 설치 할 수 있다.

 

[root@RockyLinux01 ~]# dnf -y install squid

마지막 메타자료 만료확인 0:23:07 이전인: 20230619() 오후 025823.

종속성이 해결되었습니다.

========================================================================================================================

꾸러미 구조 버전 레포지터리 크기

========================================================================================================================

설치 중:

squid x86_64 7:5.5-5.el9 appstream 3.6 M

종속 꾸러미 설치 중:

libecap x86_64 1.0.1-10.el9 appstream 25 k

perl-Digest-SHA x86_64 1:6.02-461.el9 appstream 61 k

perl-English noarch 1.11-480.el9 appstream 14 k

 

연결 요약

========================================================================================================================

설치 4 꾸러미

 

총계 내려받기 크기: 3.7 M

설치된 크기 : 12 M

꾸러미 내려받기 중:

(1/4): libecap-1.0.1-10.el9.x86_64.rpm 93 kB/s | 25 kB 00:00

(2/4): perl-Digest-SHA-6.02-461.el9.x86_64.rpm 219 kB/s | 61 kB 00:00

(3/4): perl-English-1.11-480.el9.noarch.rpm 961 kB/s | 14 kB 00:00

(4/4): squid-5.5-5.el9.x86_64.rpm 9.3 MB/s | 3.6 MB 00:00

------------------------------------------------------------------------------------------------------------------------

합계 3.6 MB/s | 3.7 MB 00:01

연결 확인 실행 중

연결 확인에 성공했습니다.

연결 시험 실행 중

연결 시험에 성공했습니다.

연결 실행 중

스크립트릿 실행 중: squid-7:5.5-5.el9.x86_64 1/1

준비 중 : 1/1

설치 중 : perl-English-1.11-480.el9.noarch 1/4

설치 중 : libecap-1.0.1-10.el9.x86_64 2/4

설치 중 : perl-Digest-SHA-1:6.02-461.el9.x86_64 3/4

스크립트릿 실행 중: squid-7:5.5-5.el9.x86_64 4/4

설치 중 : squid-7:5.5-5.el9.x86_64 4/4

스크립트릿 실행 중: squid-7:5.5-5.el9.x86_64 4/4

Creating group 'lp' with GID 971.

 

/usr/lib/tmpfiles.d/cups.conf:4: Failed to resolve user 'lp': No such process

 

확인 중 : perl-Digest-SHA-1:6.02-461.el9.x86_64 1/4

확인 중 : squid-7:5.5-5.el9.x86_64 2/4

확인 중 : libecap-1.0.1-10.el9.x86_64 3/4

확인 중 : perl-English-1.11-480.el9.noarch 4/4

 

설치되었습니다:

libecap-1.0.1-10.el9.x86_64 perl-Digest-SHA-1:6.02-461.el9.x86_64 perl-English-1.11-480.el9.noarch

squid-7:5.5-5.el9.x86_64

 

완료되었습니다!

[root@RockyLinux01 ~]#

 

 

 

 

2) Squid 설정

 

[root@RockyLinux01 ~]# cd /etc/squid/

[root@RockyLinux01 squid]#

[root@RockyLinux01 squid]# ll

합계 48

-rw-r--r-- 1 root squid 692 413 2022 cachemgr.conf

-rw-r--r-- 1 root root 692 413 2022 cachemgr.conf.default

-rw-r--r-- 1 root root 1800 413 2022 errorpage.css

-rw-r--r-- 1 root root 1800 413 2022 errorpage.css.default

-rw-r--r-- 1 root root 12077 413 2022 mime.conf

-rw-r--r-- 1 root root 12077 413 2022 mime.conf.default

-rw-r----- 1 root squid 2526 422 01:18 squid.conf

-rw-r--r-- 1 root root 2526 422 01:18 squid.conf.default

[root@RockyLinux01 squid]#

 

 

Squid의 주 설정파일은 /etc/squid/squid.conf 이다.

 

 

 

주 설정파일은 주석까지 포함한다면 4천라이인이 넘고 아주 많은 기능이 있다.

 

 

 

앞에서 설명한 여러 프록시 설정을 해 보도록 하고 추가적인 기능은 주석 및 맨페이지를 참조하여 설정하길 바란다.

 

 

 

 

 

고전적인 프록시 서버 설정

 

 

squid.conf 설정파일에서 다음 내용을 확인하여 수정한다.

 

 

 

 

 

 

 

 

 

http_port 3128

cache_mem 2048 MB

cache_dir ufs /var/spool/squid 102400 512 1024

access_log /var/log/squid/access.log squid

cache_log /var/log/squid/cache.log

acl our_networks src 192.168.0.0/24

http_access allow our_networks

 

 

 

 

 

 

 

위 설정 내역을 살펴 보도록 하자.

 

 

http_port 3128

Squid의 웹에대한 프록시 포트를 지정한다.

 

 

 

기본 포트는 3128이다.

 

 

 

 

 

cache_mem 2048 MB

캐시 메모리를 설정한다.

 

 

 

메모리가 많으면 좋은 성능을 낸다.

 

 

 

여기서는 2G를 설정했다.

 

 

 

 

 

cache_dir ufs /var/spool/squid 102400 512 1024

 

캐시된 내용을 저장할 디렉토리 타입 및 디렉토리, 용량, 디렉토리수를 설정한다.

 

 

 

 

- ufs : 잘 알려진 Squid 스토리지 포멧이다.

 

 

 

 

- /var/spool/squid : 캐시 내용이 저장될 디렉토리 경로

- 102400 : 캐시 디스크의 총 용량이며 MB단위이다.

 

 

 

128G SSD에 캐시 데이터를 저장한다는 가정하에서 100G를 할당하였다.

 

 

 

 

- 512 : Level1 하위 디렉토리의 수이다.

 

 

 

512개의 하위 디렉토리를 사용한다.

 

 

 

 

- 1024 : Level2 하위 디렉토리의 수이다.

 

 

 

1024개의 2차 하위 디렉토리를 사용한다.

 

 

 

 

 

access_log /var/log/squid/access.log squid

 

접근로그를 /var/log/squid/access.log 파일에 저장하며, 로그 포멧은 squid으로 한다.

 

 

 

 

 

cache_log /var/log/squid/cache.log

 

캐시로그 파일을 지정한다.

 

 

 

 

acl our_networks src 192.168.0.0/24

 

"our_networks" 이름의 acl(access control list)을 생성하는데, 소스 IP192.168.0.xxx 대역으로 한다.

 

 

 

 

http_access allow our_networks

 

위에서 생성한 acl“our_networks"를 웹프록시(http_access)에 대해 허용(allow) 하는 설정이다.

 

 

 

 

다음으로 웹브라우저에서 설정해 보자.

 

설정은 인터넷익스플로러 10 기준으로 하며, 다른 웹브라우저도 비슷한 방식으로 설정 할 수 있다.

 

 

 

 

 

도구 또는 우측 상단에 톱니바퀴 아이콘을 클릭하여 인터넷 옵션으로 들어간다.

 

 

 

그 중 연결탭을 선택한다.

 

 

 

하단에 "LAN 설정으로 들어간다.

 

 

 

 

 

 

 

 

"LAN 설정에서 프록시 서버에 주소 및 포트 번호를 입력한다.

 

 

 

 

 

 

 

위와 같이 설정 하고 확인을 클릭하여 빠져 나오면 설정된 것이다.

 

 

 

 

 

투명 프록시 서버 설정

 

 

웹브라우저에서 프록시 설정을 하지 않아도 되며, 모든 웹트래픽을 통제하기 위해 많이 사용하는 방법이다.

 

 

 

squid.conf 설정파일에서 다음 내용을 확인하여 수정한다.

 

 

 

 

 

 

 

 

 

http_port 3128 transparent

cache_mem 2048 MB

cache_dir ufs /var/spool/squid 102400 512 1024

access_log /var/log/squid/access.log squid

cache_log /var/log/squid/cache.log

acl our_networks src 192.168.0.0/24

http_access allow our_networks

 

 

 

 

 

 

 

위 설정은 앞에서 설정한 고전적인 프록시 설정과 별 다른 것이 없다.

 

 

 

, http_port 설정에서 transparent(투명) 옵션이 추가 되었다.

 

 

 

 

 

http_port 3128 transparent

 

Squid의 웹에대한 프록시 포트를 지정한다.

 

 

 

기본 포트는 3128이며, 투명 프록시로 사용한다.

 

 

 

 

 

투명 프록시 설정은 앞에서 설명한 것과 같이 iptables의 도움을 받아야 한다.

 

 

 

iptables를 다음과 같이 설정한다.

 

 

 

 

 

 

 

 

 

iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

 

 

 

 

 

 

 

위 설정은 소스 IP192.168.0.xxx에서 목적지 프로토콜이 TCP이면서 포트가 80번인 패킷은 3128 포트로 포워딩 해 준다.

 

 

 

 

 

역 프록시 서버 설정

 

squid.conf 설정파일에서 다음 내용을 확인하여 수정한다.

 

 

 

 

 

 

 

 

 

http_port 80 accel

cache_peer 222.97.189.2 parent 80 0 no-query originserver round-robin

cache_mem 2048 MB

cache_dir ufs /var/spool/squid 102400 512 1024

access_log /var/log/squid/access.log squid

cache_log /var/log/squid/cache.log

http_access allow all

 

 

 

 

 

 

 

위 설정은 앞에서 설정한 고전적인 프록시 설정과 비슷하지만, 다음 부분이 다르다.

 

 

 

 

 

http_port 80 accelSquid의 웹에대한 프록시 포트를 지정한다.

 

 

 

웹 기본 포트로 80, accelAccelerator 모드를 의미한다.

 

 

 

 

 

 

cache_peer 222.97.189.2 parent 80 0 no-query originserver round-robin

 

캐싱할 원본 웹서버의 IP"222.97.189.2"이며 캐시서버의 관계는 "parent" 이다.

 

 

 

원본서버의 포트는 "80"이며, ICP 포트는 "0"으로 설정하였지만, no-query 옵션으로 ICP쿼리를 보내지 않게 했다.

 

 

 

리얼 웹서버 가속을 위해 "originserver" 옵션을 설정한다.

 

 

 

원본 서버가 여러개일 경우 라운드로빈 방식으로 원본서버를 참조하기 위해 "round-robin"을 설정하였다.

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,035 명
  • 현재 강좌수 :  35,794 개
  • 현재 접속자 :  131 명