如何屏蔽臉書

如何屏蔽臉書

我想嘗試在我的機器上封鎖 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, 不是DROP因為 1.它快得多 2.因為我實際上想禁止連接,這對我來說似乎是正確的。 [/編輯]

現在如果我嘗試ping facebook.com我得到

From myname (xxx.xxx.xxx.xxx) icmp_seq=1 Destination Port Unreachable

這正是我所期望的。但是,如果我使用瀏覽器(Firefox)打開 facebook.com,該網站仍然會打開,這不是我所期望的。我嘗試重新載入並開啟另一個我以前從未嘗試過的 Facebook 網域 (facebook.de),以排除瀏覽器快取的問題,但這並沒有幫助。

因為我經常看到DROP而不是REJECT我也嘗試過,但這並沒有改變結果。

現在的問題是,如果對應的ip被屏蔽了,為什麼瀏覽器還能載入網頁呢?如果 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

相關內容