阻止 stackexchange

阻止 stackexchange

我想屏蔽 stackexchange 网络上的所有网站(因为我经常在这些网站上浪费大量时间)。我该怎么做?

一个解决方案显然是在 hosts 文件中手动写入所有站点的条目,但是有没有更好的解决方案呢?

请注意,仅在正则表达式上进行阻止*.stackexchange.com是行不通的,因为很多网站都有像superuser和这样的唯一名称askubuntu

我正在使用 Ubuntu 16.04。

编辑:

我在这里发布这个问题不是为了学习自我控制,而是因为我真的很好奇它的技术可行性。

请在评论中写下反对的原因,以便我采取行动!

答案1

首先,顺便说一句,花时间在 stackexchange 上绝对不算浪费时间。你要么得到问题的答案,要么帮助其他用户。据我所知,无论是自我教育还是帮助其他用户,都不算浪费时间。

其次,凭借着 121 的声誉,我怀疑您是否像我一样花费了如此多的时间,而我的声誉已经达到 5000 并且还在增加。

Whois 会显示这一点,因此请阻止此范围,否则您将无法获取它。如果您的防火墙支持 CIDR 表示法,则下面的一行将阻止所有内容。

NetRange:       151.101.0.0 - 151.101.255.255
CIDR:           151.101.0.0/16

阻止访问此 IP 范围的命令:

iptables -I OUTPUT 1 -d 151.101.0.0/16 -j DROP

您必须保存 iptables 配置,否则重新启动时它将丢失。我不知道 Ubuntu 是否有自动功能。

iptables-save ><somewhere>/iptables.save
iptables-restore <<somewhere>/iptables.save

如果使用 systemd,请在 /etc/systemd/system/ 中创建一个名为 iptables.service 的文件

[Unit]
Description=IPtables load rules
DefaultDependencies=no
After=ipset.service network-pre.target
Before=network-online.target network.target

[Service]
Type=oneshot
ExecStartPre=-/bin/echo 'Starting iptables'
ExecStart=/usr/sbin/iptables-restore <somewhere>/iptables.save
ExecReload=/usr/sbin/iptables-restore <somewhere>/iptables.save
ExecStop=/usr/lib/systemd/scripts/iptables -flush
RemainAfterExit=yes
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_RAW

[Install]
WantedBy=basic.target

然后systemctl 启用 iptables

答案2

作为一种更温和的解决方案,您可以轻松配置仅在有限的时间内阻止 stackexchange 网站,您可以考虑使用 Chrome 扩展程序专注

相关内容