· 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 프록시 기능을 수행한다 - 김원일


ID
Password
Join
There will be big changes for you but you will be happy.


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.0033 sec