· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Docbook Sgml/SSH_mini_Proxy-KLDP

SSH + Mini Proxy

SSH + Mini Proxy

임은재

2001년 11월 4일

고친 과정
고침 0.12001-11-04고친이 eunjea
첫번째 문서

1. 소개

이 문서는 ssh 터널링과 작은 proxy, socks 서버를 설정/사용하는 방법이다.

이것은 나처럼 느린 인터넷 접속을 사용하거나, 인터넷 사용 요금을 트래픽(!) 단위로 계산해서 내야하는 사람들에게는 꽤 유용한 방법이다. (최소한 나에게는 그렇다 :-))


2. 네트워크 구성

내가 살고 있는 기숙사는 10.1.1.0 네트웍으로 묶여 있으며 인터넷으로의 모든 트래픽은 10.1.1.1 을 통해서만 가능하다. 모든 트래픽은 첵크되어 매달 몇Mbyte당 얼마씩의 돈을 받고 있다.

 ------------            ----------------
| 10.1.1.15  |  local   | 10.1.1.1       |
|            |----------| 212.xxx.xx.xxx |-------- internet
| linux boxs | 10.1.1.0 | ISP gate       | 
 ------------            ---------------- 

3. proxy 설정

다행히도 나에게는 ssh 접속이 가능한 서버들이 몇대 있는데 이 서버들은 아주 빠른 네트웍에 물려 있다. (kidc안에 있음) 나는 이 서버의 일반 계정으로 프록시 서버를 설치하고 프록시 포트를 ssh를 사용해 로컬 포트로 포워딩하고 있다. 이때 사용되는 tcp 트래픽은 ssh에 의해 압축된다.

프록시 서버 역할을 할 프로그램들은 일반 계정으로도 사용할수 있는 작으며, 서버에 부하를 주지않으며, 쉽게 설정가능한 것들을 찾아보았다. 다음 두가지를 테스트 해보았는데 모두 잘 작동했다.

tinyproxy는 이름 그대로 작은 http 프록시 서버이다. 소스를 받아 컴파일 한후에 다음과 같이 설정 파일을 만든다.

# tinyproxy.conf

Port 8080 
Allow 127.0.0.1
Timeout 600
Logfile "/tmp/proxy.log"
LogLevel Connect
PidFile "/tmp/proxy.pid"

MaxClients 50
MinSpareServers 5
MaxSpareServers 10
MaxRequestsPerChild 0

위 설정파일은 프록시 서버가 8080 포트를 사용하며, localhost에서의 접속만을 허용하는 것으로 되어있다. 실행은 tinyproxy -c tinyproxy.conf 로 해준다.

socks 4/5 를 지원하는 nylon을 사용하려면 다음과 같은 설정파일을 사용한다.

# nylon.conf

[General]
No-Simultaneous-Conn=10
Log=1
Verbose=0
PIDfile=/tmp/nylon.pid
[Server]
Port=8080
Allow-IP=127.0.0.0/24

역시 로컬 호스트에서의 접속만을 허용하며 8080 포트를 사용하도록한 설정 파일이다. 실행은 nylon -c nylon.conf 로 한다.


4. SSH, 브라우져 설정

프록시 서버가 준비 되었다면 SSH를 사용해 해당 포트를 로컬 포트로 다음과 같이 포워딩해준다. 예를 들어 ssh 서버가 babo.com 이고 계정이 babo라면

ssh -C babo@babo.com -L 8080:localhost:8080 -f sleep 10000

포워딩 된 포트를 사용하도록 브라우저의 프록시 설정을 해준다. 만약 tinyproxy를 사용한다면, http proxy 에 localhost:8080 으로 nylon을 사용한다면 SOCKS Host를 localhost:8080 으로 설정하면 된다.

이제 브라우저는 ssh가 만들어 놓은 터널을 통해 ssh 서버의 프록시 서버를 사용하게 될것이다. 이 터널안을 흐르는 모든 데이터는 압축되므로 트래픽도 절약될 것이다.

좀더 효율적인 ssh 접속을 위해 ssh protocol 1을 사용할 경우 ~/.ssh/config 파일에 CompressionLevel 를 지정해 줄수 있다. man 페이지에도 나와 있듯이 일반적으로 6 으로 설정해주는 것이 속도나 압축 효율면에서 좋았다.

만약 자신의 박스외에 같은 로컬 넷트워크상의 다른 박스가 포워딩된 프록시 포트를 사용하려면 ~/.ssh/config 파일에 GatewayPorts yes 를 추가해 주어야 한다. 이 옵션이 없을 경우 loopback에 포트가 바인딩 되기 때문에 다른쪽에서 접속할수 없기 때문이다.


5. 저작권

5.1. 저작권 정보

Copyright (C) 2001 임은재

이 문서는 GNU Free Documentation License 버전 1.1 혹은 자유 소프트웨어 재단에서 발행한 이후 판의 규정에 따르며 저작권에 대한 본 사항이 명시되는 한 어떠한 정보 매체에 의한 본문의 전재나 발췌도 무상으로 허용됩니다.


5.2. 책임의 한계

본 저자는 문서의 내용이 야기할 수 있는 어떠한 결과에 대해서도 책임을 지지 않습니다.


7. 참고사항

SOCKS 4/5 만을 사용해도 무방하다면(IE, Mozilla, Firefox등은 SOCKS 4/5를 지원한다. Opera는 아직 지원하지 않고있다) 굳이 nylon, tinyproxy등을 사용할 필요가 없다. ssh -D 8080 sshserver 만으로 훌륭하게 SOCKS 프록시 기능을 수행한다 - 김원일




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-04-03 12:17:26
Processing time 0.0083 sec