省流
不安全的做法
sudo tailscale up
启动 tailscale 之后首先输入
sudo iptables -L --line-numbers
规则 Chain ts-input
应该类似于下图:

我这里 Drop
属于 3 号,输入 sudo iptables -D ts-input 3
删掉规则。
重启服务器或者重新启动 Tailscale 服务后,需要再次删除。
如果要恢复,重启服务器或者 Tailscale 即可。
警告
这条规则并不是可有可无的。大部分较新的 Linux 发行版存在漏洞 CVE-2019-14899,该漏洞可使攻击者劫持 VPN 链接。使用 iptables 过滤掉一些地址可以作为缓解措施之一。
删除这条规则可能会将正在使用基于 WireGuard 的 VPN(例如 Tailscale)的 Linux 主机置于风险之中,请务必仔细权衡利弊。
安全的做法
Tailscale 与阿里云八字不合的解决方法(2) – Eterance的小窝
阅读本文所需的前置知识
- 知道 tailscale 的用途
- 了解 linux iptables 工具的用途,以及如何配置链与规则
症状
一开始是在文章 大内网战略(6):自建 Tailscale DERP 中继服务器 保姆级教程 - 知乎 中提到启动 tailscale 后,阿里云的服务器的 workbench 连接会无法使用,只能自行 ssh。当时排查出来是 iptables 里的 Chain INPUT
中的 ts-input
有问题,于是整个删掉了,也没发现有什么影响。
备注
iptables是一个用于Linux操作系统的防火墙工具,用于配置和管理网络数据包的过滤和转发规则。它可以让系统管理员定义如何处理进出系统的网络数据流量,从而实现网络安全和流量控制。
在iptables中,"chain"(链)是规则的集合,用于指定网络数据包在通过防火墙时的处理路径。管理员可以在链上添加规则,定义数据包如何被接受、拒绝、修改或转发。规则可以基于源地址、目标地址、端口号、协议等条件进行匹配,然后执行相应的操作。
再后来发现又一个不对劲:阿里云的服务器在启动 tailscale 后,连软件都不能安装了:

把 tailscale 关掉才能安装,而 Azure,Racknerd 的机子一点问题都没有。怎么回事?
再然后,发现安装了 tailscale 的阿里云服务器甚至连 WordPress 后台都打开得非常慢:

十几秒,谁顶得住啊?因此迫使我开始寻找到底是什么原因导致以上情况。
排查
上面已经提到过,已经排查到整个删掉 Chain INPUT
中的 ts-input
就可以解决问题。因此,一定是 ts-input
规则里的哪条规则有问题。

一般有三条规则。我并没有一条一条去排除,因为我注意到使用阿里云 WorkBench 连接服务器时连接的 IP 不太对劲:

这个 IP 明显和我使用 CMD 自行 SSH 时的 IP 不一致(当时我还不知道 100.64.0.0/10
也是局域网 IP 段,只知道教科书上的 A B C 三类),而且多次连接都是这种 IP。残余的计网知识告诉我,这种 IP 明显就可以被 100.64.0.0/10
mask 掉,也就是被这个 Drop 规则匹配(Drop 规则的意思是丢弃符合这个规则的流量)。
然后稍加查询得知怎么删掉这个规则。一删掉,好嘛,全都恢复了!然后再加回去再重启,又不正常了。那么,罪魁祸首就是这个规则。
但是为什么我手头的服务器只有阿里云会和 Tailscale 八字不合呢?经过查询,查到一篇大佬博客的解释:Tailscale出口节点无网络问题的调试与分析 - Frank's Weblog,主要是因为阿里云使用了 100.64.0.0/10
网段部署内网服务导致的。
不过事情到这里还没结束。欲知后事如何,且听下回分解。
Comments NOTHING