我正在尝试设置一个 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 链的事情,但是上面的内容应该(理论上,我在实践中没有尝试过)实现您所需要的
该指南也可能已过时,第一个白名单网站似乎并不在线