【发布时间】: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