やりたいこと
squidを通ってwebサーバーにアクセスする。
squidのインストール
[root@proxy ~]# yum install -y squid
squidの設定ファイルの編集
acl client2 src 192.168.56.108 ★ACLの設定
http_access allow client2 ★クライアント2を許可する
squidの再起動をする
[root@proxy ~]# systemctl restart squid
webブラウザでプロキシを使うように設定
firefoxで設定→インターネット接続から手動でプロキシーを設定するを選択。
プロキシのIPアドレスとポートを入力
クライアント2からwebサーバーに接続してみる
プロキシをちゃんと通って接続できているかログ確認する。
1688543426.843 11 192.168.56.108 TCP_MISS/200 405 GET http://web.linux.com/ - HIER_DIRECT/192.168.56.105 text/html
ステータスコード200なので無事にGETリクエストが完了していることを確認。
TCP_MISSはプロキシにキャッシュがないということなので通信が失敗しているといことではないです。
WEBサーバー側でもログを確認する
192.168.56.110 - - [05/Jul/2023:16:50:26 +0900] "GET / HTTP/1.1" 200 15 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0"
ちゃんとステータスコード200になっていることを確認
アクセスを拒否してみる
- http_access allow client2
+ http_access deny client2 ★denyに変更する
squidの再起動をする
[root@proxy ~]# systemctl restart squid
webサーバーに接続してみる
squidのログを確認する
1688544275.006 0 192.168.56.108 TCP_DENIED/403 4297 GET http://web.linux.com/ - HIER_NONE/- text/html
squidで通信を拒否しているためWEBサーバーにはログはありません。
キャッシュを利用してみる
cache_dir ufs /var/spool/squid 100 16 256 ★#を消す
ディレクトリをキャッシュディレクトリとして使用し、そのサイズを100MBに設定し、最大16の第一レベルのサブディレクトリと、それぞれの第一レベルのサブディレクトリあたり最大256の第二レベルのサブディレクトリを作成することを指示しています。
1688546677.909 0 192.168.56.108 TCP_INM_HIT/304 304 GET http://web.linux.com/ - HIER_NONE/- text/html
TCP_INM_HITとなっているのでキャッシュを返されていることが分かります。
2つ目の項目が0となっていてこれはリクエストが完了するまでの時間です。
0となっているので即座にリクエストが完了していることが分かります。
また、HIER_NONE/-となっているためローカルキャッシュから取得されています。
-は、取得元のサーバーが存在しないことを示します。
初めてアクセスしたときのログと比較してみましょう
初めてアクセス
1688543426.843 11 192.168.56.108 TCP_MISS/200 405 GET http://web.linux.com/ - HIER_DIRECT/192.168.56.105 text/html
キャッシュを返してる
1688546677.909 0 192.168.56.108 TCP_INM_HIT/304 304 GET http://web.linux.com/ - HIER_NONE/- text/html
初めてアクセスしているときは2つ目の項目が11になっています。
HIER_DIRECT/192.168.56.105となっているので192.168.56.105にデータを取りに行っていることが分かります。