阻塞堆栈交换

Anm*_*ggi 2 networking linux domain blocking hosts-file

我想阻止 stackexchange 网络上的每个网站(因为我经常在这些网站上浪费大量时间)。我该怎么做?

一种解决方案显然是在主机文件中手动写入所有站点的条目,但有更好的解决方案吗?

请注意,仅阻止正则表达式是*.stackexchange.com行不通的,因为许多网站都有唯一的名称,例如superuseraskubuntu

我正在使用 Ubuntu 16.04。

编辑:

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

请在评论中写下被否决的原因,以便我采取行动!

cyb*_*ard 7

首先,顺便说一句,在 stackexchange 上花时间几乎不会浪费时间。要么你得到你提出的问题的答案,要么帮助其他用户。我认识的任何人都认为无论是教育自己还是帮助你的男人/女人都不会浪费时间。

其次,121的声望,我怀疑你在这里花了一个派系的时间,我的声望是5000而且还在增加。

Whois 揭示了这一点,所以阻止这个范围,你就不会得到它。如果您的防火墙支持 CIDR 表示法,下面的一行将阻止它。

NetRange:       151.101.0.0 - 151.101.255.255
CIDR:           151.101.0.0/16
Run Code Online (Sandbox Code Playgroud)

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

iptables -I OUTPUT 1 -d 151.101.0.0/16 -j DROP
Run Code Online (Sandbox Code Playgroud)

您必须保存 iptables 配置,否则当您重新启动时它会丢失。我不知道 Ubuntu 是否有一个自动工具。

iptables-save ><somewhere>/iptables.save
iptables-restore <<somewhere>/iptables.save
Run Code Online (Sandbox Code Playgroud)

如果使用 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
Run Code Online (Sandbox Code Playgroud)

然后systemctl 启用 iptables