为什么我的程序发送'匿名IP数据包',我该如何阻止它?

时间:2011-02-04 16:09:57

标签: c++ curl network-programming ip packet

所以,我们今天得知,我们的一个客户端防火墙阻止了我们的HTTP请求,因为“[软件]正在向我们的防火墙(Microsoft TMG防火墙)发送匿名数据包,因此防火墙将数据包丢弃为匿名访问是[不]被允许。“

对于我们的连接代码,我们使用带有curl的c ++,如果需要,我们可以回退到IEDownloadToFile。我没有写原始代码,也不是网络程序员,所以我来这里寻求帮助。所以,我的问题是:什么是匿名数据包?我在curl做什么可能导致匿名数据包?我在哪里可以找到有关解决此问题的更多信息?谢谢!

3 个答案:

答案 0 :(得分:2)

他们的意思是您的应用必须验证with the firewall。该链接提供了有关TMG产品的大量信息。您的客户可能具有以下配置:

  

要求用户随时进行身份验证   他们要求Web访问。每个网站   会话需要身份验证

     

使用此方法时,请注意   以下内容:

     

禁用匿名Web访问。

     

Forefront TMG请求用户   凭证并在之前验证它们   它会检查请求   防火墙政策。如果用户失败了   验证,他们的访问请求是   拒绝。

     

此方法是根据网络定义的。   大多数非交互式客户端,例如   Windows Update客户端,不能   验证,因此被拒绝   访问。

因此,当用户打开他们的Web浏览器并尝试访问网页时,他们会弹出一个窗口,要求提供凭据,因为防火墙拦截了他们的Web请求并发送了自己的身份验证页面。当用户进行身份验证时,防火墙会传递Web流量。

您的自动应用不会通过防火墙进行身份验证,因此防火墙会丢弃数据包,您的流量会被归类为anonymous

抱歉,我不知道如何使您的应用程序通过防火墙进行身份验证的解决方案。如果您的应用转到特定网址,网站运营商可以将其列入白名单。

根据this page,您应该从curl获得错误407:需要代理身份验证。尝试将这些选项添加到curl初始化中,但仍然存在以交互方式询问用户网络凭据的问题:

CURLOPT_HTTPAUTH: add CURLAUTH_NTLM
CURLOPT_PROXYAUTH: add CURLAUTH_NTLM
set CURLOPT_FOLLOWLOCATION

答案 1 :(得分:1)

在标准网络用语中没有“匿名数据包”这样的东西。你的客户的防火墙正在制定条款,或者在收到消息之前,某个地方的某个地方存在误传。无论哪种方式,您都需要从客户端或防火墙的供应商或文档中获得澄清。

答案 2 :(得分:0)

我同意bdonlan。在http请求的上下文中,“匿名数据包”充其量是含糊不清的。也许他们的意思是没有推荐人代码?或者他们需要http身份验证?或者您需要建立会话密钥才能访问您请求的特定网址?您需要来自客户的实际技术细节。