プロキシサーバーをたててURLフィルタリングしてみたよ
ついつい見ちゃう2ちゃんまとめ、Youtube
を見れないようにしてやる!
やることを明確化し、分解して進めば何だってできる。トライ!トライ!
目的を達成するには
ゲートウェイで各Webサーバへのリクエスト?みたいなのをぶった切ればいいのでは?
どうやる?(初日2時間)
まずググる、squidでProxyサーバをたてると、設定すれば簡単にできるみたいだ。
んが、僕にはできなかったよ。。。はやくも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
テレビもねぇ、まとめもねぇ。。。しかし、本がある!!そんな生活をトライ、トライ。
参考サイト
- http://www.asi.co.jp/techinfo/unix/nat.html
- http://ja.wikipedia.org/wiki/ネットワークアドレス変換
- http://www.kozupon.com/squid/squid1.html
- http://www.atmarkit.co.jp/flinux/rensai/iptables02/iptables02a.html
- http://www.visolve.com/squid/squid30/contents.php
参考本
- Head First ネットワーク
Head Firstネットワーク ―頭とからだで覚えるネットワークの基本
- 作者: Al Anderson,Ryan Benedetti,木下哲也
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/02/27
- メディア: 大型本
- 購入: 4人 クリック: 58回
- この商品を含むブログ (9件) を見る
- ネットワークはなぜつながるのか
ネットワークはなぜつながるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識
- 作者: 戸根勤,日経NETWORK
- 出版社/メーカー: 日経BP社
- 発売日: 2007/04/12
- メディア: 単行本(ソフトカバー)
- 購入: 31人 クリック: 366回
- この商品を含むブログ (94件) を見る
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