![为什么 MS Sql 端口 (1433) 转发无法通过 http_connect 代理工作?](https://linux22.com/image/78782/%E4%B8%BA%E4%BB%80%E4%B9%88%20MS%20Sql%20%E7%AB%AF%E5%8F%A3%20(1433)%20%E8%BD%AC%E5%8F%91%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%20http_connect%20%E4%BB%A3%E7%90%86%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
我有一台带有 putty 的 Windows 机器,它可以访问本地网络上的 ms sql server。我在互联网上有一台远程 Ubuntu 机器,在 443 端口上有 sshd(需要通过 https 代理建立安全连接)。我想将本地网络上的一些 ms sql ip:port 转发到远程 ubuntu 计算机。您可以在下面看到我的转发设置:
当我在没有代理的情况下启动此 ssh 会话时,它的工作方式与预期一致(我可以使用 轻松检查telnet localhost 31339
):
root@ubuntu:~# telnet localhost 31339
尝试::1...
连接到 localhost.localdomain。
转义字符是“^]”。
但是当我使用支持 HTTP CONNECT 方法的 http 代理时,该端口不会被转发。当我尝试检查转发时telnet localhost 31339
,我立即得到外部主机关闭连接。:
root@ubuntu:~# telnet localhost 31339
尝试::1...
连接到 localhost.localdomain。
转义字符是“^]”。
外部主机关闭连接。
同时,我尝试使用 Wireshark 在我的 Windows 机器上嗅探数据包,但根本没有看到与此端口转发规则相关的数据包。 Putty 甚至不会尝试与本地网络上的 ms sql server 建立 TCP 连接。
正如我所说,工作和不工作端口转发规则之间的唯一区别是使用 http 代理,理论上这应该减少 ip 数据包的最大大小,这可能就是问题所在......所以我倾向于认为可以有一些 sshd 设置可以处理这种情况。
我还做了另一个测试:我尝试将本地 VNC 端口 5900 从我的 Windows 计算机转发到本地 ubuntu 端口,就像我对 ms sql 端口所做的那样。这有效(无论我是否使用代理建立 ssh 连接都没有关系):
root@vm5594:~# telnet localhost 31337
正在尝试::1...
已连接到 localhost.localdomain。
转义字符是“^]”。 RFB 003.008
这就是为什么我真的想知道可能是什么问题并请你帮忙。有什么建议么?
长话短说当我使用 https 代理进行 ssh 连接时,ms sql 端口转发不起作用,但无需代理即可工作。 VNC 端口转发在这两种情况下都可以正常工作。
有任何不明白的地方请随时提问。可能是我的问题不够详细。