欢迎光临~
小狗一直在努力~

“只有V4的设备”访问“只有V6的设备”的技巧

众所周知,如果访问端因为特殊原因只开启了IPV4,而被访问端因为特殊原因只开启了IPV6

那么两者之间是不能互相访问的。

比如我用公司电脑(公司网络只开启了IPV4)访问家里的NAS(移动宽带只有IPV6)是访问不了的。

解决方案:开代理。

前提是你的代理服务器得是双栈(一般都是双栈)打开https://ip.zxinc.org/ipquery/测一下就知道了。

小知识:(由天地极限大佬提供)

双栈环境下,程序选择使用IPv4还是IPv6协议是程序自身决定的,DNS服务器没有能力控制程序优先使用哪个协议。

因为DNS请求时需要指定查询的类型,IPv4地址是A类型,IPv6地址是AAAA类型,不存在同时查询IPv4和IPv6地址的类型。

因此程序只能同时查询两种地址,然后根据程序自身的逻辑来选择使用哪个。对于绝大多数使用BSD socket API的程序,会使用getaddrinfo来解析域名,然后依次尝试连接,那此时优先使用哪种协议就是由系统控制的了,getaddrinfo把哪个协议排在前面,程序就会优先连接。

还有一些经过特殊设计的程序,比如curl以及各种浏览器,则会有其他逻辑。比如会先检查本机的IPv6地址,如果是内网地址则会放弃使用IPv6,如果是公网地址,会同时解析IPv4和IPv6地址,然后优先连接IPv6,如果在一个较短的时间内(如1秒)还未连接成功,则会继续尝试连接IPv4,最后使用最早建立的那个连接。

1702363756657.gif

未经允许不得转载:一只小狗 » “只有V4的设备”访问“只有V6的设备”的技巧