在 .NET 中判断 IP 地址是内网还是外网可以使用以下方法:
IPAddress.IsPrivateIPv4Address()
方法检查 IPv4 地址是否为私有地址范围(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)。IPAddress.IsIPv6LinkLocal()
方法检查 IPv6 地址是否为链路本地地址范围(FE80::/10)。在 .NET 服务中获取客户端 IP 地址的正确方法如下:
HttpContext.Connection.RemoteIpAddress
属性获取客户端 IP 地址。这是最可靠的方式,可以正确获取客户端的真实 IP 地址,即使客户端使用代理或负载均衡器。HttpContext
,可以使用 HttpRequestMessage.GetRemoteIpAddress()
扩展方法。HttpContext.Request.UserHostAddress
属性,但这种方式不太可靠,因为它可能返回代理服务器的 IP 地址。在 .NET 中判断 IP 地址类型和获取客户端 IP 地址的最佳实践是使用 HttpContext.Connection.RemoteIpAddress
和 IPAddress.IsPrivateIPv4Address()
/IPAddress.IsIPv6LinkLocal()
。这样可以确保准确获取客户端的真实 IP 地址,并正确判断其是内网还是外网地址。