Linux

IPv6 回退到 IPv4

  • March 6, 2011

目前我通過 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?

這應該已經發生,因為它(意味著)是您網路的預設行為。

但是,在實踐中,可能會遇到一兩件小事。以下是它的工作原理:

  1. 你想訪問一個 URL,比如說www.kame.net. 您的 DNS 應該請求一個AAAA以及一個A記錄。
  2. 如果AAAA返回記錄,則它會嘗試連接到 IPv6 地址。
  3. 如果無法建立連接(主機離線、IPv6 連接斷開等),或不AAAA存在記錄,則使用 IPv4 代替。

問題可能發生在以下方面:

  1. 不返回AAAA地址的錯誤配置或舊的 DNS 伺服器將意味著永遠不會使用 IPv6。
  2. 錯誤配置的 IPv6 網路(例如,具有可路由的 IPv6 地址(不是鏈路本地地址)但未發現 RA,或者 RA 未實際連接到 Internet,則 TCP/IP 堆棧可能需要長達 90 秒超時並故障恢復到 IPv4,使其幾乎無用。

如果您正在編寫自己的應用程序來進行自己的 DNS 查找,那麼這也是您應該寫入應用程序的行為。如果也是這種情況,那麼支持 IPv6 就比這複雜一點(例如,我們的日誌解析器,建立在 IPv4 上,有一個固定的 32 位 IP 地址欄位。當我們實現了我們的第一個 IPv6 網路)。

引用自:https://serverfault.com/questions/243837