2010年2月14日日曜日

Linkstation LS-L500GL(LS-LGL)をプロキシサーバにする

メモリが16MBしかないLS-L500GLにsquidを入れてみたけど案の定使えなかった。
という事で軽いpolipoを試してみました。

一番メモリを占有している共有フォルダ機能(samba)とWeb設定画面(apache httpd)は停止してpolipo専用機にしています。

以下が設定ファイル(/etc/polipo.conf)の内容。
proxyAddress = "0.0.0.0"
allowedClients = "192.168.100.0/24"
cacheIsShared = false
chunkHighMark = 819200
objectHighMark = 128
daemonise = true
diskCacheRoot = "/mnt/disk1/share/polipo"
diskCacheTruncateSize = 2147483647 # 大量にキャッシュを残してみた。
diskCacheTruncateTime = 31d12h
diskCacheUnlinkTime = 64d
logFile = "/mnt/disk1/share/polipo/polipo.log"
localDocumentRoot = ""
disableIndexing = true
disableServersList = true
dnsQueryIPv6 = no
dnsNameServer = "192.168.100.1"
pidFile = /var/run/polipo.pid
pmmFirstSize = 16384
pmmSize = 8192

IPv6は使わず。
キャッシュフォルダは容量がたくさんあるSamba用の領域に作成しました。
インデックス機能とかも無効に。多分メモリとCPUが弱いので有効にすると遅くなるはず。

/etc/polipo.confを置いて、以下の起動スクリプトで起動。
そこそこ使えるのが意外でしたがうれしい。

起動スクリプト。(/etc/init.d/polipo.sh)
#!/bin/sh
# Start/stop the polipo daemon.
#
#

test -f /usr/bin/polipo || exit 0

case "$1" in
start) echo -n "Start services: polipo"
/usr/bin/polipo -c /etc/polipo.conf
;;
stop) echo -n "Stop services: polipo"
killall polipo
;;
restart)
$0 stop
$0 start
;;
*) echo "Usage: $0 start|stop|restart"
exit 1
;;
esac
exit 0
以下は作ったバイナリを含むtarball。
(自分の環境が改造されすぎているので普通のLS-L500GLで動くかどうかは不明。無保証)

polipo1041bin.tar.bz2


以下はpolipoのインストーラがやってること。
makeが動かせない場合はこれを参考にコピーすれば動くかも。
mkdir -p /usr/share/polipo/www
mkdir -p /usr/share/polipo/www/doc
cp -f polipo /usr/bin/
cp -f html/* /usr/share/polipo/www/doc
cp -f localindex.html /usr/share/polipo/www/index.html
cp -f polipo.man /usr/man/man1/polipo.1
cp polipo.info /usr/info/
install-info --info-dir=/usr/info polipo.info