sql-server – 多实例服务器上的SQL Server Reporting Services(SSRS)IP处理

TL;博士

我有一个SQL Server实例(SQLSERVER01-i01),在多实例SQL Server上有一个专用的IP地址和端口(162.xxx.xxx.51:1433)(Windows Server上的每个SQL Server实例都有自己的IP地址) )它们都在一台Windows服务器上运行(SQLSERVER01 / 162.xxx.xxx.50).

我还有一个专用的Reporting Services实例(SQLSERVERRS01-i01),它有自己的IP地址和端口(168.xxx.xxx.71:1433),它运行在具有自己IP地址的不同Windows服务器(SQLSERVERRS01)上(168 .xxx.xxx.70).

专用Reporting Services服务器具有应用程序APPL1,可通过http:// SQLSERVERRS01-i01:80 / Reports_APPL1或通过http:// SQLSERVERRS01:80 / Reports_APPL1访问.

由于主机标头的Reporting Services配置中的*:80配置,SSRS将接收这两个请求.

我们在每个IP范围之间有多个防火墙,这意味着我们必须为每个IP到IP或IP范围到IP连接申请特定规则.但是,当涉及两个服务器时,安全性要求它始终必须是防火墙中的IP到IP规则.

(根据屏幕截图进一步下调)

当Reporting Services服务器连接到SQL Server实例(在162.xxx.xxx.51上)以检索数据时,它是否始终与Windows服务器的基础IP地址建立连接(168.xxx.xxx.70 /首选)SSRS正在运行,或者它(有时)是否使用SQL Server Reporting Services实例的IP地址(168.xxx.xxx.71)?

这与使用IP到IP方法的防火墙规则的配置相关.我将要么申请通过端口1433或168.xxx.xxx.70到162.xxx.xxx.51连接定义168.xxx.xxx.71到162.xxx.xxx.51连接的规则港口1433.

目前我会申请两个防火墙规则.

奖金问题

是否可以将Reporting Services服务器配置为与专用IP地址通信?在这种情况下使用168.xxx.xxx.71地址.

答案我不是在寻找

我不是在寻求如何优化防火墙配置或如何为我们的网络实现分区概念的建议. (它已经在管道中).另外,我对反馈建议在同一台服务器上安装SQL Server和SSRS以解决我的问题不感兴趣.我知道并且很乐意这样做但是对于需要与SSRS组件一起运行的第三方软件.

有用

如果我在SSRS和SQL Server实例之间应用两个防火墙规则,我的配置是有效的.

168.xxx.xxx.71 --> 162.xxx.xxx.51 : 1433
168.xxx.xxx.70 --> 162.xxx.xxx.51 : 1433

我希望通过一个防火墙规则安全地减少并确保一切都能正常工作. (见下面的截图)
编辑:到目前为止我读过的文章暗示我只需要第二条规则,但不能保证.

我已经咨询过的文章

> Security Considerations for a SQL Server Installation
基础文章.
> Configure the Windows Firewall to Allow SQL Server Access
本文指向有关SQL Server防火墙配置的所有其他文章.
> Configure a Windows Firewall for Database Engine Access
没有使用IP地址.
> Configure a Firewall for Report Server Access
这篇文章非常有趣,因为它注意到:

If you are accessing SQL Server relational databases on external computers,or if the report server database is on an external SQL Server instance,you must open port 1433 and 1434 on the external computer.

…但仍然没有关于IP配置/设置/默认值的说法.

> Source IP address selection on a Multi-Homed Windows Computer
> The functionality for source IP address selection in Windows Server 2008 and in Windows Vista differs from the corresponding functionality in earlier versions of Windows

第5条和第5条我们在James(dba.se)之前向我提供了6个.他们目前似乎是最合适的答案.然而,我有点怀疑一篇文章提到使用多个NIC,而我只有一个NIC分配了多个IP. Tom(dba.se)也提出了建议和一般性评论.

为什么在这里而不是在dba.stackexchange.com

由于问题的复杂性,我最初不愿意在serverfault.com上发布这个问题.这个问题既有SQL Server特定的倾向,也有特定于Windows Server的倾向.最终我决定在这里发布它,因为我认为这是一个Windows Server IP处理的东西(丢失更好的单词).

如果主持人认为我会在dba.stackexchange.com上得到更好的回复,那么请在那里移动问题.

长解释

在我们的环境中,我们拥有托管多个SQL Server实例和多个IP设置的Windows服务器.我们添加了复杂的防火墙配置,专用的SQL Server Reporting Services(SSRS)服务器,并提出了一个看起来像这样的环境:

基本上我们可以在一个Windows服务器上运行多达15个(15个)SQL Server实例.这对于专用的Reporting Services实例也是有效的.

防火墙规则

目前,不同的IP范围未配置为区域,这意味着我们必须将每个防火墙规则独立配置为IP到IP或IP范围到IP规则.当涉及两个服务器时,安全性要求它始终必须是IP到IP规则.每个SQL Server实例都有自己的一套规则,用于通信中涉及的防火墙,这是服务器到服务器或客户端到服务器的链接.申请防火墙规则目前需要四到六周的等待期.减少防火墙规则的数量将减少网络安全团队的压力.

SQL Server实例IP配置

通过修改SQL Server配置管理器实用程序中的某些设置,可以将SQL Server实例配置为仅在专用IP和端口上进行选取.第一步是启动SQL Server配置管理器,在左侧部分选择SQL Server网络配置| InstanceName的协议.在左侧窗格中,左键单击TCP / IP协议名称并启用协议.然后再次左键单击该协议,并打开“TCP / IP属性”窗口.

然后确保在协议寄存器中设置以下设置:

Enabled           : Yes
Listen All        : No

在IP地址寄存器中,检查以下有关IP地址的设置(例如,对于此示例中的Reporting Services服务器,它将适用于168.xxx.xxx.71)

Active            : Yes
Enabled           : Yes
IP Address        : 168.xxx.xxx.71
TCP Dynamic Ports : 
TCP Port          : 1433

Note: It is important that the setting for TCP Dynamic Ports is empty not just a 0 (zero).

现在您有一个SQL Server实例,它只使用端口1433在168.xxx.xxx.71上获取数据库连接.

SQL Server实例摘要

SQL Server Browser服务未运行,并且每个单独的SQL Server实例都配置为仅在端口1433上使用其自己的IP地址.给定一个名为GENERAL的SQL Server实例,一个主机名为SQLSERVER01且两个IP地址为162.xxx的Windows服务器.xxx.50(主机)和162.xxx.xxx.51(SQL实例)我将得到以下配置项:

Windows Server      : SQLSERVER01 
Windows Server IP   : 162.xxx.xxx.50
SQL Server Instance : SQLSERVER01-i01 (DNS A record)
SQL Server Instance : GENERAL (can only be used on the host itself)
SQL Server IP/Port  : 162.xxx.xxx.51:1433

SQL Server不会接收162.xxx.xxx.50:1433的请求,因为没有SQL Server实例配置为在SQL Server配置管理器实用程序中侦听此IP地址. SQL Server将仅接收对SQLSERVER01-i01(在端口1433上)或162.xxx.xxx.51,1433的请求.

SQL Server Reporting Services实例摘要

SQL Server Browser服务未运行,并且每个单独的SQL Server Reporting Services实例都配置为仅在端口1433上使用其自己的IP地址.给定一个名为GENERAL的SQL Server Reporting Services实例,一个主机名为SQLSERVERRS01的Windows服务器,一个应用程序在名为APPL1的SSRS和两个IP地址168.xxx.xxx.70(主机)和168.xxx.xxx.71(SQL实例)上,我将得到以下配置项:

Windows Server      : SQLSERVERRS01 
Windows Server IP   : 168.xxx.xxx.70
SQL Server Instance : SQLSERVERRS01-i01 (DNS A record)
SQL Server Instance : GENERAL (can only be used on the host itself)
SQL Server IP/Port  : 168.xxx.xxx.71:1433
Reporting Services  : http://sqlserverrs01-i01/Reports_APPL1
                      http://sqlserverrs01/Reports_APPL1

SQL Server不会获取168.xxx.xxx.70:1433的请求,因为没有SQL Server实例配置为在SQL Server配置管理器实用程序中侦听此IP地址. SQL Server将仅接收对SQLSERVER01-i01(在端口1433上)或162.xxx.xxx.71,1433的请求.

由于主机标头的Reporting Services配置中的*:80配置,SSRS将接收http://sqlserverrs01-i01/Reports_APPL1http://sqlserverrs01/Reports_APPL1的请求.

我希望我能为愿意花时间写答案的人提供足够的信息,我期待着您的技术细节和链接.

Written with 070011 and later manually modified to be stackexchange compatible.

历史

Edit 1:初始版本
Edit 2:为便于阅读而重新格式化.移动说明SF / DB向下.添加了Windows Server的主机名
Edit 3:修复了防火墙规则列表中的错误IP地址.
Edit 4:在某些地方将托管这个词改为运行(这是一个非虚拟化的环境).一次性添加IP地址
Edit 5:添加了我已经查阅过的文章列表并引用了支持
Edit 6:清理历史部分

解决方法

介绍

根据我在初期研究中发现的各种文件以及链接和讨论中提供的文件,我提出了一个可靠,可靠,合规的解决方案.

RFC 3484

进一步向下进行二进制比较,并且应用的规则根据RFC 3484,其显然也对IPv4地址有效.

RFC 3484也在规则8之后发布

Rule 8 may be superseded if the implementation has other means of
choosing among source addresses.  For example,if the implementation
somehow knows which source address will result in the "best"
communications performance.

多宿主Windows计算机上的源IP地址选择

现在并非RFC 3484中的所有规则都适用于IPv4地址. Microsoft博客文章Source IP address selection on a Multi-Homed Windows Computer解释了适用的规则.

Windows Vista / Windows Server 2008行为下方有一小部分内容如下:

Similar to XP when if a program doesn’t specify a source IP,the stack references the target IP address,and then examines the entire IP route table so that it can choose the best network adapter over which to send the packet. After the network adapter has been chosen,the stack uses the address selection process defined in RFC 3484 and uses that IP address as the source IP address for the outbound packets.

看到我在SQL / SSRS实例中只有一个NIC,第一部分是没有意义的. Windows Server将始终选择唯一可用的NIC.

到目前为止,将RFC 3484与Microsoft Blog相结合,导致两个IP地址都是源IP地址的有效候选者.在答案中进一步解释.

电缆专家

来自Cable Guy The Cable Guy Strong and Weak Host Models的文章详细介绍了IP选择如何在强主机发送和接收环境以及弱主机发送和接收环境中工作.这是一个很好的附加读取,但不再说明如何选择源IP.该文章涉及已知的RFC 3484.

解释无法解释的

为了解释该解决方案,我们首先必须将所讨论的IP地址转换为它们的二进制等价物.看来我在我的问题中没有提供网关,我将假设两个值.

源IP地址和二进制表示法

以下是所涉及的IP地址的转换二进制值的列表.

10101000.00000001.00000001.01000110   168.xxx.xxx.070/128   Windows Server
10101000.00000001.00000001.01000111   168.xxx.xxx.071/128   SQL Server / SSRS Instance
10101000.00000001.00000001.00000010   168.xxx.xxx.002/128   Gateway (Assumption 1)
10101000.00000001.00000001.01100010   168.xxx.xxx.100/128   Gateway (Assumption 2)
11111111.11111111.11111111.10000000   255.255.255.128/025   Subnet Mask / CIDR

目标IP地址和二进制表示法

10101000.00000000.00000000.00110011   168.xxx.xxx.051/128   SQL Server

示例1:网关IP低于SQL / SSRS实例IP

在此示例中,我将假设网关的IP地址低于SQL Server / SSRS实例的IP地址,即168.001.001.002.

如果比较Windows Server和SQL Server / SSRS实例的二进制地址,则具有以下内容:

SQL/SSRS Instance IP
10101000.00000001.00000001.00000010 (Gateway Assumption 1)
10101000.00000001.00000001.01000111 (SQL/SSRS)
-----------------------------------
xxxxxxxx.xxxxxxxx.xxxxxxxx.x------- (x=matching high order bits)

Window Server IP
10101000.00000001.00000001.00000010 (Gateway Assumption 1)
10101000.00000001.00000001.01000110 (Windows)
-----------------------------------
xxxxxxxx.xxxxxxxx.xxxxxxxx.x------- (x=matching high order bits)

结果例1

在该示例中,两个IP地址具有相同数量的匹配高阶位(或最长匹配前缀).
到目前为止,http.sys进程将使用任一IP地址进行传出通信.

示例2:网关IP高于SQL / SSRS实例IP

在此示例中,我将假设网关的IP地址高于SQL Server / SSRS实例的IP地址,即168.001.001.100.

如果比较Windows Server和SQL Server / SSRS实例的二进制地址,则具有以下内容:

SQL/SSRS Instance IP
10101000.00000001.00000001.00000010 (Gateway Assumption 2)
10101000.00000001.00000001.01100010 (SQL/SSRS)
-----------------------------------
xxxxxxxx.xxxxxxxx.xxxxxxxx.x------- (x=matching high order bits)

Windows Server IP
10101000.00000001.00000001.00000010 (Gateway Assumption 2)
10101000.00000001.00000001.01100010 (Windows)
-----------------------------------
xxxxxxxx.xxxxxxxx.xxxxxxxx.x------- (x=matching high order bits)

结果例2

即使网关的IP地址现在高于Windows服务器的IP地址和SQL / SSRS实例,匹配的高阶位(或最长匹配前缀)的数量仍然相同.到目前为止,http.sys进程将使用任一IP地址进行传出通信.

迄今为止的调查结果摘要

到目前为止,无法确定http.sys进程将在Windows服务器(.70)上的SQL / SSRS实例(.71)上运行的传出通信使用哪个IP地址.

“当你消除了不可能的事物,无论剩下什么,无论多么不可能,都必须是真理” – 夏洛克福尔摩斯

在某些情况下,源IP地址绝对可以通过前面提到的RFC和Microsoft知识进行定位/选择/定义.但是,如果IP地址彼此太靠近并且靠近网关,那么这一切都归功于运气.或者是吗?

看到我处于制定(防火墙)规则的位置,微软有……

implementation (that) has other means of choosing among source addresses. For example,if the implementation somehow knows which source address will result in the “best” communications performance.

…然后,我需要做的就是确定http.sys进程的IP地址,即只创建一个具有所需IP地址的防火墙规则.

怎么了

>我将防火墙规则从168.xxx.xxx.71定义为168.xxx.xxx.51:1433
> SQL / SSRS实例的http.sys组件符合RFC 3484,并根据定义的规则选择源IP
> IP地址168.xxx.xxx.71(在NIC1上)被确定为通过端口1433到达IP地址168.xxx.xxx.51的源IP地址,因此被分配给所有传出数据包

优点

>我绝不干涉RFC 3484的实现
>我绝不是在处理路由或ARP配置
>我遵守RFC 3484和Microsoft的实现
>我没有破解任何注册表设置或系统配置
>我有一个防火墙规则

验证

我还没有从防火墙规则中删除IP地址,但我相信它将按设计/定义的方式工作.随后将摘要.

历史

Edit 1初始邮报
Edit 2清理了答案,添加了历史部分

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


本篇内容主要讲解“sqlalchemy的常用数据类型怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sqlalche...
今天小编给大家分享一下sqlServer实现分页查询的方式有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家
这篇文章主要介绍“sqlmap之osshell怎么使用”,在日常操作中,相信很多人在sqlmap之osshell怎么使用问题上存在疑惑,小编查阅了各式资料,整理出
本篇内容介绍了“SQL注入的知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧...
1. mssql权限sa权限:数据库操作,文件管理,命令执行,注册表读取等system。是mssql的最高权限db权限:文件管理,数据库操作等 users-administratorspublic权限:数据库操作 guest-users2、sql server注入执行命令查
sql执行计划如何查看?在SPL庞大的数据中我们不知道如何查看实际数据库中发生了什么事情,有必要定期进行查询优化和索引否则会影响我们后期的SQL的查询速度。那么针对这样的问题我们必须要知道SQL执行的计划,在本文中winwin7小编给大家分享下SQL执
SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点应用非常广泛。不过在使用中,我们会遇到非常多的错误,面对这么庞大的数据库环境,当然会有精确的错误代码的对照季,下面小编分享的
SQL Server本地账户无法登陆出现错误提示:error:40-Could not open a connenction to SQL Server的问题很常见,对于初学者来说可能不知道如何解决,一起来看看下面的解决方案。解决步骤如下:1、这种情况需要开启 SQL Server service
微软推出的SQL2008是一款非常好用的数据库软件,它稳定、功能强大,为众多企业提供了最佳的数据库解决方案,那么我们如何在Windows中安装它呢,一些朋友对SQL Server 2008的安装过程还不是很熟悉,下面就一起来看看SQL Server 2008详细安装图解...
本页概要如果您使用的是 SQL Server 2005备份和还原Sp_detach_db 和 Sp_attach_db 存储过程关于排序规则的说明导入和导出数据(在 SQL Server 数据库之间复
DBCC CHECKIDENT 检查指定表的当前标识值,如有必要,还对标识值进行更正。 语法 DBCC CHECKIDENT ( 'table_name' [ , { NORESEED
这里对 SQL Server 字符串函数进行分门别类地列出,便于查阅和记忆,相信大家都在其它方面有高深的编程基础,从字面上来说大家都知道这些函数的意义,就不对这些函数作过多的解释了,主要谈些经验,具体
查询及删除重复记录的方法 1、查找表(people)中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select*frompeoplewherepeopleIdin(selectpe
微软发SQL Server 2008第二个CTP预览版from: http://news.csdn.net/n/20070807/107158.html8月7日消息,微软公司本周发布了SQL Serv
症状当您将数据库备份恢复到另一台服务器时,可能会遇到孤立用户的问题。SQL Server 联机丛书中的孤立用户疑难解答主题中没有讲述解决此问题的具体步骤。本文介绍了如何解决孤立用户问题。更多信息虽然术
当登录SQL Server 2005时可能碰到错误: 'No Process is on the Other End of the Pipe'。解决方法:(1)Open up SQL
概要本文描述如何映射标准登录和集成登录来解决在运行 SQL Server 的服务器之间移动数据库时的权限问题。更多信息当您将数据库从一个运行 SQL Server 的服务器移到另一个运行 SQL Se
----------------------------------------问题:该用户与可信的SQL SERVER 连接无关联使用sa用户或自建用户使用“SQL SERVER 身份认证”连接数据
更新日期: 2007 年 5 月 20 日 使用下表可以确定各种版本的 Microsoft SQL Server 2005 支持哪些功能。有关 SQL Server 2005 Enterprise E
当从Excel导入数据到Sql Sever中,可能会出现以下问题:
对于指定的缓冲区大小而言,源列的数据太大