
自分のマシンで Facebook をブロックしてみたいと思います。
/etc/hostsを使い始めましたが、これではすべてのサブドメインを捕捉できないので、調べてみたところ、これ(そして多くの同様の解決策)は、この声明につながる。
/usr/bin/whois -h whois.radb.net '!gAS32934' | head -n -1 | tail -n -1 | /usr/bin/xargs --max-args=1 | /usr/bin/xargs -I {} --max-args=1 iptables -A OUTPUT -d {} -j REJECT
[編集] ここで私がやっていることは、まず
whois -h whois.radb.net '!gAS32934'
facebookに登録されたすべてのIP範囲を取得するには、この記事次に、結果の先頭と末尾にある不要な文字を削除するトリミングを行います。これにより、スペースで区切られた IP 範囲のリストが得られます。次に、xarg を使用してこれらの IP 範囲を分割し、各 IP 範囲に対して次のようなステートメントを作成します。
iptables -A OUTPUT -d {} -j REJECT
ここで、{}
は実際の範囲に置き換えられます。ではREJECT
なく を使用します。1 DROP
. はるかに高速であるためです。2. 実際には接続を禁止したいので、これが適切であると思われます。[/edit]
今試すping facebook.com
と
From myname (xxx.xxx.xxx.xxx) icmp_seq=1 Destination Port Unreachable
これはまさに私が期待していたことです。しかし、ブラウザ (Firefox) を使用して facebook.com を開くと、サイトは開きますが、これは私が期待していたことではありません。ブラウザ キャッシュの問題を排除するために、以前に試したことのない別の Facebook ドメイン (facebook.de) を再読み込みして開いてみましたが、役に立ちませんでした。
DROP
の代わりに をよく見かけるのでREJECT
、それも試してみましたが、結果は変わりませんでした。
ここでの疑問は、対応する IP がブロックされているのに、なぜブラウザは Web ページを読み込むことができるのかということです。ping がブロックされているのに、ブラウザはどうやって通過できるのでしょうか。何かが足りないのは明らかですが、それが何なのかはわかりません。
答え1
ホスト IP を取得:
host -t a facebook.com
CIDRを探す
whois 173.252.120.68 | grep CIDR
サブネットをブロックする
iptables -A OUTPUT -p tcp -d 173.252.120.68/18 -j DROP
ドメインをブロックします:
iptables -A OUTPUT -p tcp -d www.fаcebook.com -j DROP
iptables -A OUTPUT -p tcp -d fаcebook.com -j DROP