【问题标题】:IIS7/2008 Sql/Service Connection IssuesIIS7/2008 Sql/服务连接问题
【发布时间】:2010-10-24 11:54:15
【问题描述】:

在尝试让 2008 服务器连接到 sql 服务器时,我注意到 2008 IP 堆栈发生了变化,这让我有点困惑。我正在寻找一种操作系统方式来覆盖它,或者在 .NET 中寻找一种编程方式来覆盖它。

为了这个论点,假设我有一个具有多个 IP 地址的 Web 服务器来服务器多个站点,连接到防火墙后面的多个资源(Web 服务、sql 等)。

SERVER IP:   10.10.10.1
SITE1 IP:    10.10.10.10
SITE2 IP:    10.10.10.11

SQL SERVER:  10.10.10.2
WEB SERVICE: 10.10.10.15

防火墙自然设置为拒绝所有,只允许需要的。换句话说:

ALLOW FROM 10.10.10.1 TO 10.10.10.2
ALLOW FROM 10.10.10.1 TO 10.10.10.15
DENY ALL

在 Windows 2008 之前,Windows 2000/2003 在请求网络资源时总是使用机器的基础 IP (10.10.10.1)。因此,满足防火墙规则并授予访问权限。在 2008 年,它似乎选择了最接近的匹配:

连接到 10.10.10.2 来自 IP 10.10.10.1。防火墙很高兴。 连接到 10.10.10.15 来自 IP 10.10.10.11,防火墙拒绝连接。

从 NIC 中删除所有虚拟 IPS 当然可以让一切正常,因为每个都将来自 10.10.10.1

现在,我稍微明白了,如果这台机器有两个 NIC,这是有道理的,因为实现 RFC3484 和 IPv6 (http://support.microsoft.com/kb/968920) 和强/弱主机模型开始发挥作用,但对于我的生活来说,我不明白为什么这会改变 IP 与单个 NIC 卡的工作方式。

我有一个支持案例打开,但我无处可去。我听到“只需打开防火墙以允许来自 10.10.10.11 的连接”的喃喃自语。那是不切实际的。这意味着为 Windows 2008 的多宿主单网卡机器上的每个 ip 地址添加一个允许规则。我不敢相信只为 2008 年代的 ip 堆栈在防火墙中戳更多漏洞是一个很好的答案。

有没有办法在 2008 年在机器级别禁用此“功能”? 有没有办法在机器级别在 .NET 中禁用它? 有没有办法禁用每个连接(SqlConnection、WebClient)?

【问题讨论】:

  • 为了澄清以上内容:我有一张网卡。这意味着一个指标。一个网络掩码。我没有多个网卡。

标签: .net windows-server-2008 tcp


【解决方案1】:

您看到了自动路由度量计算的副作用。当多个地址具有到一个地址的路由并且启用了自动度量(在 TCP 下的高级...设置中)时,Windows 将使用尝试并预测到该地址的“最快”路径。

我怀疑您的两个接口(虚拟或其他)具有相似的路由指标,因此选择是不确定的。您可以通过在您的 .10/.11 地址上设置更高的路由度量来鼓励它使用您的“后端”地址。禁用自动指标后,您还可以使用 10.10.10.1 地址指定显式静态路由。

有关 TechNet 的更多详细信息 - 在页面上搜索自动指标。

http://technet.microsoft.com/en-us/library/bb727001.aspx

无论好坏。如果两个接口都通告具有相同度量的路径 - 任何一个接口都可以获胜。过去的行为是不确定的 - 它已经改变了。

最好的方法是在命令行中使用route 来创建一个成本较低或最低的静态持久 TCP 路由,介于 0.1 和 .2 之间。交替增加 .14 和 .15 地址上每条路线的成本。我会使用前者,因为维护更少,对其他通信的副作用也更少。

【讨论】:

  • 我只有一个网卡/接口。只有一个指标。除非您可以在单个 NIC 上为每个 IP 地址设置指标。
  • 还有静态路由?玉。不是为了喂巨魔,但在 2000/2003 年,事情只是花花公子,而且我在 *nix 多宿主单网卡 *nix 机器上没有这个问题。这就是令人沮丧的地方......使用单个 NIC,堆栈没有理由做任何与以往不同的事情。
  • 是的,我很确定这就是您所看到的 - 如果您转储路由表,我怀疑两个接口/路由都在表中并且指标是相同的。脱节的网络场景非常相似 - 他们的解决方案是 a)在您想要抑制的接口上没有默认网关,b)持久静态路由
  • @claco 路由表不是关于 NICS 的数量,而是更多关于默认网关发现的地址。因为您有一个 NIC - 您的地址共享相同的默认网关 - 它们具有相同的指标。无论好坏。如果两个接口都通告具有相同度量的路径 - 任何一个接口都可以获胜。你过去依赖于这种不确定的行为——它已经改变了。您可能会在静态路由上产生噪音,但您几乎没有其他选择。
  • 是的,就 TCP 路由表而言,每个地址都是一个逻辑接口。 (路线打印,你会明白我的意思)。我猜你有两个选择——要么设置一个在 .1 和 .2 之间具有较低指标的持久路由,TCP 总是使用成本最低的路由,或者增加 .14/.15 路由的成本——前者最容易定义和管理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
相关资源
最近更新 更多