我知道 SelfControl 应用程序,但每次都必须启动它并设置阻止时间。
例如,我想在工作时间禁止加载某些网站,但在休息时间允许加载。我想设置一次就可以忘记。它必须每天自动切换。
考虑到我是一个超级新手,有什么更简单的方法可以做到这一点?
答案1
答案2
我们将结合使用 Iptables、Bash 脚本和 Cron 来实现这一点。
iptables 目录
阻止域名的 Iptables 命令如下所示:
iptables -I INPUT -p tcp --dport 80 -m string --string "Host: yourdomain.com" --algo bm -j DROP
类似地,解除阻止命令如下:
iptables -I INPUT -p tcp --dport 80 -m string --string "Host: yourdomain.com" --algo bm -j ACCEPT
Bash 脚本
创建一个文件,例如block.sh
,在其中定义 Iptables 规则来阻止您想要阻止的域的传出连接,并定义一个反向脚本来解除对它们的阻止。
#! /usr/bin/env bash
iptables -I INPUT -p tcp --dport 80 -m string --string "Host: yourdomain.com" --algo bm -j DROP
# other stuff you want to do when you block a domain
# add blocking commands for each domain here
运行chmod +x block.sh
以使脚本可执行。现在您可以将其作为 运行/path/to/file/block.sh
。
因此,您将拥有两个类似这样的脚本:
/path/to/block.sh
/path/to/unblock.sh
克罗恩
现在,添加一个 crontab 条目来运行你的脚本,如下所示:
运行crontab-e
。第一次运行时,它会要求您配置文本编辑器。如果您不确定,请使用 nano。
将这些行添加到文件末尾:
0 9 * * * /path/to/block.sh
0 17 * * * /path/to/unblock.sh
使用 保存文件CTRL+O
,按ENTER
然后CTRL+X
按 退出。
现在,每天早上 9 点,第一个脚本将阻止所有域名,下午 5 点,第二个脚本将解除阻止。