作成開始 : 平成24年05月25日(金) 最終更新 : 平成24年05月27日(日)

Squid と Delegate で Proxy を試す


【背景】

私がかかわっているお客様宅の会議室の一角を借りて「開発・検証環境」を構築している。それは、各種サーバー機の設定変更や新規または変更アプリケーションの実行する場合、いきなり実機ですることはできないので事前に動作検証をするためだ。
検証環境とはいっても、Windows Updateによる更新はしたいし、ホームページ閲覧したりダウンロードしたり、メール送受信したりするのにSEサイド実行環境にあるPCに移動するのが面倒な場合がある。
しかし、本番とほとんど同じネットワーク構成をしているので直接基幹ネットワークに接続するわけにはいかない。
そこで、PCにNICを2枚装着して Proxyサーバを構成してインターネット接続ができるようにしてみた。

【ネットワーク構成】

【機器の概要】

1.1FDルータ( Floppy Fw )はHDDを外している。DNSリレーをしている。
1.Proxyサーバーは Windows Server 2003 Standard SP2 である。ルーティング設定はしていない。
2.ルータ×2は、昨年度の工事で外れたルータである。端末型接続でIPSecによりトンネル接続している。
3.PPPoEサーバーは FreeBSD 6.2R である。構築方法は ここ を参照。
4.L3 SW( CentreCOM 8624XL )は H17システム更改で用意した予備機である。

【開発・検証環境の要件】

1.基幹業務、Web業務ともにお客様実環境と同じように動作すること。
2.Proxyサーバー経由で ホームページ閲覧、FTP接続、メール送受信、Windows Update自動更新ができること。

Windows ファイアウォールもしくはセキュリティソフトでファイアウォールを構成している場合はアクセスを許可してあげてください。

【Web Proxyサーバー設定】

はじめ、ホームページ閲覧とWindows Update が出来ればよいと思っていたので Squid (Windows版)をインストールした。
1.Squid (Windows版)のインストールと設定
Windows NT 4.0/2000/XP/2003版のSquid(以下Squid-NTという)は ここ からダウンロードする。
最新してもいいけど、検証環境からなのでまぁいいかーーというこで「squid-2.5.STABLE14-NT-bin.zip」をダウンロードした。
ダウンロードしたファイルを解凍し、squid-2.5.STABLE14-NT-binフォルダの下にある squid フォルダ以下を C:\ 直下にコピーした。
もし、違う場所に置いた場合は squid.conf に記述されている各種のファイルやディレクトリ情報を修正しなければならないとのことである。
次に squid.conf と mime.conf をコマンドプロンプトで作成する
C:\> cd \squid\etc
C:\squid\etc> copy squid.conf.default squid.conf
C:\squid\etc> copy mime.conf.default mime.conf
squid.conf をエディタで編集する。最低限の編集を下記のようにした。(squid.confの詳細についてはこちらを参照)
 ;;

#Default:
# http_port 3128
http_port 8080 <--- Proxyのポート番号を8080とする。

 ;;

#Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl localnet src 192.168.0.0/255.255.0.0 <--- 192.168.0.0/16からのアクセスを許可する。
acl to_localhost dst 127.0.0.0/8

 ;;
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access allow localnet <--- 上のACLでアクセス許可を与える。
http_access deny manager
 ;;
#Default:
# logfile_rotate 10
logfile_rotate 7 <--- ログファイルのローテション回数を指定する。
 ;;
# TAG: visible_hostname
# If you want to present a special hostname in error messages, etc,
# then define this. Otherwise, the return value of gethostname()
# will be used. If you have multiple caches in a cluster and
# get errors about IP-forwarding you must set them to have individual
# names with this setting.
#
#Default:
# none
visible_hostname proxy.kensyou.co.jp <--- このProxyサーバ名

コマンドプロンプトでsquid キャッシュエリアを作成する。
C:\> cd \squid\sbin
C:\squid\sbin> squid -z
コマンドプロンプトでsquid をサービスとして登録する。
C:\> cd \squid\sbin
C:\squid\sbin> squid -l
以上でSquidはサービスとしてして登録される。 コントロールパネルを開いて、サービスの中に「SquidNT」という名前で登録されている事を確認する。
Squidをサービスから外す場合には、コマンドプロンプトで以下のようにする。
C:\> cd \squid\sbin
C:\squid\sbin> squid -r
OSを再起動するか、コントロールパネルのサービスから「SquidNT」を起動して動作を確認する。
ログ( C:\squid\var\logs\access.log )の肥大化を防止するために、以下のコマンドを記述したバッチファイルを作成しタスクスケジューラで定時に実行するようにした。
C:\> cd \squid\sbin
C:\squid\sbin> squid -n SquidNT -k rotate
※SquidNT は、ディフォルトのサービス名です。
2.クライアントPCのプロキシ設定
IE9 で解説します。それ以外のブラウザは読み替えてください。
ツール→インターネットオプション→接続→LANの設定 で下のようにした。
さらに、詳細設定を設定した。
これで、インターネット上のホームページが閲覧できたらOKである。
次に Windows Update の自動更新ができるように設定した。コマンドプロンプトで以下のようにする。実行はいずれも administrator など、管理者権限のある利用者としてログオンして行った。
proxycfg は、Windows XP SP2 以降 / Windows Server 2003 でのコマンドである。
C:\> proxyxfg -u
そして、OSを再起動した。これにより、自動更新が有効になったことを確認した。なお、これを解除するには proxycfg -d とする。
現在の設定を確認するには proxycfg とする。
Windows Vista / Server 2008 / 7 / Server 2008 R2 の場合は、proxycfg のかわりに netsh winhttpコマンドを使う。
管理者権限のある利用者としてログオンしてコマンドプロンプトから実行する。
内容 コマンド (全てを 1 行で入力)
プロキシ設定を確認する netsh winhttp show proxy
プロキシを、Internet Explorer のプロキシ設定と同じ内容に設定する netsh winhttp import proxy source=ie
プロキシ設定を消去する netsh winhttp reset proxy

【SMTP POP Proxyサーバー設定】

Squid によってホームページの閲覧やダウンロード、Windows Update は可能になったので、次はメール送受信もしたくなった。
はじめからメール送受信も意識していれば全てこの delegate で構成したのだが・・・まぁいっかー
1.delegate (Windows版) のインストールと設定
delegate の windows版は ここ からダウンロードした。
ダウンロードした dg9_9_7.zip を C:\Program Files\DeleGate に解凍する。

(注) DGROOT がデフォルトで /Program Files/DeleGate となっているので別な場所に置いたときは cfgファイルの中に以下のようにDGROOT行を追加すること。
 DGROOT="D:/Program Files/DeleGate/"
C:\Program Files\DeleGate に実行ファイル(バッチファイル)を作成した。
[delegate-smtp.batの内容]

bin\dg9_9_7.exe +=delegate-smtp.cfg
gg
[delegate-pop.batの内容]

bin\dg9_9_7.exe +=delegate-pop.cfg
gg
C:\Program Files\DeleGate に設定ファイルを作成した。
[delegate-smtp.cfgの内容]

-P25
SERVER=smtp://takaq1.plala.jp/
RELIABLE="*"
ADMIN=user@example.com
[delegate-pop.cfgの内容]

-P110
SERVER=pop://takaq1.plala.jp/
RELIABLE="*"
ADMIN=user@example.com
SERVER にある takaq1.plala.jp は自宅メールサーバーである。
SMTP, POP ともお客様のネットワーク(固定IP)からアクセスができるように設定している。
delegate の実行は、コマンドプロンプトでカレントディレクトリを C:\Program Files\DeleGate に移動して上記で作成したバッチファイルを起動して行う。
NT系のOSでは DeleGate Server -Pnnn がサービスとして動作する(nnnはポート番号)。
バッチファイル(delegate-xxx.bat)を実行するといくつかの y/n の問い合わせがあるが、通常はデフォルトのまま([ ]でくくった方がデフォルトなので単にEnterキーを押すだけ)でよい。
delegate-xxx.cfgを変更したときには、再度delegate-xxx.batを実行する。
DeleGateが一旦サービスとして登録されれば、停止/開始はコントロールパネルのサービスから操作する。

登録したサービスを削除するときは delegate-xxx.bat を実行し、「Create a new service ?」で n をキー入力する。

いずれの実行でも英文でコメント表示および選択を求められるが、ジックリと読めば理解できると思う。
ここまできたらクライアントPCのメーラを設定してメール送受信テストを行う。失敗した時は cfg ファイルを訂正して各々のバッチファイルを起動して行うとよい。
2.クライアントPCのメール設定
Windows Live メール で説明する。他のメールクライアントは読み替えてください。

 ↑
ここは通常どおりのアカウント情報を設定する。

 ↑
受信メールサーバー、送信メールサーバーを ProxyサーバーにしたIPアドレスを設定する。

【その他】

Proxyネタとはちょっと違うが、せっかくなので Proxyサーバー機をNTPサーバーにしてみた。
1.グループポリシー(gpedit.msc)を実行(ファイル名を指定して実行)
2.「コンピュータ」-「管理用テンプレート」-「システム」-「Windowsタイムサービス」を開く
3.タイムプロバイダ内に「NTPサーバを有効にする」という設定があるのでこれを有効にする。あとの2つも有効にする。
4.gpudate /forceにてグループポリシーを有効化させる。
さらに、拠点ADDCとセンタADDC それぞれでコマンドプロンプトから以下を実行して Proxyサーバーと時刻同期した。
拠点ADDCとセンタADDCも Windows Server 2003 である。
net time /setsntp : 192.168.1.100,0x1でNTPサーバを設定後に、
w32tm /resync で時刻同期が正しいかをテストして、Timeサービスを再起動
net stop w32tm
net start w32tm
これで、拠点ADDC、センタADDCのメンバサーバーおよびクライアントの時刻同期ができた。

戻る

サイトトップへ