如何配置 Windows 防火墙以允许特定计算机连接到 SQL Server 实例?

如何配置 Windows 防火墙以允许特定计算机连接到 SQL Server 实例?

我试图只允许我的域中的特定计算机连接到 SQL Server 实例,但我似乎无意中阻止了所有计算机的连接。

当我进入托管数据库的服务器配置防火墙时,在设置了哪些计算机可以访问实例后,防火墙会阻止所有计算机。将规则恢复到原始状态后,防火墙便可以正常工作。

在防火墙规则上,我设置了以下内容:

  • 常规选项卡
    • 操作:如果连接安全,则允许连接。
  • 远程计算机
    • 仅允许来自这些计算机的连接:已选中
    • 下面的对话框中填写的是我想要的计算机名:DOMAIN\PC1$,DOMAIN\PC2$等等。

设置此规则会导致与服务器的连接在大约 60 秒后超时,然后返回通用的“服务器不存在或访问被拒绝”消息。

我需要使用哪些正确的设置?

答案1

您可以使用Windows 服务器 2012内置防火墙,发布简单适用Netsh AdvFirewall 防火墙命令从命令提示符(或批处理脚本)以管理员身份运行

“脚本和命令”下方有“解释”...


解释

本质上你可以允许这样的入站连接:

  1. TCP 端口号SQL Server 实例正在侦听服务器

    • [ localport = { any | Integer | rpc | rpc-epmap | teredo | [ ,... ] } ]

      • 指定与该规则匹配的具有匹配IP端口号的网络数据包。本地端口与出站网络数据包的源端口字段进行比较。 与入站网络数据包的目标端口字段进行比较。

        • 整数. 指定确切的端口号必须存在才能使数据包与规则匹配。端口值可以是单独的数字从 0 到 65535一个范围,例如 5000-5020或以逗号分隔的数字和范围列表。

      可以指定多个条目本地端口用逗号分隔。请勿包含任何空格。

      如果本地端口没有指定,默认值为任意

  2. 仅允许此 TCP 端口上的连接来自特定(或一组)IP 地址

    • [ localip = { Addresses } ]

      • 指定具有匹配 IP 地址的网络数据包与此规则匹配。localip 与入站网络数据包的目标 IP 地址字段进行比较。它与出站网络数据包的源 IP 地址字段进行比较。

        • IP地址。仅匹配精确的 IPv4或者IPv6地址。

      多次入境可以指定为本地IP用逗号分隔。请勿包含任何空格。

      如果本地IP没有指定,默认值为任意


脚本和命令

命令行

netsh advfirewall firewall add rule name="Inbound 1433 Access Per IP Address" dir=in  protocol=tcp  action=allow localip=192.168.1.10,192.168.1.20,192.168.1.30

批处理脚本允许

ECHO ON
SET name="Inbound 1433 Access Per IP Address"
SET dir=in 
SET protocol=tcp 
SET action=allow 
SET localport=1433 
SET localip=192.168.1.1,192.168.1.2,192.168.1.1

netsh advfirewall firewall add rule name=%name% dir=%dir% protocol=%protocol% action=%action% localip=%localip%

删除规则

netsh advfirewall firewall delete rule name="Inbound 1433 Access Per IP Address"

更多资源

相关内容