![无法通过防火墙从 Linux 连接到 SQL Server](https://linux22.com/image/560958/%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%E9%98%B2%E7%81%AB%E5%A2%99%E4%BB%8E%20Linux%20%E8%BF%9E%E6%8E%A5%E5%88%B0%20SQL%20Server.png)
我需要从 Debian GNU/Linux 网络服务器连接到托管在组织本地网络内的 Windows 机器上的 SQL Server 数据库。
数据库服务器的负责人和防火墙的负责人都说他们已经设置好一切,以便我可以连接:数据库服务器允许传入连接,防火墙允许传入连接并启用端口转发(1433 TCP 和 1434 UDP)。他们已经允许了 Web 服务器的 IP,但我仍然无法连接到数据库。我甚至无法使用 telnet 或 nc 发起到端口 1433 的 TCP 连接。我已经在防火墙上运行了 nmap,但它没有报告这些端口为打开。为了进行测试,管理数据库机器的人员已要求管理防火墙的人员允许他自己的 IP,这样他就可以正常连接。我还要求 Web 服务器托管公司检查到这些端口的传出连接,他们明确允许了。
我是否正确地认为,在寻找 FreeTDS 的问题之前,我应该能够与端口 1433 建立原始 TCP 连接?
SQL Server 在其网络实现上是否可能做了一些不寻常的事情,并且我使用 telnet、nmap 或 nc 的测试在这种情况下不相关?
nmap 是否有可能没有将端口报告为打开但实际上却是打开的?
答案1
对于我来说,telnet 一直是连接方面的警示灯。您说得对,您应该能够 telnet 到该端口。您无法从那里做太多事情,但这至少可以告诉您所有移动部件是否都已准备就绪,以便您能够通过该端口进行通信。祝您好运!
答案2
如果有人可以通过端口 1433 使用本机 SQL Server 工具进行连接(如果您使用的是命名实例,则只需要 UDP 1434),而您无法从 Linux 服务器进行连接,则说明存在防火墙。我一直使用 telnet 来验证连接性。