次のページ 前のページ 目次へ

11. SOCKS プロキシサーバ

11.1 プロキシサーバを設定する

SOCKS プロキシサーバは次のところから入手できます。 http://www.socks.nec.com/

お使いのシステムのディレクトリでファイルを解凍、展開し、指示にしたがって make してください。私が行ったときは少し問題ありました。Makefile が正しい ことを確認してください。

一つ大事なことは、プロキシサーバは /etc/inetd.conf に追加しなければいけません。 要求があったとき稼働するようサーバに伝えるため、次の行を追加してください -

  socks  stream  tcp  nowait  nobody  /usr/local/etc/sockd  sockd

11.2 プロキシサーバを設定する

SOCKS プログラムには二つの独立した設定ファイルが必要です。 一つはアクセスを許可したことを伝え、もう一つは適切なプロキシサーバへの 要求に対して経路を決めるものです。 ルーティングファイルは全ての UNIX マシンに置かれていなくてはいけません。 DOS と、たぶんマッキントッシュは自分でルーティングを行うでしょう。

アクセスファイル

socks4.2 Beta では、アクセスファイルは "sockd.conf" という 名前になっています。許可と拒否行の 2行があります。それぞれの行は三つの エントリーを持ちます。

Identifier は許可か拒否(permit/deny)のどちらかです。許可と拒否の両方 を書くようにしなければなりません。

IP アドレスは通常の IP 10 進ドット記法 で 4 バイトアドレスで書かれます。 例えば、192.168.1.0 のようになります。

アドレス修正もまた通常の IP アドレス 4 バイト長です。 ネットマスクのように働きます。 32 bits (1 または 0 など)になるようにこの数値を想定しています。 bit が 1 なら、予約されているアドレスに対応する bit は、IP アドレスの 領域で対応する bit に一致しなければいけません。 例えば、次のような行の場合 -

    permit 192.168.1.23 255.255.255.255

192.168.1.23 に全ての bit が一致する IP アドレス、つまり 192.168.1.23 だけが許可されます。次のような行の場合では -

    permit 192.168.1.0 255.255.255.0

192.168.1.255 から 192.168.1.0 のグループ内にある C クラスのドメインの 全ての数値を許可します。 次のような行を書くべきではありません -

    permit 192.168.1.0 0.0.0.0

この場合は、全てのアドレスをおかまいなしに許可してしまいます。

そこで、まず許可したい全てのアドレスを許可し、それから、残りを 拒否します。 ドメイン 192.168.1.xxx で、全てを許可するには次のようにします -

    permit 192.168.1.0 255.255.255.0
    deny 0.0.0.0 0.0.0.0

これはうまく動くでしょう。 拒否行にある最初の "0.0.0.0" に注意してください。 アドレス修正が 0.0.0.0 になっているので、IP アドレス領域は意味を持ちません。 通常全て 0 で、これは入力が簡単なためです。

どちらに対してもふたつ以上のエントリを指定することができます。

特別なユーザもまた許可あるいは拒否することができます。これは ident 認証 を通して行われます。Trumpet Winsock もそうですが、ident をサポートしてい ないシステムがあるため、私はここでそれについては述べません。 この件については、socks 付属の文書がふさわしいでしょう。

ルーティングファイル

SOCKS のルーティングファイルは "socks.conf" というあまりよく ない名前になっています。私が、"あまりよくない名前" だと言う のは、アクセスファイルの名前によく似ているので、この二つが混乱しやすい という理由からです。

ルーティングファイルは SOCKS クライアントに socks を使用すべきときと、 使わなくていいときを伝える為にあります。例えば、われわれのネットワークで、 192.168.1.3 が 192.168.1.1 のファイアウォールと話す為に socks を使う必要 はありません。イーサネットを通して直接つながっています。127.0.0.1は loopback として自動的に定義されます。もちろん自分自身と話す為に SOCKS は 必要ではありません。ここには三つのエントリー群があります。

拒否(deny)は SOCKS に要求を拒否する場合を伝えます。このエントリーには、 sockd.conf ファイル内で、identifier 、address そして、modifier の三つの 部分があります。これは一般的に sockd.conf 、つまりアクセスファイルによっ ても扱われるので、アドレス修正フィールドは 0.0.0.0 に設定されます。どこか らでも呼び出されないよう自分自身を除外したいなら、ここで設定できます。

direct エントリーは、どのアドレスが socks を使わないかを伝えます。 プロキシサーバなしに到達できる全てのアドレスがあります。 ここでもまた identifier、address、modifierの三つの部分があります。 わわわれの例では次のようになっています。

    direct 192.168.1.0 255.255.255.0

あなたの保護されたネットワーク上では誰に対しても直接接続します。

sockd のエントリーはどのホストが socks サーバデーモンを持っているかを コンピュータに伝えます。構文は次のようになります。

  sockd @=<serverlist> <IP address> <modifier>

@= というエントリーに注意してください。これはプロキシサーバのリストの IP アドレスの設定を許可します。われわれの例では、一つのプロキシサーバ を使うだけですが、あなたはより大きな負荷を許可することで多数持つように でき、失敗した場合の繰り返しのため複数で指定することもできます。

IP アドレスと modifier の部分は、別に示した例と同様に動きます。 どのアドレスが通過していくかを指定します。

ファイアウォールの後ろで DNS を動かす

ファイアウォールの後ろで DNS(ドメインネームサーバ)を設定するのは、比較的 簡単なことです。ただ単にファイアウォールマシンに DNS を設定すればよいだ けです。このように DNS を使う為にファイアウォールの後ろ側でそれぞれのマ シンを設定します。

11.3 プロキシサーバを動かす

Unix

プロキシサーバでアプリケーションを動かす為には、 "SOCKS 化(sockified) "が必要です。 直結のコミュニケーション用に一つと、プロキシサーバを通しての コミュニケーション用の二種類の telnet が必要です。SOCKS にはプログラムをどのように SOCK 化するかについての手順 書と、数個のSOCKS 化されていないプログラムを同封しています。 あなたがどこかに直接接続するためSOCKS 化された版を使うなら、 SOCKS は自動 的にあなたの為に直接接続用の版に変更するでしょう。このため、保護された ネットワーク上で全ての関連プログラムをリネームし、もともとの名前のものを SOCK 化されたプログラムで置き換えたいわけです。 "Finger" は "finger.orig", に、 "telnet" は "telnet.orig", のようになります。 これらを include/socks.h でそれぞれについて SOCKS に伝えてやらなくては いけません。

ある種のプログラムはそれ自身でルーティングと SOCKS 化を処理します。 Netscape はそれらの一つです。 Netscape でプロキシのもとで SOCK の場所 にサーバのアドレス(われわれの場合は、192.168.1.1 )を入力してプロキシサー バを使うことができます。少なくともそれぞれのアプリケーションは、プロキシ サーバをどのように使うかに関わらず、多少の試行錯誤は必要です。

Trumpet Winsock を持った MS Windows

Trumpet Winsock にはプロキシサーバを扱う機能が組み込まれています。 "セットアップ"メニューで、サーバの IP アドレスと、直接的に 到達可能な全てのコンピュータのアドレスを入力します。そうすれば Trumpet は外に向かう全てのパケットを扱います。

【訳注: Trumpet Winsock は Windows 3.1 の為の TCP/IP プロトコルスタック ソフトウェアです。 詳細は PC-TCPIP-FAQ-J をご覧ください。】

UDP パケットで動かす為にプロキシサーバを入手する

SOCKS パッケージはTCP パケットだけを処理し、UDP は扱いません。このため、 このパッケージが全く役にたたない場面が出てきます。talk や Archie のような 多くの有用なプログラムは UDP を使います。Tom Fitzgerald <fitz@wang.com> さんによって、 UDP relay と呼ばれる UDP パケットに対 してプロキシサーバとして使うように設計されたパッケージが作成されています。 ただし、残念ですが、この文書を書いている時点では Linux との互換性はありません。

11.4 プロキシサーバの欠点

プロキシサーバはとりわけセキュリティデバイス です。限られた IP アドレスでインターネットへのアクセスを増やす為にプロキシを使うのは、多 くの欠点も伴います。プロキシサーバは保護されたネットワークの内部から外 部へより多くのアクセスを許可しますが、外部からは完全に内部がアクセスできま せん。このようにするとサーバが使えない、 talk や archieへの接続ができない、 あるいは内部のコンピュータに直接メールできないということになります。これら の欠点は取るにたらないことのようにも思えますが、次のように考えて見てください。

FTP はプロキシサーバで別の問題を起こします。lsを使うと、 FTP サー バはクライアントマシン上でソケットを開き、そこから情報を送ります。プロキ シサーバはこれを許可していませんので、 FTP はこの場合には動きません。

更に、プロキシサーバは遅いです。 他のどんな方法よりもオーバヘッドが大きくなるので、 プロキシサーバ経由以外の手段でアクセスする方が速くなります。

基本的に、あなたが IP アドレスを持っていても、セキュリティについて悩んで いないなら、ファイアウォールやプロキシサーバを使わなくてよいのです。IP アドレスを持っていないなら、セキュリティについてもまた悩まないでしょう が、Term, Slirp や TIA のような IP エミュレータを使ってみたいでしょう。 Term は ftp://sunsite.unc.eduで 入手できます。Slirp は ftp://blitzen.canberra.edu.au/pub/slirpから入手できます。 TIA は marketplace.com で入手できます。

これらのパッケージはより高速に動き、よりよい接続を許可し、インターネット から内部ネットワークにより多くのアクセスを提供します。プロキシサーバは設 定と維持に手間がかからないので、手っ取り早くインターネットに接続したい多 くのホストを持っているようなネットワークにとっては便利なものです。


次のページ 前のページ 目次へ