我遇到一个问题,托管在 Web 服务器 ( www.example.com
) 上的网站在通过其公共 IP 地址访问时无法从其自己的网络访问,但它们是可从所有其他网络访问。
这是网络设置:
我有一台 TMG 2010 SP1 机器,位于由其他人管理的路由器后面(我无法访问),位于那路由器就是互联网。
“外部网络”路由器对 IP 地址进行 1:1 NAT,指向 TMG 盒上的相应私有 IP 地址。然后,TMG Edge 有一个 Web 代理规则,将请求(发往www.example.com
)转发到网络 B 上的 Web 服务器。
当您尝试www.example.com
通过其公共 IP 地址访问(托管在网络 B 上)时,会发生以下情况:
互联网 - HTTP 200 正常 外部 - HTTP 200 正常 网络 A-HTTP 200 OK 网络 B - 错误代码 10060:连接超时 网络 C - HTTP 200 OK
我看到流量到达 TMG 防火墙,但随后似乎丢失了。它不会将数据包转发到external network
(如果转发,它会直接发回)。Wireshark 显示数据包从网络 B 接口进入,但它从未离开 TMG。
请求后,http://www.example.com/
TMG 防火墙日志显示初始允许的出站请求,60 秒后显示:
- 连接尝试失败
- 来源网络:B网
- 目标网络:外部
- 网址:http://203.206.238.xxx(公共 IP 地址,不是我实际请求的 URL)
状态:10060 连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机没有响应而建立的连接失败。
我不知道问题出在哪里。我不知道是不是因为某种原因,它将公共 IP 地址代理为 URL(IP 地址有代理规则,但仅适用于 FQDN),还是完全是其他原因。
答案1
我确信这与 TMG 的设计方式有关。根据:
http://technet.microsoft.com/en-us/library/cc995133.aspx
绕过 Forefront TMG 的防火墙客户端请求
Microsoft Forefront Threat Management Gateway 旨在处理不同网络之间的通信。通常,特定网络上的客户端不应穿越 Forefront TMG 来访问位于同一网络中的主机。相反,应使用直接访问。
直接访问使防火墙客户端计算机能够执行以下操作:绕过 Microsoft 防火墙客户端配置并直接连接到资源。发出绕过 Web 代理过滤器的 Web 代理请求。
这使得防火墙客户端无需通过 Forefront TMG 即可访问位于其本地网络中的资源,并且允许客户端无需通过 Forefront TMG 作为代理即可发出 Web 请求。
这也涵盖了 TMG 在“单适配器设置”中的重大限制,这与 B 连接到 Web 服务器的方式类似:
答案2
我想到两件事:
- TMG 上的发布规则无法解析托管服务器的内部服务器名称。防火墙策略 >> 属性 >> 收件人 >> 关于计算机名称或 IP 地址的第二个文本字段。
- 网络主机需要完整的 URL,而不是内部名称(同一位置,下一个复选框)
网络服务器日志上有什么内容吗?