複数のグローバルIPが設定されているサーバで、Squid経由でインターネットにアクセスするIPを切り替える方法をこちらで紹介しました。その設定をするときに注意しないと、IPが分散しない症状が出る時があります。また、ログの設定を変更しておくことで、より確実にIP切り替えの仕組みを運用できると思います。
Squidのバージョンは3.1.23を利用しています。
■短い間隔でアクセスすると、キャッシュが残りIPが切り替わらない
短い間隔で連続アクセスをすると、IPが切り替わらないことがあります。どうも、デフォルトの設定だと同じドメインに対して短い間隔で連続アクセスした時にキャッシュというか、接続を使い回すみたいなのです。この現象を回避するために以下の設定が必要となります。
client_persistent_connections off
server_persistent_connections off
上記の2つの設定を追加することで、接続の使い回しがされません。確実にIPを切り替えることが可能です。
■ログに【どのIPで出て行ったか】記録しておく
通常のsquidのログだと、結局どのIPで出て行ったのかログに記録されません。そこで、以下の設定をすることで、結局どのIPでインターネットにアクセスしたかわかるようになります。
logformat combined %>a %<la %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を経由してアクセスしているのがわかってしまいます。そこで、以下の設定を書くことで、ヘッダ情報を調整することができます。
visible_hostname none
via off
forwarded_for delete
reply_header_access X-Cache-Lookup deny all
request_header_access X-FORWARDED-FOR deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
request_header_access Referer deny all
このくらい設定しておけば、だいたいIP分散用のSquidの設定は大丈夫かと思います。ぜひ、参考にしてみてください。