banner
herman

herman

哈哈哈哈哈哈哈哈哈哈哈哈哈哈

「只有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

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。