ポジローぽけっと

昨日より今日、今日より明日を信じて、トライトライ

プロキシサーバーをたててURLフィルタリングしてみたよ

ついつい見ちゃう2ちゃんまとめ、Youtube

を見れないようにしてやる!

やることを明確化し、分解して進めば何だってできる。トライ!トライ!

目的を達成するには

ゲートウェイで各Webサーバへのリクエスト?みたいなのをぶった切ればいいのでは?

どうやる?(初日2時間)

まずググるsquidProxyサーバをたてると、設定すれば簡単にできるみたいだ。

んが、僕にはできなかったよ。。。はやくもorz

理屈を理解しないでやるからだよ。

ですよねー。

目的を達成するのはいいけれど再現性が無いのはよくないよ。

ってか目的も達成できてねーよ!バーカ

再考(2日目6時間)

Proxyサーバには2つあることが分かる。

  • リバースProxy
  • 透過Proxy

正しい理解かは別として、感覚的には、 クライアントが意図的にProxyサーバ使用したい(cacheの利用?)場合、はリバースProxyの方式をとりブラウザでProxyサーバを設定する。 管理者がクライアントにProxyサーバを必ず経由させたい場合は透過Proxyの方式をとる。

ゲートウェイでぶった切るならブラウザ設定なんかいらないはずだという想像の下、透過Proxyをさらに調査。

結論

Webサーバのポート80番へのリクエストのパケットをsquidの3128番ポートへ流しこんで、フィルタリング機能でDROPしてもらえばよい。そのためには、iptablesに以下を追加する。

iptables -t nat -A PREROUTING -i lan -p tcp --dport 80 -j REDIRECT --to-port 3128

「lan(←インタフェースによりeth0等)からのinputでdestinationポートが80のパケットを(squidの)3128のポートにjump リダイレクトしてくれ」と設定する。うひょー、いけそう。

立ちはだかる/etc/squid/squid.conf

/var/log/squid/access.logを見るとsquidはパケット受けてる。squidをstopすればネットサーフィンもできない。いいね、squidは機能してるぞ。

でも、フィルタリングがうまくいかない。なんで?

設定の意味が理解できん。。最終行に

http_access deny all

なんて書いたら、結局その上段までの設定が無意味じゃないか!、、、と思っていた時期がありました。

And, finally, don't forget rules are read from top to bottom. The first rule matched will be used. Other rules won't be applied.

from http://www.visolve.com/squid/squid30/contents.php

なるほどね!!グッバイ ハム速/暇速/ネギ速/ホライゾーン/Youtube

テレビもねぇ、まとめもねぇ。。。しかし、本がある!!そんな生活をトライ、トライ。

参考サイト

  1. http://www.asi.co.jp/techinfo/unix/nat.html
  2. http://ja.wikipedia.org/wiki/ネットワークアドレス変換
  3. http://www.kozupon.com/squid/squid1.html
  4. http://www.atmarkit.co.jp/flinux/rensai/iptables02/iptables02a.html
  5. http://www.visolve.com/squid/squid30/contents.php

参考本

NOTE

  • NAT(Network Address Translation):プライベートアドレスとグローバルアドレスを一対一で変換する。
  • IPマスカレード(Masquarade):複数のプライベートアドレスを1つのグローバルアドレスに変換する。変換時になくなるプライベードアドレスの情報はポート番号に対応させる。NAPT(Network Address and Port Translation)のLinux上での実装名からIPマスカレードと呼ばれる。マスカレードは「noun:仮面舞踏会 verb:ふりをする、他人になりすます」という意味。

 iptables -t nat -A POSTROUTING -o ppp+ -j MASQUERADE

「tableはnatで、natのPOSTROUTINGでppp+へのoutはjump MASQUERADE(グローバルアドレスになりすま)してくれ」ということ。

  • -t=--table filter, nat, mangleを指定。 指定しない場合defaultでfilterが選択される.
  • -A=--append -tで指定したtableごとにappendする(加える)chainの種類が異なる
  • -o=--out-interface 
  • -j=--jamp