SquidでlocalhostからTCP_DENIEDされる
昨日インストールしたSquid3.1.23ですが、Squidが動作しているマシン自体からSquidへアクセスするとTCP_DENIEDされる現象。
# wget http://localhost:3128/hoge/fuga/reports/xxxx --2013-02-06 10:55:07-- http://localhost:3128/hoge/fuga/reports/xxxx localhost をDNSに問いあわせています... ::1, 127.0.0.1 localhost|::1|:3128 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 403 Forbidden 2013-02-06 10:55:07 エラー 403: Forbidden。
access_logには
1360115065.940 0 ::1 TCP_DENIED/403 3844 GET http://localhost:3128/hoge/fuga/reports/xxxx - NONE/- text/html
ところが、localhostを127.0.0.1に変更するとちゃんとアクセスできる。
# wget http://127.0.0.1:3128/hoge/fuga/reports/xxxx --2013-02-06 10:55:07-- http://localhost:3128/hoge/fuga/reports/xxxx 127.0.0.1:3128 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 25679 (25K) [text/html] `xxxx' に保存中 100%[======================================>] 25,679 --.-K/s 時間 0s 2013-02-06 10:57:29 (532 MB/s) - `xxxx' へ保存完了 [25679/25679]
acl localhost src 127.0.0.1/32 #RFC1918 possible internal network (中略) http_access allow localhost
なぜだ。
ちなみにですが、Squidの3.2からはlocalhostというaclがデフォルトであるのでユーザが定義する必要はありません。
それと、このsquid.confは3.1.20で動作していたものから持ってきたもの。そのときはlocalhost宛でもOKでしたが。
いろいろ試行錯誤した結果localhostのaclを以下のとおり書けばいいことが判明。
acl localhost localhost
うーむ、squid.conf中で名前解決するってことなのか。