使用 /etc/hosts 阻止电报

使用 /etc/hosts 阻止电报

我使用 /etc/hosts 来阻止我不想访问的域,它适用于大多数域。然而,它似乎不适用于 Telegram 网络聊天 (web.telegram.org)。

我的文件中有以下几行:

0.0.0.0 web.telegram.org
0.0.0.0 www.telegram.org
0.0.0.0 telegram.org

但我仍然可以访问该网站并使用网络应用程序的全部功能。难道我做错了什么?

答案1

由于您正在编辑 /etc/hosts,因此您具有 root 访问权限。最好、最优雅的方法是使用 iptables(即阻止数据包离开盒子到 www.telegram.org)

可以通过在命令行输入iptables命令进行测试。

# iptables -A OUTPUT -d www.telegram.org -j REJECT

您可以看到您添加了以下规则:

# iptables -S OUTPUT

-P OUTPUT ACCEPT
-A OUTPUT -d 149.154.167.120/32 -j REJECT --reject-with icmp-port-unreachable

您可以使用以下方法测试对其的尝试访问:

# wget  web.telegram.org                                                     
--2017-04-26 14:38:01--  http://web.telegram.org/
Resolving web.telegram.org... 149.154.167.120, 2001:67c:4e8:fa60:3:0:811:140
Connecting to web.telegram.org|149.154.167.120|:80... failed: Connection refused.
Connecting to web.telegram.org|2001:67c:4e8:fa60:3:0:811:140|:80... failed: Network is unreachable.

您没有告诉我们您正在运行什么操作系统,因此您可能没有更新版本的 iptables,因此您可能缺少 -S 开关。您可以使用-L:

# iptables -L OUTPUT

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             149.154.167.120     reject-with icmp-port-unreachable 

如果要删除刚刚添加的规则,只需将上面命令中的 -A 替换为 -D 即可。

注意:如果您希望这些规则在重新启动后永久生效,您必须手动iptables-save > /etc/sysconfig/iptables将它们添加到 /etc/sysconfig/iptables 中。

iptables 相当复杂,但手册页非常有帮助。

(我在我的服务器上运行 CentOS 6 和 7。firewalld 是 CentOS 7 上新的默认前端,但我安装了 iptables-services 并使用它,这是完全受支持的。)

答案2

顺便说一句,我将主机设置为 127.0.0.1 而不是 0.0.0.0....这可能是您原来的问题。

无论如何,另一个技巧是为有问题的 IP 号码添加特殊路由:

 # route add -host 10.11.12.13 dev lo

您必须将这些添加到 rc.local (或等效文件)中,以便在重新启动时重新创建这些规则。

我用它来阻止那些试图破解我的网站公司密码的人。

答案3

它使用 websockets 来获取消息

添加

0.0.0.0 zws2.web.telegram.org

PS 检查如何在 chrome devtools 中调试 websockets

相关内容