やりたいこと
・機能検証のためプロキシ経由の動作確認をしたい
・そのため何かしらてきとうなプロキシサーバーを用意したい
・ついでにBASIC認証も確認した
注意
・機能開発などの検証用なのでIP絞ったり厳しさはない
・フォワードプロキシのみ
・実運用のためならもっといろいろ必要
設定手順
1. インストールするSquidを用意する
公式サイトはここらしい?
で、ダウンロードしようと辿っていくと、ここから落とせるっぽい
MSI形式でダウンロードしておく
「Web Proxy for Windows」ではなく、
「Squid for Windows」からでないといけない(1敗)
2. AWS EC2を立ち上げる
検証用なのでメモリもドライブ容量も小さくていい
手持ちにある適当なストレージが小さいAMIをt2.mediumで起動
3. インスタンス内にSquidをインストールする
ライセンス同意をして、後続はデフォルトのままインストール
Windowsサービスに「Squid for Windows」という名前で登録される
デフォルトでインストールしているならば「C:\Squid」以下に色々入ってる
4. 一旦プロキシサーバーの完成
完走した感想ですが、特に絞りもしないならインストールするだけで簡単
ポート番号はデフォルト「3128」なので、そこに投げればよい
「プロキシを通す」ことの確認だけであればこれで事足りる
5. お好みでSquidの設定変更をする
設定はC:\Squid\etc\squid\squid.conf
を変更すればOK
squid.confを変更後、登録しているサービスを再起動しないと反映されない
ポート番号を変更する
デフォルトのポート番号は「3128」
http_port
の項目を変更すれば好きなポート番号にできる
デフォルトでのログ類の出力先
C:\Squid\var\log\squid
以下に出力される
「cache」はサービス自体の起動ログなど、
「access」はSquidを経由した通信ログが表示される
専用のキャッシュフォルダを用意する
いろんなサイトを参考にするとよく作られている
初期ではsquid.confの下の方で
#cache_dir aufs /cygdrive/d/squid/cache 3000 16 256
と、作成先はD:¥squid\cache
だが、コメントアウトされている
cache_dir aufs /cygdrive/c/squid/cache 3000 16 256
とすれば、インストールしているC:\Squid
以下に吐き出せるらしい
自力でフォルダを作成できなさそうなのでcacheフォルダを作ってあげる
が、してみたけど出てこなかった
6. proxy接続時に認証情報を必要にする
squid.confの書き換えとBASIC認証用ファイルの作成が必要
squid.confの書き換え
・http_access allow localnet
をコメントアウトする
・以下を# Recommended minimum Access Permission configuration:
の上くらいに追記する
auth_param basic program c:/Squid/lib/squid/basic_ncsa_auth.exe c:/Squid/etc/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication!
auth_param basic credentialsttl 5 hours
auth_param basic casesensitive off
acl auth proxy_auth REQUIRED
http_access allow auth
参考サイト
BASIC認証用のファイル作成
パスワード用ファイルを作成するにはApacheなどが必要
ということで以下サイトからApacheを落としてきた
解凍してhttpd-2.4.63-250207-win64-VS17\Apache24\bin\htpasswd.exe
を使う
コマンドプロンプトからbinフォルダをカレントディレクトリにして
htpasswd -c [ファイル名] [ユーザー名]
と実行。するとパスワードを2回聞かれるのでそれぞれ入力すると、指定した[ファイル名]のパスワードファイルが作成される
今回は「passwd」というファイル名で作成してc:/Squid/etc
に配置する
ファイルの中身は
ユーザー名:hash化されたパスワード
の形式なので、hash化ができれば手でも作れるはず
参考サイト
BASIC認証エラーの解消
Squidを再起動したところ、ログに大量にエラーが吐かれ続けた
C:/Squid/lib/squid/basic_ncsa_auth.exe: error while loading shared libraries: cygcrypt-2.dll: cannot open shared object file: No such file or directory
と出ており、cygcrypt-2.dllが足りないらしい
を参考にして、cygcrypto-2.dllを手動でC:\Squid\lib\squid
に配置することで該当のエラーログは吐かれなくなった
basic_ncsa_auth.exeが起動しないログ
helperOpenServers: No 'basic_ncsa_auth.exe' processes needed.
とログに出ており、BASIC認証に必要なexeが起動してくれなさそうなエラーが出ている
のだが、BASIC認証はできるようなので無視して構わなさそう
7. BASIC認証プロキシサーバーの完成
以上で、接続時にID/PASSを求められるようになる