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

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

当我进入在托pipe数据库的服务器上configuration防火墙时,在设置了哪些计算机后,我希望能够访问该实例。 它阻止了所有这些。 在将规则设置回原来的状态之后,它就起作用了。

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

  • 常规选项卡
    • 行动:允许连接,如果它是安全的。
  • 远程计算机
    • 只允许来自这些电脑的连接:检查
    • 在下面的对话框中填写我想要的计算机名称:DOMAIN \ PC1 $,DOMAIN \ PC2 $等

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

什么是我需要使用的正确设置?

您可以使用Windows Server 2012内置防火墙执行此操作,并从以pipe理员身份运行的命令提示符(或批处理脚本)发出简单且适用的Netsh AdvFirewall防火墙命令 。

请参阅说明”下的“脚本和命令 ”。 。 。


说明

基本上你会允许入站连接,如下所示:

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

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

      • 指定具有与此规则匹配的IP端口号匹配的networking数据包。 将本地端口与出站networking数据包的源端口字段进行比较。 将其与入站networking数据包的“目标端口”字段进行比较。

        • 整数 指定数据包必须符合规则的确切端口号 端口值可以是从0到65535的单个数字, 范围(如5000-5020或逗号分隔的数字和范围列表。

      可以通过用逗号分隔多个条目来指定localport 不要包含任何空格。

      如果没有指定localport ,则默认为any

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

    • [ localip = { Addresses } ]

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

        • IP地址。 只匹配确切的 IPv4IPv6地址。

      可以通过用逗号分隔多个条目来指定localip 不要包含任何空格。

      如果没有指定localip ,则默认为任何


脚本和命令

命令行

 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" 

更多资源

  • Netsh AdvFirewall防火墙命令