我们在Web应用程序中使用maxmind地理IP定位服务。利用这个maxmind,我们需要IP地址作为输入。
我们按照以下代码片段获取 IP 地址。
var ip = Request.UserHostAddress;
if (Request.Headers["X-Forwarded-For"] != null)
{
ip = Request.Headers["X-Forwarded-For"];
Console.WriteLine(ip + "|X-Forwarded-For");
}
else if (Request.Headers["REMOTE_ADDR"] != null)
{
ip = Request.Headers["REMOTE_ADDR"];
Console.WriteLine(ip + "|REMOTE_ADDR");
}
我们在corprate网络下,因此在本地环境和开发环境中,我们习惯于获取像这样的私有IP地址10.X.X.X。
使用此地址,我们始终无法找到客户端位置。
所以真正的问题是当你将外部/公共ip(190.X.X.X(传递给maxmind时,它只能工作。
我们真的需要获取外部/公共 ip 来为maxmind服务提供输入吗?
您正在使用Maxmind的IP服务,该服务与您客户的IP有关,而不是您的IP。
- 你想对谁进行地理定位?
- 对于欺诈服务,您要评估谁?
私有IP被内部网络(家庭和公司/企业(广泛使用。就像你的一样(,所以它们不是唯一的(除了在公共互联网上不可路由等(
所有地理位置提供程序仅适用于公共 IP 地址。专用 IP 地址正在局域网中使用,只要它不在同一局域网内,就可以再次重新颁发。确定地理位置信息没有唯一性。
您正确使用了 10.xx.xx.xx 范围,该范围保留给私人(内部(使用。
您需要做的就是更改代码,以便在查找Maxmind之前,将要查找的"10"IP替换为同一语言环境的"公共"IP。如果您的公司有多个位置,则可以创建内部 IP 的数组/表,以公开"区域设置标识"IP。
例如,如果美国洛杉矶的部门使用 10.222.xx.xx; 而美国纽约使用 10.123.xx.xx地址,那么对于这些 IP,只需使用"等效"公共 IP 进行 Maxmind 查找。 因此,对于 10.123.xx.xx(美国纽约(,请改为查找 154.16.85.37。
您甚至可能根本不需要将Maxmind用于您的"10个IP",例如,如果您只需要国家代码; 然后将其包含在您自己的"IP 10"查找表/数组中,对于前缀为 10 的 IP,而不是从您自己的表中查找 Maxmind。