博客重建以及解决 Starlink 无法与 ConoHa VPS 进行 TCP 通信的问题

4 min

language: ja bn en es hi pt ru zh-cn zh-tw

你好,我是无能。

好久没有更新了。或者说,一些 2025 年下半年的文章丢失了,直到现在才更新。

Codex

最近我开始使用 Codex,开发体验太好了,我完全陷入其中了。

因此,我将博客从一直不满意的 Lume CMS 使用 Codex 进行了重新架构。

虽然可以用 SSG 的 Markdown 编写很好,但是我大部分时间都是从浏览器更新的,我意识到最终没有必要特意使用我平时用的编辑器 vim 来编写。

特别是图片方面有问题,让我没有轻松更新博客的动力。

代码在这里公开了,但目前充满了 bug。

GitHub - haturatu/alleycat: cms

GitHub - haturatu/ViMusic

似乎也可以重新开始维护了,所以我又开始维护了,没想到在 Reddit 上回复了一个正在寻找 fork 目标的人,那个人竟然是之前在我的仓库里提交过 issue 的人。

真是世界真小啊。

ConoHa VPS 网络无法连接

然后,突然出现了问题。

似乎发生了 Path MTU Black hole 的情况。这真的很奇怪,像 WireGuard 这种需要 UDP 通信的服务,以及 DNS 服务器等都可以访问,但是所有需要 TCP 的通信,比如 SSHHTTP,都无法工作。

于是,由于 ConoHa VPS 本身是托管在 FreeBSD 上的,我进行了一番调查,看到有信息说可以通过使用包过滤器 ( pf ) 的 scrub 功能来规范化数据包,从而解决问题,于是进行了如下设置。

set skip on lo
set block-policy drop

exsrv1 = dummy
insrv1 = dummy
insrv2 = dummy

wireguard_clients="{ dummy, dummy, dummy }"
wanint="vtnet0"
wg_ports="{51820}"

scrub in on $wanint all random-id max-mss 1360
scrub out on $wanint all random-id max-mss 1360
~~~

这样一来,上行和下行流量都得到了规范化,数据包的段大小将变为 1360

奇怪之处

关于发生这种情况的原因,有猜测认为 Starlink 的 CGNAT 可能有问题。

$ mtr -T -P 443 -n -r -c 2 163.44.113.145
Start: 2026-02-24T00:13:53+0900

HOST: thepassenger                Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 192.168.1.1                0.0%     2    1.4   1.5   1.4   1.6   0.1
  2.|-- 100.64.0.1                 0.0%     2   19.3  19.4  19.3  19.4   0.1
  3.|-- 172.16.251.26              0.0%     2   20.1  23.4  20.1  26.8   4.8
  4.|-- ???                       100.0     2    0.0   0.0   0.0   0.0   0.0
  5.|-- 206.224.70.186             0.0%     2   25.9  22.3  18.8  25.9   5.0
        206.224.70.182                   
  6.|-- 210.171.225.229            0.0%     2   23.0  22.7  22.4  23.0   0.4
  7.|-- ???                       100.0     2    0.0   0.0   0.0   0.0   0.0
  8.|-- 172.71.208.15              0.0%     2   24.9  23.1  21.3  24.9   2.5
        162.159.109.42                   
  9.|-- 172.71.4.38                0.0%     2   21.9  23.3  21.9  24.8   2.1
        172.64.212.62                    
 10.|-- 172.71.4.35                0.0%     2   63.3  43.8  24.2  63.3  27.7
        172.70.221.227                   
 11.|-- ???                       100.0     2    0.0   0.0   0.0   0.0   0.0
 12.|-- 172.70.165.3               0.0%     2   44.7  39.8  35.0  44.7   6.9
 13.|-- 150.95.7.204               0.0%     2   33.4  34.0  33.4  34.6   0.8
 14.|-- 150.95.7.139               0.0%     2   39.2  50.3  39.2  61.4  15.7
 15.|-- 150.95.7.147               0.0%     2   36.6  37.2  36.6  37.9   0.9
 16.|-- 163.44.113.145             0.0%     2   34.2  35.8  34.2  37.5   2.3
$ tracepath -n -m 30 163.44.113.145
 1?: [LOCALHOST]                      pmtu 1500
 1:  192.168.1.1                                           1.347毫秒 
 1:  192.168.1.1                                           1.293毫秒 
 2:  100.64.0.1                                           53.580毫秒 asymm  3 
 3:  172.16.251.26                                        37.025毫秒 
 4:  206.224.70.208                                       34.552毫秒 (不完整的路由器返回了损坏的数据) asymm  7 
 5:  206.224.70.184                                       37.307毫秒 
 6:  210.171.225.229                                      34.518毫秒 
 7:  无响应
 8:  172.71.4.43                                          34.303毫秒 
 9:  162.159.109.87                                       39.922毫秒 
10:  162.159.109.55                                       33.535毫秒 
11:  无响应
12:  172.70.165.3                                         56.395毫秒 asymm 11 
13:  150.95.7.204                                         46.647毫秒 asymm 10 
14:  150.95.7.139                                         66.797毫秒 asymm 11 
15:  150.95.7.147                                         46.542毫秒 asymm 12 
16:  无响应
17:  无响应
18:  无响应

原本 Starlink 和我的网络环境的默认数据包大小即使是 1500,我原本以为 TCP 通信会很好地处理这种情况,但是我不明白为什么这个问题突然在本月发生在 ConoHa VPS <-> Starlink 之间。

如果最初的 Starlink CGNAT 就有问题,那么这个问题应该更早发生才对,但这实在是一个太奇怪的现象,我一直感到困惑不解。

Related Posts