本稿で紹介するshd-tcp-toolsは、ポートフォワーディング(ポート転送)、ロードバランシング(負荷分散)、レートリミティング(転送速度制限)をTCP接続に施すためのツール群をまとめたものである。これが役立つのは、SSHサービスを提供したいが長時間に及ぶ単一のSCPオペレーションがサーバのインターネット接続を食い尽くしてしまわないよう、各ユーザが利用できる帯域幅に制限を設けておきたいという場合だ。
確かにポートフォワーディング機能はSSH自身にも用意されているが、これにshd-tcp-toolsを併用することで、ポート転送に対するレートリミティングが可能となる。ただしshd-tcp-toolsはTCPレベルで動作し、認証および暗号化に関する有効な機能を有していないため、SSHのポートフォワーディング機能をshd-tcp-toolsにて置き換えられるという訳ではない。つまりSSHとshd-tcp-toolsは相互補完的な関係にあり、前者はセキュリティ関連の機能を提供し、後者はSSHを基にしたネットワーク容量のレートリミティング機能を提供し、可能であればキャパシティのロードバランシングも行うという住み分けになっているのだ。
shd-tcp-toolsのパッケージは、Ubuntu、Fedora、openSUSEのリポジトリには収録されておらず、本稿の執筆においてもshd-tcp-toolsの最新版にあたるバージョン0.05のソースを入手した上で、後述する手順による64ビット版Fedora 9マシンを用いたソースからのアプリケーションビルドを行っている。なおshd-tcp-toolsはautotoolsを使用しないが、設定用のスクリプトは用意されており、そのMakefileもallおよびinstallをターゲットとするため、実質的にはautotoolsプロジェクトと同様のビルドが行える。具体的なインストール手順は下記のようになるが、ここで行う最終ステップはバイナリ群を/usr/local/binにインストールするMakefileの固定シーケンスである。
$ tar xjvf /.../shd-tcp-tools-0.05.tar.bz2 $ cd shd-tcp-tools-* $ ./configure $ make $ sudo make install
shd-tcp-toolsを構成する主要なツールは、単方向のTCPパイプを作成するtcppipe、TCPでの双方向ポートフォワーディングを可能とするtcp-pf、中間ホストを介したポートフォワーディングをセットアップするためのlistentwoおよびconnecttwoである。
