Web服务(ASP.NET)中“REMOTE_ADDR”的奇怪客户端IP地址

时间:2011-12-30 00:40:10

标签: asp.net vb.net web-services ip-address

我为我的项目运行服务器。客户端在启动时调用作为Web服务运行的更新检查功能。这些请求将记录到文件中。

我使用以下函数登录文件:

Public Sub Log(ByVal Message As String, ByVal Level As LogEntryLevel, ByVal Additional As Boolean)
   Dim base As String = "C:\SERVER\log\"
   Dim fileName As String = Date.Now.ToString("dd-MM-yyyy") & ".log"
   Dim newString As String = ""
   If Not Additional Then
      If System.IO.File.Exists(base + fileName) Then newString &= vbNewLine
      newString &= Date.Now.ToString("[dd/MM/yyyy HH:mm:ss.fff ") & Level.ToString & "] " & Message
   Else
      newString &= Message
   End If
   My.Computer.FileSystem.WriteAllText(base + fileName, newString, True)
End Sub

我使用以下函数获取客户端IP地址:

Public Function getIP() As String
   Dim ip As String
   ip = Context.Request.ServerVariables("HTTP_X_FORWARDED_FOR")
   If ip = String.Empty Then
      ip = Context.Request.ServerVariables("REMOTE_ADDR")
   End If
   Return ip
End Function

日志消息的构造如下:

Log(String.Format("Client {0} invoked CheckForUpdate with [{1}]", getIP, ver), LogEntryLevel.INFO, False)

前段时间记录了这个:

[11-12-2011 22:10:20.730 INFO] Client 10.0.1.4, 127.0.0.1 invoked CheckForUpdate with [0.5]

O_O如何归还?这是正常的吗?这可能吗?请求如何源自localhost(127.0.0.1)并同时来自远程IP地址?服务器被黑了吗?这是一个小故障吗?有人可以向我解释一下吗?

2 个答案:

答案 0 :(得分:0)

这很可能是因为使用了非匿名代理来访问您的服务器。高匿名代理完全隐藏了正在使用代理的事实,并且标准匿名代理不显示用户的原始IP地址,但是他们确实发送了X-Forwarded-For标头,因此可以检测到它们办法。但是,非匿名代理只是将X-Forwarded-For标头值添加到用户的IP地址,它看起来与您在日志中找到的结果完全相同。转发127.0.0.1这一事实意味着他们可能正在尝试某种形式的邪恶活动,可能会提交一个带有修改值的重新创建的表单。

答案 1 :(得分:0)

我相信这个问题可以帮到你:How do I get the correct IP from HTTP_X_FORWARDED_FOR if it contains multiple IP Addresses?

似乎HTTP_X_FORWARDED_FOR可以以下列形式返回多个逗号分隔的IP: X-Forwarded-For: client1, proxy1, proxy2, ...

因此,10.0.1.4是与使用localhost作为代理的localhost在同一网络上的计算机。一些局域网以这种方式设置,通过某台计算机连接。

192.168.x.x和10.x.x.x是本地网络的保留IP地址范围

我认为客户端是在服务器的局域网上调用的。