Linux, 工作, 生活, 家人

Linux, Network

[Linux] 限制時間上 Facebook

Facebook 花去太多時間, 所以在 Linux 上加了一條 Rule 限制自己

時間模組是用 iptables 的 time , 寫起來像是這樣

iptables -N limit_fb => 新增一個新個 Rule 叫 limit_fb
iptables -A OUTPUT -p tcp -m tcp -m time --kerneltz --timestart 22:00 --timestop 18:00 --dport 443 -j limit_fb

--timestart 是開始時間
--timestop 是結束時間
--kerneltz 是使用本地時間, 不設預設用 UTC 

因為 Facebook 都是用 https , 所以沒有很好的方式可以過濾 url
所以我選擇用 IP/RANGE 的方式阻擋.
Facebook 的所有 IP 位置可以從 AS 取得
用一個簡單的指令就可以取得

$ whois -h whois.radb.net ‘!gAS32934

將所有的 IP 加到 Rule tables 內

FBAS=`whois -h whois.radb.net ‘!gAS32934’ | tail -n 2 | head -n 1`
for i in $FBAS; do
$iptables -I limit_fb -d $i -j DROP
done

效果還不錯

最近又接上 IPv6 了, 如果要取得 Facebook IPv6 的範圍, 可以用這個指令

FBAS=`whois -h whois.radb.net — ‘-i origin AS32934’ | grep route6 | awk ‘{print $2}’`
for i in $FBAS; do
$ip6tables -I limit_fb -d $i -j DROP
done

ref.
Get all IP ranges from an AS number
Whois at the CLI: get all IP ranges from an AS number

懶得加一篇文章了

最近要限制小孩看電視,找出電視的 IP ,下這個指令

iptables -A FORWARD -p tcp -s 192.168.1.163 -m state --state NEW,ESTABLISHED -m time --timestart 06:00 --timestop 18:00  --weekdays Mon,Tue,Wed,Thu,Fri --kerneltz -j REJECT

比起限制 Facebook 的指令,這邊多了 weekdays ,只限制星期一到星期五的晚上六點之前,六點之後因為在家就可以直接限制了

發佈留言