2016年3月26日土曜日

squid+privoxyの多段プロキシ環境で、親プロキシを経由させないホワイトリスト設定をする

squidで親プロキシをわざと経由させないルールやホワイトリストを作成したい

透過プロキシにて Squid -> Privoxy を通し、Webページの広告フィルタリングとキャッシュを行うときにキャッシュしたくないURLや広告フィルタリングを通したくないページなどがあるのでどうするべきかということを試した。

PC -> デフォルトゲートウェイ -> Squid(http_port *** intercept) -> privoxy -> インターネット

上記のような環境で透過プロキシとしてSquid+Privoxyを組み合わせるときに、そのゲートウェイを使うPCからは全て一度Squidに入りますが、親プロキシであるprivoxyを経由させないホワイトリストをsquid.confにて設定する話になります。

補足になりますが、私の環境ではtcp/80のインターネットに出る通信だけをRTX1200からプロシキサーバにフォワードしているので、http以外のことは知らないしあまり深入りはしないようにしようと思っています。


また、大前提として下記を想定していますがそういう話はこれ以上省きます。

  • ゲートウェイからインターネットに出るtcp/80の通信を全てsquidにフォワードしている
  • Squidは透過モード
  • Squidが子供 ( Arch linux squid 3.5.15-2 )
  • Privoxyが親 ( Arch linux privoxy  3.0.24-2 )
  • squid.confの親プロキシ設定は下記1行のみ
cache_peer 127.0.0.1 parent 8118 7 no-query



パターン1 クライアントのIPアドレスで親プロキシを経由しない場合



  • 192.168.254.1~127までは親プロキシを経由する
  • 192.168.254.128~192.168.254.254まで親プロキシを経由しない

ということが可能になる。
ゲーム機やAmazon FireTVStick等をdhcp側でIPアドレス決め打ちするときに便利

acl noFilterSrc src 192.168.254.128-192.168.254.254
always_direct allow noFilterSrcIp
never_direct allow all

パターン2 指定ドメインにアクセスするときに親プロキシを経由しない


主にトラブル回避のためにxbox.comとかmicrosoft.comとか、
特定のドメインにアクセスするときには親プロキシであるprivoxyを経由しない。
親プロキシが今回のようにフィルタリングプロキシの場合、
privoxy側のフィルタルールを緩めたり例外するのも勿論とは思いますが:p

acl noFilterDomain dstdomain "/etc/squid/noFilterDomainList"
always_direct allow noFilterDomain
never_direct allow all

/etc/squid/noFilterDomainListの中身
# Bypass filter proxy domain List
.yahoo.co.jp
.google.com
.xbox.com
.microsoft.com
.apple.com
.steampowered.com

パターン3 指定した拡張子のファイルにアクセスするときに親プロキシを経由しない


主にprivoxy等の不可が酷くなる場合で尚且つアンチウイルスレイヤーを貼っていない場合にバイナリファイル等を拡張子で判別して親プロシキを経由しない。

acl noFilterFileExt url_regex \.(zip|exe|iso|img|7zip|rar|bin|dll|msi|bundle)$
always_direct allow noFilterFileExt
never_direct allow all

上記3パターンを全て混合する場合は下記のような記述になります。

acl noFilterSrcIp src 192.168.254.128-192.168.254.254
acl noFilterFileExt url_regex \.(zip|exe|iso|img|7zip|rar|bin|dll|msi|bundle)$
acl noFilterDomain dstdomain "/etc/squid/noFilterDomainList.txt"
cache_peer 127.0.0.1 parent 8118 7 no-query
always_direct allow noFilterSrcIp
always_direct allow noFilterFileExt
always_direct allow noFilterDomain
never_direct allow all

(2016年11月21日 勘違いしている箇所もあったので修正及び追記)

0 件のコメント:

コメントを投稿