使用環境
Squid Cache: Version 4.11
実現したいこと
プロキシサーバーのアクセスログからユーザーが端末を利用しているか知る方法を知りたいです。
squidの解説書※1によると、プロキシサーバーから様々なログ情報を出力させることができます。
例えばPCを起動しプロキシサーバーにつなぐと、利用者がPCを用いているか否かにかかわらずPCに電源が入っている限り様々なアクセスログが入り続けるため、単純にログの数から利用者がPCを使っている状況であるかどうかを判定することができません。
そこで、アクセスログにあるほかの情報を用いて利用者が端末を利用しているかどうかを判定できるようにしたいと考えました。
※1「Squid Proxy Server 3.1: Beginner's Guide」 web上で入手可
試したこと
Windows 11 をプロキシに接続し、squid上にアクセスログを残すようにしていました。
そしてまずは、PCを利用している時間帯と利用していない時間帯のアクセスログを見比べてみました。
(1) アクセスログの数の差
例えば5分ごとのアクセスログの差を見ると、端末を利用しているときのログの数(70-100個くらい)のほうが利用していないときのログの数(30-80個くらい)よりも多いとは感じました。しかし、端末の利用の有無でそこまで大きく変化しているわけでもなかったので、別の指標で判別した方がよいと感じました。
(2) [http::]>sh Received HTTP request headers' size. (HTTPリクエストヘッダーのサイズ)の差
これは、端末を利用していない場合でも一定数はあり、時間帯によって大きく変化する(1000~10000000byte)ことが分かりました。特に、gmailやslackなどは定期的にリクエストをやりとりしていてそのデータ転送容量がそこそこの大きさあるように感じます。端末を利用しているときは100000byte以上の値をおおむね記録していましたが、やはり端末利用を判定できるほどの精度にはならないと考えています。youtubeなどで動画を流しているときは軽く10000000byteを超えるリクエストが出現するので、そこに限定すれば判定はできるかもしれません。
考えられる別の方法
・HTTPヘッダを含む送信済み返信サイズやネクストホップから受け取ったHTTP相当のメッセージボディバイトの数などsquidからとることができる別の情報を活用する。
・slackやgmailなど定常的にリクエストを要求するものによるログを除外する。(広告系のログを含めると枚挙にいとまがないと思われる。)
・windows11の場合はPC側にログが残っておりここからPCを利用しているかどうか判定できるかもしれない(このようなOSに頼った手法だと、各々のOSで同様に端末を利用しているかどうか確認する必要があるので、どうしても手間がかかってしまう。)
特に知りたい観点やポイント
要するに人が能動的にアクセスをしたときに出てくるログと何もしなくても受動的に残されるログを何らかの方法で区別したいのですが、あまりプロキシを触ったことがないためどのように問題解決を計ればよいかわからない状況です。
随時補足させてください。
以上、よろしくお願い申し上げます。
回答1件
あなたの回答
tips
プレビュー