新网络未使用更新的 TLS 并且无法连接到某些网站

新网络未使用更新的 TLS 并且无法连接到某些网站

我有 2 个配置几乎完全相同的网络。它们都使用相同的路由器 - Mikrotik RB2011UiAS-RM,并直接通过光纤连接到 ISP。我对这两个网络使用相同的 ISP。我的第一个网络已经运行了大约 4 年,没有出现任何重大问题。新网络已经运行了大约 2 个月。我仿照第一个网络设计了第二个网络,以便它们设置了相同的 VLAN、IP 方案等。一切似乎都运行良好,但最近几周,我收到了有关某些网站无法加载的投诉。

这些问题与无法加载的网站一致,并且出现问题的网站似乎是随机的。例如,Hulu.com 可以加载,但登录 Hulu 会失败。最大的问题是一些公司的供应商网站无法加载。这些是我关注的重点,因为它们是公司需要工作的网站。

上周,我使用 wireshark 测试了第二个网络的连接,看看是否能发现他们告诉我无法加载的网站上出了什么问题。我得到了以下结果:

2097    81.935154   10.0.100.193    45.60.196.32    TCP 66  50793 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM
2098    81.936384   10.0.100.193    45.60.196.32    TCP 66  50794 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM
2111    81.976423   45.60.196.32    10.0.100.193    TCP 66  443 → 50793 [SYN, ACK] Seq=0 Ack=1 Win=64240 Len=0 MSS=1460 SACK_PERM WS=128
2112    81.976513   45.60.196.32    10.0.100.193    TCP 66  443 → 50794 [SYN, ACK] Seq=0 Ack=1 Win=64240 Len=0 MSS=1460 SACK_PERM WS=128
2113    81.976549   10.0.100.193    45.60.196.32    TCP 54  50793 → 443 [ACK] Seq=1 Ack=1 Win=262656 Len=0
2114    81.976616   10.0.100.193    45.60.196.32    TCP 54  50794 → 443 [ACK] Seq=1 Ack=1 Win=262656 Len=0
2115    81.977504   10.0.100.193    45.60.196.32    TLSv1   571 Client Hello
2116    81.978230   10.0.100.193    45.60.196.32    TLSv1   571 Client Hello
2124    82.017575   45.60.196.32    10.0.100.193    TCP 60  443 → 50793 [ACK] Seq=1 Ack=518 Win=64128 Len=0
2125    82.017984   45.60.196.32    10.0.100.193    TCP 60  443 → 50794 [ACK] Seq=1 Ack=518 Win=64128 Len=0
2126    82.018045   45.60.196.32    10.0.100.193    SSL 1230    [TCP Previous segment not captured] , Continuation Data
2127    82.018081   10.0.100.193    45.60.196.32    TCP 66  [TCP Dup ACK 2113#1] 50793 → 443 [ACK] Seq=518 Ack=1 Win=262656 Len=0 SLE=2921 SRE=4097
2128    82.018447   45.60.196.32    10.0.100.193    SSL 1230    [TCP Previous segment not captured] , Continuation Data
2129    82.018491   10.0.100.193    45.60.196.32    TCP 66  [TCP Dup ACK 2114#1] 50794 → 443 [ACK] Seq=518 Ack=1 Win=262656 Len=0 SLE=2921 SRE=4097
2130    82.018816   45.60.196.32    10.0.100.193    SSL 236 [TCP Previous segment not captured] , Continuation Data
2131    82.018853   10.0.100.193    45.60.196.32    TCP 74  [TCP Dup ACK 2113#2] 50793 → 443 [ACK] Seq=518 Ack=1 Win=262656 Len=0 SLE=5557 SRE=5739 SLE=2921 SRE=4097
2132    82.019221   45.60.196.32    10.0.100.193    SSL 236 [TCP Previous segment not captured] , Continuation Data
2133    82.019246   10.0.100.193    45.60.196.32    TCP 74  [TCP Dup ACK 2114#2] 50794 → 443 [ACK] Seq=518 Ack=1 Win=262656 Len=0 SLE=5557 SRE=5739 SLE=2921 SRE=4097
2414    91.975313   45.60.196.32    10.0.100.193    TCP 60  443 → 50793 [FIN, ACK] Seq=5739 Ack=518 Win=64128 Len=0
2415    91.975378   10.0.100.193    45.60.196.32    TCP 74  [TCP Dup ACK 2113#3] 50793 → 443 [ACK] Seq=518 Ack=1 Win=262656 Len=0 SLE=5557 SRE=5739 SLE=2921 SRE=4097
2416    91.980004   45.60.196.32    10.0.100.193    TCP 60  443 → 50794 [FIN, ACK] Seq=5739 Ack=518 Win=64128 Len=0
2417    91.980052   10.0.100.193    45.60.196.32    TCP 74  [TCP Dup ACK 2114#3] 50794 → 443 [ACK] Seq=518 Ack=1 Win=262656 Len=0 SLE=5557 SRE=5739 SLE=2921 SRE=4097
3135    111.978393  10.0.100.193    45.60.196.32    TCP 54  50793 → 443 [FIN, ACK] Seq=518 Ack=1 Win=262656 Len=0
3136    111.978658  10.0.100.193    45.60.196.32    TCP 54  50794 → 443 [FIN, ACK] Seq=518 Ack=1 Win=262656 Len=0
3139    112.280923  10.0.100.193    45.60.196.32    TCP 54  [TCP Retransmission] 50794 → 443 [FIN, ACK] Seq=518 Ack=1 Win=262656 Len=0
3140    112.280923  10.0.100.193    45.60.196.32    TCP 54  [TCP Retransmission] 50793 → 443 [FIN, ACK] Seq=518 Ack=1 Win=262656 Len=0
3150    112.882128  10.0.100.193    45.60.196.32    TCP 54  [TCP Retransmission] 50793 → 443 [FIN, ACK] Seq=518 Ack=1 Win=262656 Len=0
3151    112.882127  10.0.100.193    45.60.196.32    TCP 54  [TCP Retransmission] 50794 → 443 [FIN, ACK] Seq=518 Ack=1 Win=262656 Len=0
3163    114.097284  10.0.100.193    45.60.196.32    TCP 54  [TCP Retransmission] 50794 → 443 [FIN, ACK] Seq=518 Ack=1 Win=262656 Len=0
3164    114.097284  10.0.100.193    45.60.196.32    TCP 54  [TCP Retransmission] 50793 → 443 [FIN, ACK] Seq=518 Ack=1 Win=262656 Len=0
3193    116.514004  10.0.100.193    45.60.196.32    TCP 54  [TCP Retransmission] 50794 → 443 [FIN, ACK] Seq=518 Ack=1 Win=262656 Len=0
3194    116.514004  10.0.100.193    45.60.196.32    TCP 54  [TCP Retransmission] 50793 → 443 [FIN, ACK] Seq=518 Ack=1 Win=262656 Len=0
3387    121.329207  10.0.100.193    45.60.196.32    TCP 54  [TCP Retransmission] 50794 → 443 [FIN, ACK] Seq=518 Ack=1 Win=262656 Len=0
3388    121.329207  10.0.100.193    45.60.196.32    TCP 54  [TCP Retransmission] 50793 → 443 [FIN, ACK] Seq=518 Ack=1 Win=262656 Len=0
3727    130.944445  10.0.100.193    45.60.196.32    TCP 54  50794 → 443 [RST, ACK] Seq=519 Ack=1 Win=0 Len=0
3728    130.944445  10.0.100.193    45.60.196.32    TCP 54  50793 → 443 [RST, ACK] Seq=519 Ack=1 Win=0 Len=0

所以当我看到这个时,我知道服务器没有响应从我的机器发送的 TLS Client Hello,这是一个问题。直到我在第一个网络上进行了另一次捕获,我才看到发生了什么:

141 8.485975    10.0.100.193    45.60.196.32    TCP 66  49533 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM
143 8.495430    10.0.100.193    45.60.196.32    TCP 66  49534 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM
160 8.529277    45.60.196.32    10.0.100.193    TCP 66  443 → 49533 [SYN, ACK] Seq=0 Ack=1 Win=64240 Len=0 MSS=1340 SACK_PERM WS=128
161 8.529397    10.0.100.193    45.60.196.32    TCP 54  49533 → 443 [ACK] Seq=1 Ack=1 Win=262400 Len=0
162 8.530000    10.0.100.193    45.60.196.32    TLSv1.3 571 Client Hello
163 8.538789    45.60.196.32    10.0.100.193    TCP 66  443 → 49534 [SYN, ACK] Seq=0 Ack=1 Win=64240 Len=0 MSS=1340 SACK_PERM WS=128
164 8.538878    10.0.100.193    45.60.196.32    TCP 54  49534 → 443 [ACK] Seq=1 Ack=1 Win=262400 Len=0
165 8.539542    10.0.100.193    45.60.196.32    TLSv1.3 571 Client Hello
180 8.572428    45.60.196.32    10.0.100.193    TCP 60  443 → 49533 [ACK] Seq=1 Ack=518 Win=64128 Len=0
181 8.575808    45.60.196.32    10.0.100.193    TLSv1.3 1394    Server Hello, Change Cipher Spec, Application Data
182 8.575965    45.60.196.32    10.0.100.193    TCP 1394    443 → 49533 [PSH, ACK] Seq=1341 Ack=518 Win=64128 Len=1340 [TCP segment of a reassembled PDU]

由于某种原因,在我的新网络上,我的计算机没有使用 TLSv1.3,而是使用 TLSv1,我猜服务器没有响应,因为它不会使用过时的协议。 (这对我来说很有意义。)所以我明白发生了什么,但我不明白为什么我的电脑会这样做。

如果我错了请纠正我,但我的理解是 TLS 版本是在客户端和服务器之间协商的,并且不依赖于所使用的网络。我在两个网络上使用同一台笔记本电脑,因此这不是客户端机器需要更新的问题。此外,tracert 显示我有一个到 IP 的链接,这并不奇怪,因为我肯定在与它通信,但 TLS 版本阻止服务器继续通信。

我完全不知道如何修复这个问题,也不知道为什么会出现这个问题。这对我来说绝对是第一次。有没有人有故障排除的想法,或者可能遇到过类似的问题?

提前感谢您的所有帮助。

更新:我回到新网络进行了一些探索。我现在更加困惑了。我刚刚在我的 IP 上进行了捕获,并尝试进行正常的工作/浏览,发现许多网站无法加载。亚马逊工作正常。ServerFault 和 StackOverflow 无法加载。所以我通过 TLS 协议过滤了我的捕获,我确实看到 TLSv1.2 和 TLSv1.3 在该网络上成功运行,但它似乎是有选择性的。在所有网站失败/超时的情况下,我的计算机都尝试通过 TLSv1 进行通信。我只是不知道为什么当网站支持更高的协议时它会尝试这样做。

更新 #2:昨天发生的 2 件新事情:

  1. 我检查了所有交换机和路由器的系统时间。路由器的时间正确,但我的交换机仍处于 2000 年左右的默认时间。因此,我为所有网络设备设置了时间,但这对我的问题没有影响。
  2. 我在两个位置都运行了跟踪路由,结果大不相同。新网络(无法连接)有 15 个跳数,而另一个网络有 9 个跳数。我在两个位置使用同一个 ISP,离开 LAN 后的前 2 个跳数完全相同,然后新网络的情况似乎开始恶化。我已将这些结果发送给我的 ISP,正在等待他们的回复。

此时,我认为这不是我的本地网络的问题,而是后续的问题。

更新 #3:我的 ISP 派了一名技术人员,他带着媒体转换器将他们的笔记本电脑直接连接到光纤网络,所有网站都运行正常。因此,我的路由器中存在一些问题,导致了通信问题。此外,我甚至将“不工作”的路由器降级为与没有任何问题的网络相同的版本。我仍然遇到同样的问题。值得注意的是,我的 ISP 为我们遇到问题的网站之一设置了静态路由,而该网站没有问题。所以我认为这意味着数据包的路由也可能发挥作用。我已经确定了一些可以尝试使用的 ppp 设置,但我并不希望它们真的是问题所在。与此同时,我联系了 Mikrotik,看看他们有什么见解。

答案1

我怀疑您在第一次跟踪中唯一实际的问题是您的系统没有收到服务器响应的第一个段(段?),其中包含 ServerHello 以及一些其他内容(对于 1.3大概CCS EE 和部分 Cert)在两个连接中的任何一个上都不可用。“上一个段未捕获”表示 Wireshark 未看到至少一个段,随后传出的“Dup Ack ... ack=1”确认您的操作系统堆栈也没有看到它/它们,

仅从 ClientHello 无法确定 TLS 协议版本。只有将 ClientHello 与 ServerHello 结合起来,Wireshark 才能确定是否使用 TLS1.3,并显示它。如果 Wireshark 只看到 ClientHello 而看不到 ServerHello,则它显示的版本是任意的,通常是错误的,您应该忽略它。

那么为什么你的系统没有收到服务器的第一个段?我不确定,但是常见的原因是如果任何网络或链路上的 MTU 设置得太低,或者(相反)对等端的 MSS 太高,并且碎片被禁用或阻止,那么您将获得(一个)比允许的数据报更长的 TCP 段,并且会被丢弃。(在 IPv6 上,碎片不再存在,因此条件的最后一部分变得毫无意义。)如果您展开第一个“上一个未捕获”帧并查看 TCP 标头中的(相对)序列号,它将显示丢失了多少数据,如果只有一个,则等于前一个段大小,或者等于前几个段大小的总和,并且由于非推送段通常都是相同的大小(MSS),因此总和是单个段大小的小整数倍。

如果问题是你的系统由于某种原因发送TLSv1.0 问候,由于您所述的原因,这种情况不应该发生,理智的服务器会失败做出响应;如果它不接受 1.0(并且当今大多数优质公共服务器都不接受),它将以警报或断开连接(正常 FIN 或异常 RST)进行响应,并且其中任何一个在 Wireshark 中都是可见的(并且清楚区分)。

答案2

我找到了答案。它必须深入研究路由器上的 PPoE 设置,但 ppp 配置文件设置为加密,而加密又具有 change-tcp-mss=no

一旦我使用 change-tcp-mss=yes 将配置文件更正为非加密配置文件,一切都会按预期工作。

相关内容