这Microsoft 网站状态
必须将防火墙配置为允许端口 1433 传入(或 SQL Server 在 TCP/IP 上侦听的端口号)以及端口 1024 至 65535 传出。
这是否意味着需要打开 1024 到 65535 之间的所有防火墙端口以传输出站流量?
答案1
我使用过的所有基于路由器的防火墙都配置为
- 允许内部发起到任何外部端口号的 TCP 连接。
- 允许回复任何有效的已建立连接。
后者是“状态包检测”的一部分。路由器/防火墙会跟踪活动 TCP 连接的状态。
因此通常您不必明确允许对新打开的入站端口的回复。
例如,当我配置路由器以允许 SSH 的入站流量到目标端口 22 时,我不必同时指定有关回复的任何其他规则(从源端口 22 到任何目的端口#)。
答案2
入站,您可以最低限度地启动,但我发现仅使用这些端口似乎不起作用。我总是必须打开这些入站:
TCP 1433、TCP 1434、TCP 1444、UDP 1434
至于出站,我不是 100%确定,但我会尝试这个:
进入
SQL Server 配置管理器(不是 SQL Server Management Studio)>SQL Server 网络配置>MSSQLSERVER 协议>TCP/IP>属性>IP 地址选项卡
并设置动态端口。请确保留出一个范围以允许多个连接,因为每个端口可能只有一个连接。
答案3
如果我是一个程序,并且要连接到另一台计算机,我确实需要一个自己的端口。我创建一个套接字,然后内核必须选择一个。通常,操作系统会从称为临时端口范围。现在客户端有了端口,可以连接到某个地方了。对我来说,这看起来像是配置建议你做的事情——告诉防火墙允许临时端口范围进入互联网。
如果您已经有客户端可以出站(Internet Explorer、Firefox、P2P 客户端等),那么您可能已经打开了这个范围。SQL Server 并没有要求什么特别的东西。与入站端口不同,这不是一个特殊的“SQL Server 范围”,如果您的其他 Internet 应用程序可以出站,则它已经打开了。您可能会发现您的防火墙有一个配置允许这些应用程序出站,或者所有内容都可以出站。它可能不是 1024-65535,因为这里的建议似乎不匹配Windows 的实际范围。
我更想知道为什么你的 SQL Server 需要连接到 Internet。除非你有特定的原因,否则这对我来说似乎很奇怪。你希望尽可能少地将东西连接到 Internet 上的随机位置,至少在你不知道原因的情况下不要这样做。