리눅스마스터1급 : PROXY서버 설치와 설정 그리고 활용(Trouble shooting)
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,867 조회
- 0 추천
- 목록
본문
리눅스마스터1급 : PROXY서버 설치와 설정 그리고 활용(Trouble shooting)
1) Squid 설치
리눅스의 대표적인 프록시 서버는 Squid이다.
Squid는 대부분의 배포판에서 패키지 형태로 제공하고, dnf, yum, apt-get, yast등의 패키지관리 프로그램으로 설치 할 수 있다.
[root@RockyLinux01 ~]# dnf -y install squid 마지막 메타자료 만료확인 0:23:07 이전인: 2023년 06월 19일 (월) 오후 02시 58분 23초. 종속성이 해결되었습니다. ======================================================================================================================== 꾸러미 구조 버전 레포지터리 크기 ======================================================================================================================== 설치 중: 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 4월 13 2022 cachemgr.conf -rw-r--r-- 1 root root 692 4월 13 2022 cachemgr.conf.default -rw-r--r-- 1 root root 1800 4월 13 2022 errorpage.css -rw-r--r-- 1 root root 1800 4월 13 2022 errorpage.css.default -rw-r--r-- 1 root root 12077 4월 13 2022 mime.conf -rw-r--r-- 1 root root 12077 4월 13 2022 mime.conf.default -rw-r----- 1 root squid 2526 4월 22 01:18 squid.conf -rw-r--r-- 1 root root 2526 4월 22 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)을 생성하는데, 소스 IP를 192.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 |
|
|
|
|
위 설정은 소스 IP가 192.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, accel은 Accelerator 모드를 의미한다.
∙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"을 설정하였다.
관련자료
-
이전
-
다음