squidは普通Linuxで利用するソフトだと思いますが、、自分はWindowsで利用しています。理由は察してください。
Windowsで利用している人は少ないようで、チューニングやちょっとした運用方法方法を忘れないように記載します。インストール方法は気が向いたら書きますが、そんなに難しくないのでチャレンジしてみてください。
まずは自分が使っているsquid for windows 設定ファイル
# # Recommended minimum configuration: ## Example rule allowing access from your local networks. # Adapt to list your (internal) IP networks from where browsing # should be allowedacl localnet src 10.0.0.0/8 # RFC1918 possible internal network acl localnet src 172.16.0.0/12 # RFC1918 possible internal network acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl localnet src fc00::/7 # RFC 4193 local private network range acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines acl SSL_ports port 443 # # Only allow cachemgr access from localhost # Deny requests to certain unsafe ports # Deny CONNECT to other than secure SSL ports # We strongly recommend the following be uncommented to protect innocent # # Example rule allowing access from your local networks. # And finally deny all other access to this proxy # Squid normally listens to port 3128 # Uncomment the line below to enable disk caching – path format is /cygdrive/, i.e. # Leave coredumps in the first cache dir # Add any of your own refresh_pattern entries above these. #hostsファイルの参照を有効化 dns_nameservers 9.9.9.9 208.67.222.123 max_filedescriptors 3200 #2018/12/21 追記 |
自分は「パブリックDNS Quad9」と「Open DNS」を設定して、DNSレベルで悪性と判定されるサイトには接続できないようにしています。それでも、たまに「Windowsが壊れてます広告」サイトに接続出来てしまうけど。
あと、Windowsでも必ずcacheは設定してください。自分が管理している仮想サーバでは、設定しないときにはCPUパワーが50%くらい使っていましたが、設定すると5%に落ちました。
上記設定で問題ないかどうか、設定確認を行います。
#設定確認 D:\Squid>Squid.exe -k parse 2018/12/20 13:41:23| Startup: Initializing Authentication Schemes … 2018/12/20 13:41:23| Startup: Initialized Authentication Scheme ‘basic’ 2018/12/20 13:41:23| Startup: Initialized Authentication Scheme ‘digest’ 2018/12/20 13:41:23| Startup: Initialized Authentication Scheme ‘negotiate’ 2018/12/20 13:41:23| Startup: Initialized Authentication Scheme ‘ntlm’ 2018/12/20 13:41:23| Startup: Initialized Authentication. 2018/12/20 13:41:23| Processing Configuration File: /etc/squid/squid.conf (depth 0) 2018/12/20 13:41:23| Processing: acl localnet src 10.0.0.0/8 # RFC1918 possib le internal network 2018/12/20 13:41:23| Processing: acl localnet src 172.16.0.0/12 # RFC1918 possib le internal network 2018/12/20 13:41:23| Processing: acl localnet src 192.168.0.0/16 # RFC191 8 possible internal network 2018/12/20 13:41:23| Processing: acl localnet src fc00::/7 # RFC 4193 loca l private network range 2018/12/20 13:41:23| Processing: acl localnet src fe80::/10 # RFC 4291 link -local (directly plugged) machines 2018/12/20 13:41:23| Processing: acl SSL_ports port 443 2018/12/20 13:41:23| Processing: acl Safe_ports port 80 # http 2018/12/20 13:41:23| Processing: acl Safe_ports port 21 # ftp 2018/12/20 13:41:23| Processing: acl Safe_ports port 443 # https 2018/12/20 13:41:23| Processing: acl Safe_ports port 70 # gopher 2018/12/20 13:41:23| Processing: acl Safe_ports port 210 # wais 2018/12/20 13:41:23| Processing: acl Safe_ports port 1025-65535 # unregistered p orts 2018/12/20 13:41:23| Processing: acl Safe_ports port 280 # http-m gmt 2018/12/20 13:41:23| Processing: acl Safe_ports port 488 # gss-ht tp 2018/12/20 13:41:23| Processing: acl Safe_ports port 591 # filema ker 2018/12/20 13:41:23| Processing: acl Safe_ports port 777 # multil ing http 2018/12/20 13:41:23| Processing: acl CONNECT method CONNECT 2018/12/20 13:41:23| Processing: http_access allow localhost manager 2018/12/20 13:41:23| Processing: http_access deny manager 2018/12/20 13:41:23| Processing: http_access deny !Safe_ports 2018/12/20 13:41:23| Processing: http_access deny CONNECT !SSL_ports 2018/12/20 13:41:23| Processing: http_access allow localnet 2018/12/20 13:41:23| Processing: http_access allow localhost 2018/12/20 13:41:23| Processing: http_access deny all 2018/12/20 13:41:23| Processing: http_port 8080 2018/12/20 13:41:23| Processing: coredump_dir /var/cache/squid 2018/12/20 13:41:23| Processing: refresh_pattern ^ftp: 1440 20%100802018/12/20 13:41:23| Processing: refresh_pattern ^gopher: 1440 0%1440 2018/12/20 13:41:23| Processing: refresh_pattern -i (/cgi-bin/|\?) 0 0%0 2018/12/20 13:41:23| Processing: refresh_pattern . 0 20%4320 2018/12/20 13:41:23| Processing: hosts_file C:\Windows\System32\drivers\etc\host s 2018/12/20 13:41:23| Processing: dns_nameservers 9.9.9.9 208.67.222.123 2018/12/20 13:41:23| Processing: max_filedescriptors 3200 2018/12/20 13:41:23| Processing: cache_mem 64 MB 2018/12/20 13:41:23| Processing: cache_dir aufs D:\Squid\var\cache\squid 400 64 1024 2018/12/20 13:41:23| Initializing https proxy context D:\Squid> |
問題ないのでキャッシュを作成します。作成前には必ずsquidを停止する必要があります。
キャッシュを作成する D:\Squid>Squid.exe -z |
キャッシュ作成はサービス停止中にコマンド実行されたら自動で行われます。自分はキャッシュ作成時は大体30秒程度待ってます。作成されたらコマンドプロンプトからサービスを起動しましょう。(サービス一覧からの起動でも問題ない)
#コマンドプロンプトから起動する場合 net start squidsrv#コマンドプロンプトから終了する場合 net stop squidsrv |
起動したら情報を確認します。ポート番号を変更しているので「-pオプション」を使用します。
D:\Squid>bin\squidclient.exe -p 8080 mgr:info HTTP/1.1 200 OK Server: squid/3.5.19 Mime-Version: 1.0 Date: Thu, 20 Dec 2018 04:38:18 GMT Content-Type: text/plain;charset=utf-8 Expires: Thu, 20 Dec 2018 04:38:18 GMT Last-Modified: Thu, 20 Dec 2018 04:38:18 GMT X-Cache: MISS from squid Via: 1.1 squid (squid/3.5.19) Connection: close Squid Object Cache: Version 3.5.19 D:\Squid> |
問題なければ、これで終わりです。
ちなみに・・・・自分が利用しているバージョンではプロキシサーバに「127.0.0.1」を投げるとサービスが応答しない状態になります。(他のバージョンでは検証してないのでわかりません)
D:\Squid>bin\squidclient.exe -p 8080 mgr:info
ERROR: Cannot connect to [::1]:8080
よって5分に1回サービス確認バッチをタスクスケジューラより実行して、停止したら再起動を行うようにしてます。
#サービスがこけた時に再起動するためのバッチ(squid_srv.bat) @echo off set LOGFILE=C:\bat\squid_srv.log D:\Squid\bin\squidclient.exe -p 8080 mgr:info :NG :OK |
上記バッチはある方が良いけど、やっぱり暫定対処だと考えてます。なので127.0.0.1パケットを発信しているPCを見かけたら
「localhost/127.0.0.1」を例外に設定し、squidの停止原因にならないように変更を行ってます。
あと、ログローテーションは下記バッチを実行することで対応できます。引数を入れたらPAUSEが利かないようになってます。タスクスケジューラから実行するときは引数をなにか設定(例えば1など)してポーズが聞かないようにしてください。
#1日1回実行してsquidログローテーションする(squid_log.bat) d: cd D:\Squid\bin squid -n squidsrv -k rotate IF “%1” EQU “” ( |
サービスを1日1回再起動するなら下記バッチを実行すればよいです。(原因が判明してからは利用してない)
#1日1回再起動バッチ(squid_reboot.bat) net stop squidsrv D:\Squid\bin\Squid.exe -z timeout 60 net start squidsrv IF “%1” EQU “” ( |
これで安定してくれればうれしいなぁ。。。。
こんにちは、参考にさせて頂きsquidを設定してみました。
ただ、一点どうやっても上手くいかない部分があります。
cache_dir aufs D:\Squid\var\cache\squid 60000 64 1024
上記のようにキャッシュ部分を設定すると、squidclient mgr:info実行時に
ERROR: Cannot connect to 127.0.0.1:3128
とエラーが発生して、接続する事が出来なくなってしまいます。
cache_dir部分をコメントにすると正常に動作するのですが、何か設定に不備があるのでしょうか?
判る範囲で結構ですのでご教示の程宜しくお願い致します。
tomさん コメントありがとうございます。
ディレクトリがないと失敗します。コマンド:Squid.exe -z を実行すると設定ファイル上に記述されている[D:\Squid\var\cache\squid]にディレクトリが作成されます。
作成されない場合は
・windowsのディレクトリ権限の見直し
・そもそも理論的にディスクがないのでCドライブなどを指定する
というように、切り分けが必要になります。
コマンド実行毎に再作成しますし、フォルダの作成はたくさんのサブフォルダを作成しているようで30-1分程度の時間を空けないとサービス起動に失敗しました。
上記が正しいのならば、エラーログの確認が必要です。cache.logがあると思いますので内容を確認してください。