我为我的项目运行服务器。客户端在启动时调用作为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地址?服务器被黑了吗?这是一个小故障吗?有人可以向我解释一下吗?
答案 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地址范围
我认为客户端是在服务器的局域网上调用的。