手机版 收藏 导航

.NET 中如何判断 IP 地址是内网还是外网_在 .NET 服务中获取客户端 IP 地址的正确方法

原创   www.link114.cn   2025-03-24 12:20:13

.NET 中如何判断 IP 地址是内网还是外网_在 .NET 服务中获取客户端 IP 地址的正确方法

在 .NET 中判断 IP 地址是内网还是外网可以使用以下方法:

  1. 使用 IPAddress.IsPrivateIPv4Address() 方法检查 IPv4 地址是否为私有地址范围(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)。
  2. 使用 IPAddress.IsIPv6LinkLocal() 方法检查 IPv6 地址是否为链路本地地址范围(FE80::/10)。
  3. 也可以编写自定义的逻辑来判断 IP 地址是否为内网地址。例如检查 IP 地址是否以 10.、172.16-31.、192.168. 开头。

在 .NET 服务中获取客户端 IP 地址的正确方法如下:

  1. 使用 HttpContext.Connection.RemoteIpAddress 属性获取客户端 IP 地址。这是最可靠的方式,可以正确获取客户端的真实 IP 地址,即使客户端使用代理或负载均衡器。
  2. 无法获取 HttpContext,可以使用 HttpRequestMessage.GetRemoteIpAddress() 扩展方法。
  3. 另外,也可以使用 HttpContext.Request.UserHostAddress 属性,但这种方式不太可靠,因为它可能返回代理服务器的 IP 地址。

在 .NET 中判断 IP 地址类型和获取客户端 IP 地址的最佳实践是使用 HttpContext.Connection.RemoteIpAddressIPAddress.IsPrivateIPv4Address()/IPAddress.IsIPv6LinkLocal()。这样可以确保准确获取客户端的真实 IP 地址,并正确判断其是内网还是外网地址。