iptables 目录

iptables 目录

我知道 SelfControl 应用程序,但每次都必须启动它并设置阻止时间。

例如,我想在工作时间禁止加载某些网站,但在休息时间允许加载。我想设置一次就可以忘记。它必须每天自动切换。

考虑到我是一个超级新手,有什么更简单的方法可以做到这一点?

答案1

我建议你看看类似 Dansguardian 的东西:

http://dansguardian.org/

文档非常好,并且有一些基于时间的浏览限制的资源。

答案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

因此,您将拥有两个类似这样的脚本:

  1. /path/to/block.sh
  2. /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 点,第二个脚本将解除阻止。

相关内容