- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!delegate
http://delegate.hpcc.jp/delegate/
!start
./delegated +=dg.conf
!stop
./delegated -Fkill +=dg.conf
!!sample
> ./delegated +=dg.conf
!dg.conf
% cat ./delegate/conf/dg.conf
## DeleGate configure file.
-P18080
SERVER=http
-v
ADMIN=mymail@ours.domain
# RELIABLE=192.168.100.[100-200]
# RELIABLE=10.[10-254].0.[1-200]
#
PERMIT="*:*:192.168.100.0/255.255.255.0"
PERMIT="*:*:10.0.0.0/255.0.0.0"
# PERMIT="*:*:*"
#
!SSL 対応
|REMITTABLE="+,ssltunnel"
するか
|CMAP=thru-CONNECT:HTTPCONF:https:サーバ:クライアント
するか
delegated -Dst -P8080
!dg.conf ( sample2)
# DeleGate config. file
-P8080
SERVER=http-sp
CACHE=do
EXPIRE=7d
!dg.conf (sample3)
-P80
SERVER=http
CACHE=do
EXPIRE=100d
ADMIN=you@your.domain
# AUTH="admin::root:root"
!dg.conf (sample4)
-P80
DGROOT=/home/foobar/delegate
OWNER=foo/bar
REACHABLE="*"
RELIABLE="*"
SERVER="http"
MOUNT="/* http://192.168.200.20:80/* cache=no"
MOUNT="/sub/* http://dadd.foo.bar/hoge/* cache=no"
!dg.conf ( sample 5 )
-P80
DGROOT=/home/foobar/delegate
OWNER=foo/bar
REACHABLE="*"
RELIABLE="*"
SERVER="tcprelay://192.168.200.20:80/"
!Socks (sample6)
-P8080
SERVER=socks
DGROOT=/home/foobar/delegate
-v
ADMIN=mymail@ours.domain
PERMIT="*:*:192.168.250.0/255.255.255.0"
PERMIT="*:*:10.0.0.0/255.0.0.0"
PERMIT="*:*:127.0.0.1/255.255.255.255"
# $DGROOT/bin/dg9_9_13 -P18080 SERVER=socks ADMIN=hostmaster@example.com RELIABLE="192.168.0.0/24,10.0.0.0/16"
# lsof -nPi TCP:1080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dg9_9_13 9758 delegate 11u IPv4 2306802 0t0 TCP *:1080 (LISTEN)
----
Delegateで画像圧縮プロクシ
外部から携帯や Air H" でネット接続した時にデータの転送時間を短縮するため、Delegate に画像圧縮の機能を持たせてみる。
Air H" にはトルネードウェブという圧縮プロクシが用意されているが、この Mac OS X 版は何故か使えたり使えなかったりで、あまり役に立たない。
それならというわけで自前で用意してみる。
環境:Mac OS X 10.2.8 (Client), Delegate 8.9.4, ImageMagick 5.5.6
肝になるのは、 ImageMagick に付属する convert というコマンドを Delegate からフィルターとして利用すること。
まずは Delegate が必要だが、それは「無線LANをSSLトンネル」に書いたので省略。
次に、ImageMagick だが、これは Fink でインストール出来る。
材料は以上。あとは設定。
まず、xinetd から Delegate を起動させるため、次の内容を /etc/xinetd.conf に書き足すか、 /etc/xinetd.d/dg_comp というファイルを作って保存する。
service dg_comp
{
socket_type = stream
protocol = tcp
user = root
groups = yes
wait = yes
port = 8080
type = UNLISTED
disable = no
server = /usr/local/sbin/delegated
server_args = DGROOT=/Server/Delegate AUTHORIZER=127.0.0.1 SERVER=http PERMIT=*:*:syn@* REMITTABLE=http,https,ftp CACHE=do EXPIRE=1h FCL=sslway FTOCL=comp.cfi
}
※ 「dg_comp」という部分は設定の名称なので任意だが、既存の設定と重複しない必要がある。
※ SSLWayを使用しない場合は FCL=sslway の部分を削除する。
設定内容は次の通り。
・8081ポートをListenする
・プロセスが使用するルートディレクトリを /Server/Delegate とする(この配下にログ やキャッシュを作成する)
・クライアント認証を依頼するFTPサーバのあるホスト
・プロクシサーバの種類はHTTPプロクシ
・アクセスコントロール:「httpとhttpsとftpプロトコルを受け付ける」、「全てのサー バへの接続を許可する」、「全てのサーバからのユーザーsynのアクセスを許可する」
・対象プロトコルは http, https, ftp のみ
・クライアントからの接続は SSLWay を経由して SSL 接続させる。
・キャッシュ有効
・キャッシュ有効期限1時間
・クライアントへの転送にcomp.cfiに記述されているフィルターを実行する
キャッシュファイルを削除する設定が出来ないので、 root の crontab に次の設定を作る。
0 * * * * /usr/local/sbin/delegated -Fexpire /Server/Delegate/cache -rm -atime +1 -sum
次に、Delegate の LIB ディレクトリにフィルタースクリプト (comp.cfi) を作る。
#!cfi
Content-Type: image/jpeg
Body-Filter: /sw/bin/convert -colors 32 -quality 10 - -
--
Content-Type: image/gif
Body-Filter: /sw/bin/convert -colors 8 - -
--
Content-Type: image/png
Body-Filter: /sw/bin/convert -colors 8 -quality 8 - -
設定内容は次の通り。
・image/jpeg ファイルの色数を32色に落とし、画質度数を 10 に制限する
・image/gif ファイルの色数を8色に落とす
・image/png ファイルの色数を8色に落とし、画質度数を 8 に制限する
画像の圧縮率などは使用する用途によって調整する。
上記の設定は私の自宅サーバ環境でクライアントにパソコンを使う事を前提に合わせてあ るが、クライアントにPDAなどで使う場合は圧縮率を上げ過ぎると端末の処理能力が追いつかなくなるので注意。
ついでにgzipを使ってHTMLも圧縮しようとしてみたが、HTTP応答ヘッダの書き換えがうま くいかないため、ブラウザがうまく反応しなかった。
Delegateを二段にする事も考えたが、閲覧するWebサイトごとにクライアント認証を促されてしまうために断念。
どうしても必要なら、SSHトンネルを -C オプション付きで作成し、gzip圧縮を有効にすればいいだろう。