리눅스 분류
프락시 서버에 대하여....도와주세여..
작성자 정보
- soda 작성
- 작성일
컨텐츠 정보
- 5,290 조회
- 0 추천
- 목록
본문
squid의 동작 환경은 세가지 mode가 있습니다
1. normal mode
우리가 알고 있는 일반적인 동작 모드 입니다.
사용하는 방법은 웹 브라우저 등에서 proxy server를 설정하는 부분에서
squid를 설치 해 놓은 특정 서버 ip 와 port를 지정해서 사용하는 방법
입니다. 이때 80 port는 사용하지 않습니다.
80 port는 web server가 default 값으로 사용하기 때문입니다.
2. transparence mode
transparency는 투명성 입니다. 즉 normal mode와 같이 웹 브라우저등의
일반 응용 프로그램에서 proxy server를 사용자가 직접 셋팅할 필요가
없습니다. 제 홈페이지의 관련 내용을 보셨을지 모르겠는데요, 그처럼
L4 switch 등을 이용해서 80 port로 전달되는 packet을 중간에서 inter-
cept 해서 proxy server에 전달함으로써 동작이 되게 됩니다.
자세한 동작 방법에 대해서는 여기서는 생략하다록 하겠습니다.
3. server accelerator mode
세번째 모드가 바로 질문하는 동작 mode 입니다.
서버 가속기라고도 불립니다. 혹은 reverse mode라고도 불립니다.
말 그대로 특정 web server 앞단에 붙어 있는게 대부분입니다.
즉 사용자는 특정 웹 사이트에 접속할때 실제 그 사이트가 있는 서버에
연결하는 것이 아닌 바로 앞단에 있는 proxy server에 접속하게 됩니다.
따라서 사용자들의 요구를 web server가 모두 처리하는게 아니고, 일부
작업을 proxy server가 대신하게 됩니다.
물론 실제 web server - proxy server 간의 동기도 맞춰줘야 하는 등
해결해야 할 문제는 많지만, 아뭏든 기본 원리는 그렇습니다.
마지막으로 port에 대해서 말씀 드리겠습니다. 실제로 통신을 할 때 가장
중요한 정보는 ip address와 port 정보 입니다. 이때 ip address는 같을
수 있지만 port 정보를 통해서 어떤 응용 프로그램으로 전달해야 할지를
결정하게 됩니다.
즉 A 라는 컴퓨터에서 ftp, telnet, http를 지원한다고 가정해 봅시다.
ftp의 기본 port는 21번, telnet의 기본 port는 23번, http의 기본 port는
80번 입니다.
따라서 여러 사용자들이 A 라는 컴퓨터에 서비스 요청을 할 때 해당 port가
몇번인지에 따라서 ftp, telnet, http 등을 적절하게 서비스를 하게 됩니다.
따라서 서버 가속기 모드(accelerator mode)를 사용할 때는 squid를 port
80으로 맞춰야만 하겠지요. 즉 HTTP 서비스를 실제 서버 대신에 수행을
하게 됩니다.
1. 컴파일
일반 사용자 계정으로 설치를 하는 경우와 root 권한으로 설치하는 경우가 약간 차이가 납니다. 만약 일반 사용자 계정이라면 몇가지 문제가 생길 수 있습니다.(root 권한이 필요합니다.)
여기서는 root 권한을 갖고 설치하는 경우로 하도록 하겠습니다.
1) ./configure --prefix=/usr/local/squid (설치될 경로 지정 및 시스템 정보 수집)
2) make
3) make all
2. squid.conf 수정 (설정 변경 입니다)
1) cd /usr/local/squid/etc/
2) vi squid.conf
반드시 변경해야 하는 설정 사항
http_port 8080 // 접근 포트 설정 (디폴트는 3128 변경 안해도 됨)
http_access allow all // 디폴트로 deny가 되어 있으므로 반드시 allow 로 변경
3. uid "nobody" 확인
4. gid "nogroup" 확인
5. cache 디렉토리 생성
1) cd /usr/local/squid
2) mkdir cache
3) 디렉토리 권한 변경
chown nobody cache
chgrp nogroup cache
chmod 2755 cache
6. cache 디렉토리 초기화
1) ./squid -z
2001/04/19 11:00:11| Creating Swap Directories 라는 메시지가 나오면 성공
만약 아래와 같은 메시지가 나오면 디렉토리 소유자나 허가모드가 잘못된 경우이므로 5번과 같이 변경
-----------------------------------------------------------
2001/04/19 11:00:11| Creating Swap Directories
FATAL: Failed to make swap directory
/usr/local/squid/cache: (13) Permission denied
Squid Cache (Version 2.3STABLE3): Terminated abnormally.
...
-----------------------------------------------------------
만약 다음과 같은 메시지가 나오면 계정이나 그룹의 설정이 잘못 되어 있는 경우이다.
-----------------------------------------------------------
FATAL: getgrnam failed to find groupid for effective group 'nogroup'
Squid Cache ...
...
-----------------------------------------------------------
/etc/passwd 파일을 검색한다.
만약 'nobody' 라는 사용자가 없다면 이를 추가한다.
ex) nobody:x:99:99:Nobody:/:
/etc/group 파일을 검색한다.
만약 'nogroup' 이라는 그룹이 없다면 이를 추가한다.
ex) nogroup:x:99:nobody
7. log 디렉토리 생성
1) cd /usr/local/squid
2) mkdir logs
3) chown nobody logs
4) chgrp nogroup logs
5) chmod 2755 logs
8. squid 실행
1) cd /usr/local/squid/bin
2) ./squid
9. 실행 확인
1) ps -ax |grep squid 등의 명령으로 제대로 실행되었는지 확인
만약 정상적으로 실행되지 않으면 logs 디렉토리의 cache.log에 에러 내용이 기록된다
1. normal mode
우리가 알고 있는 일반적인 동작 모드 입니다.
사용하는 방법은 웹 브라우저 등에서 proxy server를 설정하는 부분에서
squid를 설치 해 놓은 특정 서버 ip 와 port를 지정해서 사용하는 방법
입니다. 이때 80 port는 사용하지 않습니다.
80 port는 web server가 default 값으로 사용하기 때문입니다.
2. transparence mode
transparency는 투명성 입니다. 즉 normal mode와 같이 웹 브라우저등의
일반 응용 프로그램에서 proxy server를 사용자가 직접 셋팅할 필요가
없습니다. 제 홈페이지의 관련 내용을 보셨을지 모르겠는데요, 그처럼
L4 switch 등을 이용해서 80 port로 전달되는 packet을 중간에서 inter-
cept 해서 proxy server에 전달함으로써 동작이 되게 됩니다.
자세한 동작 방법에 대해서는 여기서는 생략하다록 하겠습니다.
3. server accelerator mode
세번째 모드가 바로 질문하는 동작 mode 입니다.
서버 가속기라고도 불립니다. 혹은 reverse mode라고도 불립니다.
말 그대로 특정 web server 앞단에 붙어 있는게 대부분입니다.
즉 사용자는 특정 웹 사이트에 접속할때 실제 그 사이트가 있는 서버에
연결하는 것이 아닌 바로 앞단에 있는 proxy server에 접속하게 됩니다.
따라서 사용자들의 요구를 web server가 모두 처리하는게 아니고, 일부
작업을 proxy server가 대신하게 됩니다.
물론 실제 web server - proxy server 간의 동기도 맞춰줘야 하는 등
해결해야 할 문제는 많지만, 아뭏든 기본 원리는 그렇습니다.
마지막으로 port에 대해서 말씀 드리겠습니다. 실제로 통신을 할 때 가장
중요한 정보는 ip address와 port 정보 입니다. 이때 ip address는 같을
수 있지만 port 정보를 통해서 어떤 응용 프로그램으로 전달해야 할지를
결정하게 됩니다.
즉 A 라는 컴퓨터에서 ftp, telnet, http를 지원한다고 가정해 봅시다.
ftp의 기본 port는 21번, telnet의 기본 port는 23번, http의 기본 port는
80번 입니다.
따라서 여러 사용자들이 A 라는 컴퓨터에 서비스 요청을 할 때 해당 port가
몇번인지에 따라서 ftp, telnet, http 등을 적절하게 서비스를 하게 됩니다.
따라서 서버 가속기 모드(accelerator mode)를 사용할 때는 squid를 port
80으로 맞춰야만 하겠지요. 즉 HTTP 서비스를 실제 서버 대신에 수행을
하게 됩니다.
1. 컴파일
일반 사용자 계정으로 설치를 하는 경우와 root 권한으로 설치하는 경우가 약간 차이가 납니다. 만약 일반 사용자 계정이라면 몇가지 문제가 생길 수 있습니다.(root 권한이 필요합니다.)
여기서는 root 권한을 갖고 설치하는 경우로 하도록 하겠습니다.
1) ./configure --prefix=/usr/local/squid (설치될 경로 지정 및 시스템 정보 수집)
2) make
3) make all
2. squid.conf 수정 (설정 변경 입니다)
1) cd /usr/local/squid/etc/
2) vi squid.conf
반드시 변경해야 하는 설정 사항
http_port 8080 // 접근 포트 설정 (디폴트는 3128 변경 안해도 됨)
http_access allow all // 디폴트로 deny가 되어 있으므로 반드시 allow 로 변경
3. uid "nobody" 확인
4. gid "nogroup" 확인
5. cache 디렉토리 생성
1) cd /usr/local/squid
2) mkdir cache
3) 디렉토리 권한 변경
chown nobody cache
chgrp nogroup cache
chmod 2755 cache
6. cache 디렉토리 초기화
1) ./squid -z
2001/04/19 11:00:11| Creating Swap Directories 라는 메시지가 나오면 성공
만약 아래와 같은 메시지가 나오면 디렉토리 소유자나 허가모드가 잘못된 경우이므로 5번과 같이 변경
-----------------------------------------------------------
2001/04/19 11:00:11| Creating Swap Directories
FATAL: Failed to make swap directory
/usr/local/squid/cache: (13) Permission denied
Squid Cache (Version 2.3STABLE3): Terminated abnormally.
...
-----------------------------------------------------------
만약 다음과 같은 메시지가 나오면 계정이나 그룹의 설정이 잘못 되어 있는 경우이다.
-----------------------------------------------------------
FATAL: getgrnam failed to find groupid for effective group 'nogroup'
Squid Cache ...
...
-----------------------------------------------------------
/etc/passwd 파일을 검색한다.
만약 'nobody' 라는 사용자가 없다면 이를 추가한다.
ex) nobody:x:99:99:Nobody:/:
/etc/group 파일을 검색한다.
만약 'nogroup' 이라는 그룹이 없다면 이를 추가한다.
ex) nogroup:x:99:nobody
7. log 디렉토리 생성
1) cd /usr/local/squid
2) mkdir logs
3) chown nobody logs
4) chgrp nogroup logs
5) chmod 2755 logs
8. squid 실행
1) cd /usr/local/squid/bin
2) ./squid
9. 실행 확인
1) ps -ax |grep squid 등의 명령으로 제대로 실행되었는지 확인
만약 정상적으로 실행되지 않으면 logs 디렉토리의 cache.log에 에러 내용이 기록된다
관련자료
-
이전
-
다음
댓글 0
등록된 댓글이 없습니다.