Linux
IPv6 回退到 IPv4
目前我通過 IPv4 連接到 Internet,我正在使用來自 Sixxs.net 的隧道,並且我已經將子網和 IPv6 之一分配給了我的 eth0 介面。
所以,eth0 有 IPv4 和 IPv6:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:02:XX:XX:61:36 brd ff:ff:ff:ff:ff:ff inet XXX.XXX.0.22/24 brd XXX.XXX.0.255 scope global eth0 inet6 2a01:XXXX:XXXX::1/64 scope global valid_lft forever preferred_lft forever
當我試圖連接到一些例如。準備好 IPv6 的網站,很好,首選 IPv6,但是如果發生某些事情並且 IPv6 不可用,我希望退回到 IPv4。那可能嗎?
或者即使程序不支持(例如通過 -4 選項)也可以臨時強制使用者 IPv4 而不是 IPv6?
這應該已經發生,因為它(意味著)是您網路的預設行為。
但是,在實踐中,可能會遇到一兩件小事。以下是它的工作原理:
- 你想訪問一個 URL,比如說
www.kame.net
. 您的 DNS 應該請求一個AAAA
以及一個A
記錄。- 如果
AAAA
返回記錄,則它會嘗試連接到 IPv6 地址。- 如果無法建立連接(主機離線、IPv6 連接斷開等),或不
AAAA
存在記錄,則使用 IPv4 代替。問題可能發生在以下方面:
- 不返回
AAAA
地址的錯誤配置或舊的 DNS 伺服器將意味著永遠不會使用 IPv6。- 錯誤配置的 IPv6 網路(例如,具有可路由的 IPv6 地址(不是鏈路本地地址)但未發現 RA,或者 RA 未實際連接到 Internet,則 TCP/IP 堆棧可能需要長達 90 秒超時並故障恢復到 IPv4,使其幾乎無用。
如果您正在編寫自己的應用程序來進行自己的 DNS 查找,那麼這也是您應該寫入應用程序的行為。如果也是這種情況,那麼支持 IPv6 就比這複雜一點(例如,我們的日誌解析器,建立在 IPv4 上,有一個固定的 32 位 IP 地址欄位。當我們實現了我們的第一個 IPv6 網路)。