有没有办法将IPV4格式转换为IPV6格式,反之亦然?当用户注册或登录到我的网站时,我将IP地址存储在数据库中。有时用户的IPV6格式的地址存储。用户的身份验证正在检查ip地址列。但是下一次用户的IPV4格式的ip地址是。因此,在数据库中,我没有得到这个IPV4 ip,因为之前存储了IPV6地址。并且用户的身份验证将失败。所以我想把IPV4转换成IPV6。
谢谢。
发布于 2015-01-29 16:10:07
IPv6不仅仅是一种不同的“格式”。IPv6是IPv4的完全替代。不存在从IPv4地址到IPv6地址的“转换”。您的客户端可能具有IPv4地址,也可能具有IPv6地址,句号。也许它们两者都有,但这只是因为它们并行运行两个IP堆栈,并且可以通过这两种方法访问;两个堆栈完全独立运行,尽管两者都可能突然独立地更改其IP。它们并不相关。据您所知,每个IP (无论是v4还是v6)都是一个完全不同的客户端。
简而言之:不。IPv6是一个全新的地址范围。想象一下,如果将IPv4从255作为一个字节的最大值扩展到512,那么整个新的范围256.0.0.0到512.512.512.512都将可用;这就是IPv6。
发布于 2015-03-15 06:37:17
这听起来像是您在初始注册过程中将每个用户的IP列入白名单。如果是这种情况,那么您遇到的问题就不容易解决。如果您的用户同时拥有IPv4和IPv6地址,您将无法控制他们使用哪个地址连接到您的服务器(除了在您的服务器上禁用IPv6之外)。此外,此方法不适用于具有动态IP地址的用户,因为他们将定期获得新的IP,并且无法进行身份验证。
不可能从用户的IPv4地址确定用户的IPv6地址,因为在用户的IPv4和IPv6地址*之间没有保证的相关性。正如其他人所说,IPv6地址不会直接转换为IPv4地址,因为它们是不同的格式。IPv6地址要大得多(128位与32位),因此即使标准允许,也无法将IPv6地址转换为IPv4。
*:在IPv4和IPv6之间的相关性上,我能想到的唯一例外是在局域网上,每个设备都有一个静态的私有IP。如果选择静态IPv4和IPv6地址,使它们以某种方式相互关联,则可以根据v4地址确定v6地址。然而,对于大多数人来说,这不是一种可能的设置,而且它假设您的服务器与最终用户位于相同的本地网络中(这样它就会看到私有IP)。
考虑到锁定有效用户的可能性很高(由于动态IP或IPv6),这似乎不是保护服务器安全的可靠方法。如果您有一个非常特定的用户群,并且动态If不是问题,那么您可以将您的注册页面绑定到一个IPv4地址,而不让它监听该IPv6地址。这样一来,你至少可以确保在注册时获得他们的IPv4地址。
编辑:重写了我的答案,使其与问题更加相关
发布于 2015-01-29 16:04:04
没有关于存储类型(字符串、二进制)的信息。
你可以试试这个http://ipv6.ztsoftware.net/ipv4-to-ipv6/,但我不确定这是不是个好主意。看起来这个服务提供了二进制转换。如上所述,IPv4和IPv6的格式是两码事。
https://stackoverflow.com/questions/28208495
复制相似问题