我试图只允许我的域上的特定计算机连接到SQL Server实例,但我似乎无意中阻止所有计算机连接。
当我进入在托pipe数据库的服务器上configuration防火墙时,在设置了哪些计算机后,我希望能够访问该实例。 它阻止了所有这些。 在将规则设置回原来的状态之后,它就起作用了。
在防火墙规则上,我设置了以下内容:
设置此规则会导致连接到服务器大约60秒后超时,然后返回通用的“服务器不存在或访问被拒绝”消息。
什么是我需要使用的正确设置?
您可以使用Windows Server 2012内置防火墙执行此操作,并从以pipe理员身份运行的命令提示符(或批处理脚本)发出简单且适用的Netsh AdvFirewall防火墙命令 。
基本上你会允许入站连接,如下所示:
通过TCP端口号 SQL Server实例正在服务器上侦听
[ localport = { any | Integer | rpc | rpc-epmap | teredo | [ ,... ] } ]
指定具有与此规则匹配的IP端口号匹配的networking数据包。 将本地端口与出站networking数据包的源端口字段进行比较。 将其与入站networking数据包的“目标端口”字段进行比较。
- 整数 。 指定数据包必须符合规则的确切端口号 。 端口值可以是从0到65535的单个数字, 范围(如5000-5020 ) 或逗号分隔的数字和范围列表。
可以通过用逗号分隔多个条目来指定localport 。 不要包含任何空格。
如果没有指定localport ,则默认为any 。
通过仅允许来自特定(或一组)IP地址的该TCP端口上的连接,
[ localip = { Addresses } ]
指定具有匹配的IP地址的networking数据包符合此规则。 将localip与入站networking数据包的目标IP地址字段进行比较。 将其与出站networking数据包的源IP地址字段进行比较。
- IP地址。 只匹配确切的 IPv4或IPv6地址。
可以通过用逗号分隔多个条目来指定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"