圧縮トンネルソフトのメモ

我が家のzebe on gentooを作ったときのメモ

zebedeeでstoneをラップするサーバー側設定のメモ

1. 暗号化トンネルソフトzebedeeをインストール

#emerge zebedee
...
>> net-misc/zebedee-2.5.3 merged.

2. httpプロクシ(にも使える)stoneをインストール

 #emerge stone
 ...
 >> net-misc/stone-2.2c merged.

3. zebedee設定ファイルを作成
3.1 デフォルトのファイルを退避

#cd /etc/zebedee
#mkdir old
#mv *.* old

3.2 サーバー設定ファイルを作成
以下のような内容のファイルを作成(/etc/zebedee/server.zbd)

detached false
server true	# Yes, it's a server!
ipmode both	# Operate in mixed TCP/UDP mode
compression zlib:9	# Allow maximum zlib compression
keylength 256		# Allow keys up to 256 bits
keylifetime 36000	# Shared keys last 10 hours
maxbufsize 16383	# Allow maximum possible buffer size
keygenlevel 2	# Generate maximum strength private keys
checksumlevel 3	    # Allow maximum strength checksums
minchecksumlevel 0  # Allow no checksums if client requests
#serverport 11965   # zebedeeサーバーの待ち受けポート
checkidfile '/etc/zebedee/clients.id' # クライアントの認証キーリスト
target localhost:8080/tcp #stone用の8080を通す

3.3 秘密鍵と公開鍵の作成(クライアント側)
適当にzebedeeをインストールしておき...
秘密鍵生成

$zebedee -p > private.key

公開鍵生成

$zebedee -P -f private.key > public.key

3.4 認証キーリストを作成
クライアントに鍵のハッシュ(公開鍵)を提出してもらい
/etc/zebedee/clients.id に追加

4. daemontoolsの設定
zebedeeやstoneはinitスクリプトが無いようなのでdaemontoolsで代用
4.1 daemontoolsのインストール

#emerge daemontools
...
>> sys-process/daemontools-0.76-r5 merged.

4.2 svscanを自動実行登録

#rc-update add svscan default

4.3 svscanを実行

#/etc/init.d/svscan start

5. stoneの実行スクリプトを作成
5.1 フォルダの用意

#mkdir /var/supervise/stone-proxy -p
#chmod +t /var/supervise/stone-proxy

5.2 実行スクリプト作成
以下の内容を(/var/supervise/stone-proxy/run)に記述

#!/bin/sh
exec stone proxy 8080

5.3 実行属性を与えてsvscanに登録

#chmod +x /var/supervise/stone-proxy/run
#ln -s /var/supervise/stone-proxy /servise/stone-proxy

6. zebedeeの実行スクリプトを作成
6.1 フォルダの用意
stoneと同様

#mkdir /var/supervise/zebedee -p
#chmod +t /var/supervise/zebedee

6.2 実行スクリプト作成
以下の内容を(/var/supervise/zebedee/run)に記述

#!/bin/sh
exec zebedee -f /etc/zebedee/server.zbd

6.3 実行属性を与えてsvscanに登録

#chmod +x /var/supervise/zebedee/run
#ln -s /var/supervise/zebedee/ /service/zebedee

7. 確認
svstatでサービスが起動しているかチェック

  # svstat /service/zebedee/
  /service/zebedee/: up (pid 8269) 519 seconds
  # svstat /service/stone-proxy/
  /service/stone-proxy/: up (pid 8245) 865 seconds

仮にup timeが 1秒 0秒を繰り返すようなら
うまく起動していないので設定を見直す必要がある
以下のコマンドでサービスを停止してから作業をする

  #svc -d /service/zebedee
  #svc -d /service/stone-proxy

再開時は

  #svc -u /service/zebedee
  #svc -u /servise/stone-proxy

あとnetstat で以下のようになっていればok

tcp        0      0 *:http-alt              *:*                     LISTEN      
tcp        0      0 *:11965                 *:*                     LISTEN

11965はzebedeeのポートなのでこれを公開すれば良い

8. クライアントの追加
クライアント追加時は
/etc/zebedee/clients.idに鍵の登録の他に
zebedeeをリブートさせなければいけない

 #svc -du /service/zebedee/

9. クライアントの設定
zebedeeを適当に落としておいて
以下のようなファイル(client.zbd)を作成

detached true
server false                #クライアントとして動けという私事
localsource true            #ローカル接続のみ許可
compression zlib:9	# Allow maximum zlib compression
keylength 256		# Allow keys up to 256 bits
keylifetime 36000	# Shared keys last 10 hours
maxbufsize 16383	# Allow maximum possible buffer size
keygenlevel 2	# Generate maximum strength private keys
checksumlevel 3	    # Allow maximum strength checksums
minchecksumlevel 0  # Allow no checksums if client requests

serverhost *サーバー名*     #サーバーの指定
serverport 11965   # zebedeeサーバーの待ち受けポート
include './private.key' # 認証キーの取り込み(中身をここに貼り付けても良い)

tunnel 8080:*サーバー名*:8080 #stoneのトンネルを作成

10. クライアントのzebedee起動

 >zebedee -f client.zbd

バッチファイルにしたほうがいいかも?

11. クライアントのhttpプロクシ設定
適当にブラウザのhttpプロキシをlocalhostの8080に変更

以上

※補足

zebedeeおよびstoneの自動実行に関しては、daemontoolsを使わない方法として
/etc/rc.localに追記する方法も試してみた。

ubuntu linux上に同様のシステムを作る際は同ファイルに以下の2行を追加した

/usr/local/bin/setuidgid zebedee /usr/bin/zebedee -f /etc/zebedee/server.zbd
/usr/local/bin/setuidgid stone /usr/bin/stone -l proxy 8080 &

これでそれぞれの専用ユーザーでサービスが起動するようになる。
終了については自動じゃないけど、まーいいでしょ。

※さらに補足

setuidgidコマンドは事前にdaemontoolsのインストールが必要でした
しかし別ユーザーとして実行するためなら以下の用にすると良いことが分かりました

sudo -u zebedee /usr/bin/zebedee -f /etc/zebedee/server.zbd
sudo -u stone /usr/bin/stone -l proxy 8080 &

sudoコマンドはubuntuでは標準で使えるので、こちらの方が良さそうです。