【问题标题】:Windows Firewall dropping PacketsWindows 防火墙丢弃数据包
【发布时间】:2017-09-07 21:22:29
【问题描述】:

我在尝试配置高可用性远程桌面连接代理方案时遇到了一些奇怪的行为。我正在使用 Windows 2016 和 SQL Server 2016 客户端连接工具 (SQL Server Native Client 11.0)。

在配置过程中,它需要一个 SQL Server 连接字符串,我已经三次检查它是否正确。配置时,它找不到 SQL Server。我已将问题隔离到 Windows 防火墙,这是我发现的:

防火墙服务已禁用:有效。
防火墙服务已启用,但防火墙已关闭:不起作用。
防火墙服务已启用,防火墙已打开:不起作用。
启用防火墙服务,打开防火墙,允许所有流量的例外:不起作用。

这似乎也只影响使用命名的 SQL 实例。如果我使用默认实例,则没有问题。在防火墙上启用日志记录后,我可以看到以下内容:

2017-09-06 13:28:01 DROP UDP 10.59.128.18 10.59.28.217 49577 1434 0 - - - - - - - 发送

如果我在尝试此操作时在 Microsoft 网络监视器上运行捕获,它不会显示端口 1434 上的任何流量,且防火墙已打开并配置了例外。如果我禁用防火墙服务,网络监视器会显示 1434 上的流量。

我做的另一项测试是将防火墙重置为默认值并验证没有发生拒绝。正如预期的那样,我注意到日志中有大量丢弃的数据包。添加允许所有规则后,所有丢弃的数据包都将被允许,但通过 1434 的数据包除外。我找到的每一篇关于此的文章都解释了在 Windows 防火墙中打开端口,这已经完成。

我还尝试了使用 SQL 实例当前分配的动态端口的连接字符串,它有效,但这不是解决方案,因为动态端口会改变。

【问题讨论】:

  • 对于你的防火墙例外,你放了什么例外?您是否将其设置为允许所有流量到端口 1434?是否启用了 SQL Server 浏览服务?
  • 1434 是 SQL Server 浏览器服务的端口,它是解析命名实例的端口所必需的,因此这种流量是预期的(并且即使浏览器也可以预期默认实例也可以正常工作无法联系服务)。是否启用了到端口 1434 的 UDP 流量?
  • 我尝试了所有端口以及仅 1434。Windows 服务器上没有 SQL Server 浏览器,因为它没有安装 SQL,只有连接工具。问题似乎在于请求如何与防火墙交互,并且根据我的网络监控数据包甚至没有到达 SQL 服务器。
  • 托管 SQL Server 的机器需要运行此服务并打开入站端口,而不是连接到它的机器。如果只是客户端机器阻塞了数据包,那么检查 outbound 连接的规则。
  • 它看起来像是客户端机器,因为网络监视器没有显示 1434 上的任何出站流量。上面提到的规则是出站连接规则。

标签: sql-server windows-firewall


【解决方案1】:

我通过在客户端机器上禁用 SQL Native Client 上的命名管道协议解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-20
    • 2013-07-25
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    相关资源
    最近更新 更多