有什么方法可以检测我网站上的 IPv6 客户端?
Any way of detecting IPv6 clients on my website?
我想知道在技术上是否可以检测我网站上的 IPv6 客户端?
我目前 运行 Classic ASP 使用 Request.ServerVariables("remote_addr") 来检测我的访问者 IP 地址,但我的一些移动用户(我认为是澳大利亚的 Telstra 客户)现在正在使用 IPv6。这个函数似乎只给我一个 IPv4 地址。
是否有 easy/free 解决方案来检测访问者的 IPv6 地址?
PS - 我不认为服务器上启用了 IPv6,所以我是在浪费时间吗?
如果您的网络服务器和 ISP 支持,您的网站只能通过 IPv6 访问。当您的服务器没有 IPv6 时,用户的 ISP 网络 (NAT64) 中通常有一种转换机制,可将用户的 IPv6 数据包转换为可以到达您的服务器的 IPv4 数据包。因此,您只会看到 IPv4 连接进入。其中一些将是真正的 IPv4 用户,一些将是转换为 IPv4 的 IPv6 用户。
如果您希望所有用户都能以最佳方式访问,那么依赖其他人的翻译机制是一种您希望避免的黑客行为。让您的 ISP/hoster/sysadmin/etc 让您的服务器可以通过 IPv6 和 IPv4 访问是最好的解决方案。这样所有用户都可以直接联系您的服务器,无论他们的 ISP 提供什么。
如果客户端是纯 IPv6 且无法访问任何转换机制,他们将永远无法访问您的纯 IPv4 服务。
在这种情况下,这些用户会认为您的服务器已关闭,您将无法知道他们甚至尝试访问您的服务器。
但是,无法访问转换机制的纯 IPv6 客户端仍然非常少见。客户端更有可能访问某些转换机制,例如 NAT64。
有几种方法可以知道客户端是否通过 NAT64 访问您的站点。
NAT64 的 IPv4 地址可能在反向 DNS 或 whois 中有信息,这些信息会告诉您它是 NAT64 设备。此外,依赖 NAT64 的客户端通常无法访问文字 IPv4 地址。只能通过主机名进行访问,因为它们依赖 DNS64 来查找 IPv6 地址。
另一种说明差异的方法是,在 SYN 数据包中通告的 MSS 值对于本机 IPv4 客户端和 NAT64 转换客户端往往具有不同的值。
None 这些都是 100% 可靠的区分方法,但只要客户没有任何动机去扰乱您的结果,他们就可以提供一个很好的估计。
请注意,尽管 DNS64/NAT64 组合将允许纯 IPv6 客户端访问纯 IPv4 服务器,但它不适用于 IPv6 访问权限错误或配置错误的服务器。因此,在您为域添加 AAAA 记录之前,请确保 IPv6 地址确实有效。一旦您设置了 AAAA 记录,您就可以使用 https://nat64check.org/ 等服务来验证它是否确实有效。
感谢上面的两个回复,它让我的事情变得更加清晰。
在进一步 reading/investigation 之后,很明显 IPv6 数据包正在转换为 IPv4(或者它们是双堆栈的)。如果是前者,我现在正在尝试查看是否可以在我结束时转换它们。
一个例子是这个 IPv6 地址:2001:8003:1909:2700:3c97:38e7:9c98:bb5b
它被转换为 IPv4 为:101.177.229.36
有很多在线计算器,但 none 似乎给了我上述转换,所以我认为他们的 ISP 使用他们自己的翻译机制。
我想知道在技术上是否可以检测我网站上的 IPv6 客户端?
我目前 运行 Classic ASP 使用 Request.ServerVariables("remote_addr") 来检测我的访问者 IP 地址,但我的一些移动用户(我认为是澳大利亚的 Telstra 客户)现在正在使用 IPv6。这个函数似乎只给我一个 IPv4 地址。
是否有 easy/free 解决方案来检测访问者的 IPv6 地址?
PS - 我不认为服务器上启用了 IPv6,所以我是在浪费时间吗?
如果您的网络服务器和 ISP 支持,您的网站只能通过 IPv6 访问。当您的服务器没有 IPv6 时,用户的 ISP 网络 (NAT64) 中通常有一种转换机制,可将用户的 IPv6 数据包转换为可以到达您的服务器的 IPv4 数据包。因此,您只会看到 IPv4 连接进入。其中一些将是真正的 IPv4 用户,一些将是转换为 IPv4 的 IPv6 用户。
如果您希望所有用户都能以最佳方式访问,那么依赖其他人的翻译机制是一种您希望避免的黑客行为。让您的 ISP/hoster/sysadmin/etc 让您的服务器可以通过 IPv6 和 IPv4 访问是最好的解决方案。这样所有用户都可以直接联系您的服务器,无论他们的 ISP 提供什么。
如果客户端是纯 IPv6 且无法访问任何转换机制,他们将永远无法访问您的纯 IPv4 服务。
在这种情况下,这些用户会认为您的服务器已关闭,您将无法知道他们甚至尝试访问您的服务器。
但是,无法访问转换机制的纯 IPv6 客户端仍然非常少见。客户端更有可能访问某些转换机制,例如 NAT64。
有几种方法可以知道客户端是否通过 NAT64 访问您的站点。
NAT64 的 IPv4 地址可能在反向 DNS 或 whois 中有信息,这些信息会告诉您它是 NAT64 设备。此外,依赖 NAT64 的客户端通常无法访问文字 IPv4 地址。只能通过主机名进行访问,因为它们依赖 DNS64 来查找 IPv6 地址。
另一种说明差异的方法是,在 SYN 数据包中通告的 MSS 值对于本机 IPv4 客户端和 NAT64 转换客户端往往具有不同的值。
None 这些都是 100% 可靠的区分方法,但只要客户没有任何动机去扰乱您的结果,他们就可以提供一个很好的估计。
请注意,尽管 DNS64/NAT64 组合将允许纯 IPv6 客户端访问纯 IPv4 服务器,但它不适用于 IPv6 访问权限错误或配置错误的服务器。因此,在您为域添加 AAAA 记录之前,请确保 IPv6 地址确实有效。一旦您设置了 AAAA 记录,您就可以使用 https://nat64check.org/ 等服务来验证它是否确实有效。
感谢上面的两个回复,它让我的事情变得更加清晰。 在进一步 reading/investigation 之后,很明显 IPv6 数据包正在转换为 IPv4(或者它们是双堆栈的)。如果是前者,我现在正在尝试查看是否可以在我结束时转换它们。
一个例子是这个 IPv6 地址:2001:8003:1909:2700:3c97:38e7:9c98:bb5b
它被转换为 IPv4 为:101.177.229.36
有很多在线计算器,但 none 似乎给了我上述转换,所以我认为他们的 ISP 使用他们自己的翻译机制。