![宿主文件](https://linux22.com/image/1028698/%E5%AE%BF%E4%B8%BB%E6%96%87%E4%BB%B6.png)
我正在尝试远程屏蔽我 ubuntu 电脑上的网站,以帮助解决拖延问题。因此,我可以在 ubuntu 和智能手机(或辅助 Windows PC)上安装一个程序,当我在智能手机上运行它时,它会阻止访问 ubuntu 上的某些网站,理想情况下是所有浏览器上的网站。类似于 Qustodio 为 Windows 所做的,或远程 leechblock。
我没有太多纪律问题或技术知识,所以不需要某种难以绕过的系统。如果我可以从辅助设备打开和关闭它,并且需要经历一些小麻烦才能在 ubuntu 上禁用它,例如卸载它或需要查找密码或技术知识,那就足够了。我不是一个人住,所以我不能在整个网络上屏蔽网站。
谢谢!
答案1
宿主文件
我们要做的基本上是复制您的原件,/etc/hosts.conf
然后编辑它并让所有麻烦的网站(例如 Facebook)指向您自己的计算机(127.0.0.1),以便加载这些网站失败(除非您正在运行自己的网络服务器)。
块文件
创建以下文件并调用它/etc/hosts.bob.block
(尽管确切的名称并不重要):
127.0.0.1 localhost
# WARNING: I am assuming your computer's name is bob. If not, grab it from /etc/hosts.conf
127.0.1.1 bob
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1 www.youtube.com
127.0.0.1 youtube.com
127.0.0.1 www.facebook.com
127.0.0.1 www.facebook.com.ar
127.0.0.1 www.9gag.com
127.0.0.1 9gag.com
127.0.0.1 www.twitter.com
127.0.0.1 twitter.com
启用文件
我们需要对您现有的原始 Host 文件进行备份,并将其命名为hosts.bob.enable
:
sudo cp /etc/hosts /etc/hosts.bob.enable
在本地搜索
要阻止被禁止的网站:
sudo cp /etc/hosts.bob.block /etc/hosts
要再次启用被禁止的网站:
sudo cp /etc/hosts.bob.enable /etc/hosts
就我个人而言,我将这两个包装到名为enable_internet.sh
和的脚本中disable_internet.sh
,并将它们放在我的主文件夹中。
准备从 KDE Connect 以 sudo 身份运行
我们将使用KDE 连接从手机切换互联网。它应该已经安装在您的计算机上。
否则只需运行:
sudo apt install kdeconnect
但是 KDE Connect 无法以 sudo 形式运行命令。我们需要修复它。
您可以关注这个答案来自 Unix Stack Exchange,它创建了一个简单的 C 程序并解决了该问题(使用 SUID 位):
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
setuid(0);
system("cp /etc/hosts.bob.block /etc/hosts");
return 0;
}
制作一个应用程序来启用它,制作另一个应用程序来禁用它。
出于安全原因,请安装您在中创建的应用程序/usr/local/bin
并确保它由 root 拥有。
我们将把这两个 C 程序称为enable_internet
和disable_internet
。
通过手机切换支持
KDE 连接支持从您的手机发出远程命令;预先记录在您的系统上。
首先将手机与电脑配对。你可以在网上查看如何操作,其实很简单(不需要蓝牙,只要在同一个 Wi-Fi 上就足够了)
其次,在您的计算机上打开 KDE Connect Indicator(如果未运行,请启动 KDE Connect Indicator 应用程序),右键单击->配置。
点击空白框并添加启用选项和禁用选项:
就是这样。
现在您应该能够在手机中看到命令,您可以来回切换:
评论
浏览器(例如 Chrome)在内部缓存 DNS 查询,因此如果您禁用互联网并且已经访问过这些网站;您可能仍然可以访问被阻止的网站(如 Youtube)几分钟。
重新启动浏览器应该可以解决这个问题。
再次启用互联网也是如此,尽管 DNS 解析失败时浏览器会更加激进;并且通常需要刷新一到三次才能访问现已解除阻止的网站。