我试图从Android中的IPv4地址(本地代码或Java本身)合成IPv6地址,如RFC-7050中所记录,以便在NAT64后面使用。在Android上从IPv4地址合成IPv4映射的IPv6地址?
在iOS中工作时,此选项可通过调用getaddrinfo
获得,但似乎Android的getaddrinfo
实现将仅合成主机名的IPv6,而不是IPv4地址。
在iOS上,在NAT64后面,以下代码将在变量res
的地址列表中生成合成的IPv6地址。但是,在Android上,相同的本地代码将生成IPv4地址,除非我将主机名而不是IPv4地址传递到getaddrinfo
。
struct addrinfo *res;
getaddrinfo("x.x.x.x", "80", NULL, &res);
编辑
我不知道Android实现CLAT/464lat,但这并不涵盖所有设备和网络。一个最好的例子就是仅有IPv4网络的NAT64网络。
例子:互联网 - >仅IPv4网络 - >NAT64网络 - >客户
客户将有RFC-4193下(我相信)一个本地的IPv6地址,但只能通过它的NAT64网关访问互联网,这意味着NAT64在向上游发送它们之前将不得不翻译地址。
所以我需要的是产生合成的IPv6地址
前缀理想的方式,我们需要以到达终点的IPv4合成IPv6地址。
从我所了解的464xlat实现不支持WiFi。存在使用仅位于IPv4上游网络后面的NAT64的网络。即“Internet-> IPv4 Only Network-> NAT64 Network-> Client',我试图解释这种情况。 –