前提・実現したいこと
AWSのプライベートサブネットにELB(CLB)を置き、その配下で複数のプロキシサーバとしてSquidを稼働させています。
Squidのアクセスログに、ユーザーのIPアドレスが記録されるようにしたいです。
発生している問題
ELBを経由するため、アクセスログに記載されるIPアドレスはELBのIPアドレスが記載されてしまいます。
※アクセスログに問題があるだけで、Squidを経由した接続自体はできています。
試したこと
- /etc/squid/squid.confに下記の設定を追記
logformat combined %{X-Forwarded-For}>h (%>a) %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh access_log /var/log/squid/access.log combined
試したことの結果
- Squidサーバ自身から、X-Forwarded-Forヘッダを付与して、自分自身にcurlを実行
> 意図した通り、X-Forwarded-Forヘッダが取得できている
# curl -H 'X-Forwarded-For:192.168.0.1' --verbose https://www.google.com -x http://127.0.0.1:8080 > /dev/null ---(アクセスログ)--- 192.168.0.1 (127.0.0.1) - - [01/Jul/2019:02:17:16 +0000] "CONNECT www.google.com:443 HTTP/1.1" 200 16257 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2" TCP_MISS:DIRECT
- Squidサーバ自身から、X-Forwarded-Forヘッダを付与して、ELBにcurlを実行
> X-Forwarded-Forヘッダが取得できない
# curl --verbose https://www.google.com -x http://squid-elb-XXXXXXXXX.ap-northeast-1.elb.amazonaws.com:8080 > /dev/null ---(アクセスログ)--- - (172.30.0.209) - - [01/Jul/2019:02:18:17 +0000] "CONNECT www.google.com:443 HTTP/1.1" 200 16257 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2" TCP_MISS:DIRECT
- Squidサーバとは別のサーバから、X-Forwarded-Forヘッダを付与して、Squidサーバに直接curlを実行
> X-Forwarded-Forヘッダが取得できない
$ curl -H 'X-Forwarded-For:192.168.0.2' --verbose https://www.google.com -x http://X.Y.Z.1:8080 > /dev/null ---(アクセスログ)--- - (x.y.z.100) - - [01/Jul/2019:04:06:32 +0000] "CONNECT www.google.com:443 HTTP/1.1" 200 16102 "-" "curl/7.52.1" TCP_MISS:DIRECT
補足情報
- SquidサーバのOSはCentOS 6.5を使用
- Squid自体はyumでsquid-3.1.23をインストール
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/01 08:38 編集
2019/07/02 00:16 編集