【问题标题】:Application not connection to sqlserver outside the firewall应用程序未连接到防火墙外的 sqlserver
【发布时间】:2010-07-15 22:37:07
【问题描述】:

所以我有一个连接到我们的 SQLServer 的应用程序。 这适用于防火墙后面的任何服务器。

当我把它放在我们的实时服务器上时,在防火墙之外,与 sqlserver 的连接失败并出现此错误

A network-related or instance-specific error occurred while establishing a connection 
to SQL Server. The server was not found or was not accessible. Verify that the instance   
name is correct and that SQL Server is configured to allow remote connections. (provider: 
SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

我知道这是由于防火墙造成的,尽管网络管理员声称防火墙允许它通过(甚至说“你做错了”)

我能做些什么来看看它到底在哪里失败,看看它是否真的是防火墙并向他证明它是。 我使用的是机器的 IP,所以这不是 DNS 问题。 还有其他想法吗?

【问题讨论】:

  • 您如何从防火墙的另一端连接到 SQL Server - 您使用的是哪种连接字符串?
  • 使用 System.Data.SqlClient.SqlConnection 连接字符串看起来像(删除了私人信息)“数据源=0.0.0.0;初始目录=经销商;用户 ID=用户;密码=密码”
  • 你能从 DMZ 机器上 ping SQL Server 机器吗?你能从这台机器上telnet 0.0.0.0 1433(当然是正确的IP)吗?当然,我假设您的 SQL Server 已配置为在此处侦听端口 1433。
  • 我可以 ping sqlServer.. 但我无法 telnet 到它我收到一条错误消息,提示无法在端口 1433 上打开与主机的连接:连接失败。
  • 你能从防火墙内部的 1433 端口远程登录到 SQL 服务器吗?

标签: asp.net sql-server asp.net-mvc


【解决方案1】:

恕我直言,您的管理员告诉您您做错了是对的,假设您所说的“在防火墙之外”是指在您公司的网络之外。数据库服务器之类的东西不应该暴露给外部连接。

编辑:没关系,这是来自 DMZ 的连接。

所以我唯一能想到的就是尝试在端口 1433 上 telnet 到那台机器(登录到 Web 服务器时),看看你是否收到连接错误。您没有使用 SSPI,所以我认为安全性不是问题。

如果 telnet 失败,您可以将其提交给网络管理员,以证明问题出在防火墙。

【讨论】:

  • 网络服务器位于他所谓的 DMZ 中,它是必须从外部访问的面向公众的网站。 SQL Server 位于防火墙后面
  • 我认为网络服务器在防火墙之外 - 而 SQL Server 在防火墙内。
  • @twal,好的,所以这仍然在网络的范围内。很公平,我认为这类似于从外部连接的客户端之类的东西。
  • @kprobst 你的意思是 TCP 端口 1433(不是 433)。 telnet 1.2.3.4 1433 这可能是 serverfault.com 上最好的
【解决方案2】:

您使用的是命名实例吗?确保 SQL 浏览服务正在运行。

通常当您连接到本地服务器上的默认实例时,您使用“(本地)”。当它是命名实例时,您将使用“(本地)\InstanceName”。或者 (local) 被主机名或 IP 地址替换。

当您使用命名实例时,您可能会在尝试从远程服务器连接时遇到连接问题。

【讨论】:

  • 抱歉,我不确定您所说的命名实例是什么意思。所以不知道怎么回答。
  • 好吧,我从不使用本地。我总是连接到远程服务器。它不在同一台机器上。 SQLserver 位于网络上的另一台机器上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
  • 2011-04-18
  • 2022-07-06
相关资源
最近更新 更多