为什么只有少数 TCP 数据包通过 IPsec VPN 隧道到达端口 3306 上的目的地?

为什么只有少数 TCP 数据包通过 IPsec VPN 隧道到达端口 3306 上的目的地?

这个问题与主题无关网络工程并建议将其发布在这里。那么,我们开始吧...

当通过 VPN 隧道 (IPsec/L2TP) 连接到网络时,我通常可以通过端口 22 上的 SSH 访问 MySQL 服务器主机,但在默认端口 3306 上与服务器建立 MySQL 连接时出现严重的连接问题。我意识到只有极少数数据包通过端口 3306,当它们通过时,我甚至可以建立成功的 MySQL 连接。经过多次测试,我可以将问题归结为网络问题。请参阅下面的相应配置和我为隔离问题而执行的最新测试。为了完整起见:当本地连接到目标网络(例如在子网 172.29.1.0/24 上)时,它运行良好。

系统配置目标网络:

  • VPN 服务器:Ubiquiti UDM Pro | 协议:L2TP | IP:10.1.1.1 | VPN 客户端子网:10.4.4.0/24
  • MySQL 服务器:在 VMWare ESXi 上运行 Photon4 | IP:10.1.1.82

系统配置来源网络:

  • 主持人:Windows 10 | 子网:172.27.0.0/16
  • VPN 连接:Windows WAN 微型端口适配器 | 类型:L2TP/IPsec | IP:10.4.4.1

网络测试及结果:

  • 测试与目标主机的 TCP 连接端口 22总是有效
$ telnet 10.1.1.82 22
Trying 10.1.1.82...
Connected to 10.1.1.82.
Escape character is '^]'.
SSH-2.0-OpenSSH_8.8
  • 测试与目标主机的 TCP 连接端口 3306几乎不起作用
# 99% of the cases
$ telnet 10.1.1.82 3306
Trying 10.1.1.82...
telnet: Unable to connect to remote host: Resource temporarily unavailable

# 1% of the cases
$ telnet 10.1.1.82 3306
Trying 10.1.1.82...
Connected to 10.1.1.82.
Escape character is '^]'.
5.5.5-10.7.3-MariaDBOoaxW+m9'V]R`k{J=2#mysql_native_password
  • 甚至有可能建立成功的 MySQL 连接经过多次尝试,但此后再无数据包通过:
$ while true; do mysql -h 10.1.1.82 -u <USER> -p<PASSWORD>; sleep 1; done
ERROR 2002 (HY000): Can't connect to MySQL server on '10.1.1.82' (115)
ERROR 2002 (HY000): Can't connect to MySQL server on '10.1.1.82' (115)
ERROR 2002 (HY000): Can't connect to MySQL server on '10.1.1.82' (115)
(... Meanwhile, at the Hall of Justice...)
ERROR 2002 (HY000): Can't connect to MySQL server on '10.1.1.82' (115)
ERROR 2002 (HY000): Can't connect to MySQL server on '10.1.1.82' (115)
ERROR 2002 (HY000): Can't connect to MySQL server on '10.1.1.82' (115)
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 10.7.3-MariaDB Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> select 1;
ERROR 2013 (HY000): Lost connection to MySQL server during query
MariaDB [(none)]> select 1;
ERROR 2006 (HY000): MySQL server has gone away
ERROR 2002 (HY000): Can't connect to MySQL server on '10.1.1.82' (115)
ERROR: Can't connect to the server
unknown [(none)]>
  • 我刚刚意识到,经过一段时间的休息或重新启动目标主机后,上述测试可能更有可能成功。

现在我需要你的帮助。是什么原因导致了这个问题,我该如何进一步调查?它似乎独立于本地网络基础设施而发生,因为即使连接到移动热点也会发生这种情况。如果您需要更多详细信息,请告诉我。提前谢谢!

答案1

我已经设法自己解决了这个问题,并想在这里发布答案以供将来参考。

这种非常特殊的流量,即通过 VPN 隧道在端口 3306 上的 MySQL 连接,被 UDM Pro 错误地识别为威胁。在威胁管理配置中禁用“漏洞”类别解决了该问题。

相关内容