屏蔽除卡恩学院之外的所有网站

屏蔽除卡恩学院之外的所有网站

我正在尝试设置一个 ubuntu 用户,以便他们可以访问 Kahnacademy 教学网站,但不能访问其他任何内容。我特别想屏蔽 youtube。 这里有说明但我无法让他们工作。基本上,我可以使用 /etc/hosts 文件阻止 youtube,但视频不会播放,或者视频播放并且 youtube 被解除阻止。有没有一种简单的方法只允许来自 Kahnacademy 网站的流量访问 youtube?

答案1

/etc/hosts 中的 IIRC 阻止站点仅覆盖计算机的 DNS 查找,而不是实际阻止连接,因此孩子们仍然可以通过直接转到地址栏中的 IP 来访问 YouTube

我将使用 iptables 防火墙来执行此操作,因此您的规则链将类似于:

iptables --append OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 

使已经建立的连接发挥作用。

然后,对于主要可汗学院站点的 IP 以及该指南中提到的需要列入白名单的每个站点的 IP(可以使用例如dig +short youtube-nocookie.com从找到dnsutils

iptables --append OUTPUT --destination [IP of site] -j ACCEPT

这将允许到这些站点的任何传出连接

然后删除该用户在之前的规则中尚未接受的所有传出连接请求,

iptables --append OUTPUT -m owner --uid-owner [Ubuntu-Username] -j DROP 

然后保存/设置配置

iptables-save 

所以有效的方法是

(UbuntuUser requests connection, sending output packet)
=> (if packet is part of an ongoing relationship, Accept (send) it)
=> (if packet destination is a khanacademy site, Accept it) 
=> (if packet is from this user, and hasn't been accepted already, drop it) 

缺点是,如果您需要列入白名单的任何站点的 IP 发生更改,您将必须重新配置 iptables 规则,并且为了能够使用这种方式,您需要拥有计算机的管理员权限,但它为您提供了在内核级别控制网络数据包,这对于某人来说更难找到解决方法

如果还没有处理的话,您可能也想做类似于 INPUT 链的事情,但是上面的内容应该(理论上,我在实践中没有尝试过)实现您所需要的

该指南也可能已过时,第一个白名单网站似乎并不在线

相关内容