Computer Center

使用 IPv6 DualStack 連線速度變慢
2016/08/04,09:38

http://blog.xuite.net/tolarku/blog/308631877-%E4%BD%BF%E7%94%A8+IPv6+DualStack+%E9%80%A3%E7%B7%9A%E9%80%9F%E5%BA%A6%E8%AE%8A%E6%85%A2

 ① Client 透過 IPv4/IPv6 連線到 DNS 查詢目的網域 www.abc.com 的IP位址
② DNS 回報目的 www.abc.com 的 IPv4 跟 IPv6 兩個 IP 位址
③ Client 以 IPv6 連線到從 DNS 問到的目的 IPv6 位址
正常情況連不到就斷線了,可是作業系統很聰明,他知道目的主機分別有 IPv4 跟 IPv6 的地址,當 IPv6 連不到時,他會改用問到的 IPv4 地址去連線
④ Client 以 IPv4 連線到目的主機
⑤ 目的主機回應後續的服務連線


## 使用 nslookup 跟 ping 指令來觀察 ###

沒使用 IPv6 目的主機的 nslookup 回應
名稱: www.nthu.edu.tw
Address: 140.114.69.135

C:\>ping www.nthu.edu.tw
Ping www.nthu.edu.tw [140.114.69.135] (使用 32 位元組的資料):

使用 IPv6 目的主機的 nslookup 回應 (可以看到回應有包含 IPv4 跟 IPv6 )
名稱: www.nctu.edu.tw
Addresses: 2001:f18:113:41::202
2001:f18:113:40::36
140.114.60.159
210.61.2.219
140.113.40.36
140.113.41.202

C:\>ping www.nctu.edu.tw
Ping www.nctu.edu.tw [2001:f18:113:40::36] (使用 32 位元組的資料):

-------------------------------------------------------------------------------------

所以慢、頓是因為 ③ 等待連線失效的時間,才會改用 IPv4 的方式連線
那有辦法修改連線的優先順序嗎?可以~修改 使用者電腦 Client 端的連線順序

--- Windows 修改 IP v4 / v6 連線順序 -----------------

* 使用 netsh 指令查詢順序  (開啟命令提示字元,執行 cmd)
netsh interface ipv6 show prefixpolicies

正在查詢使用中的狀態...
優先順序 標籤 首碼
---------- ----- --------------------------------
50    0    ::1/128
40    1    ::/0
30    2    2002::/16
20    3    ::/96
10    4    ::ffff:0:0/96
5      5    2001::/32

其中的...
::ffff:0:0/96    -- 指的是 IPv4 的設定,意即提高這項的優先順序,就可以決定先走 IPv6 或 v4

S1:開啟系統管理員命令提示字元
S2:執行指令
       netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 60 4
S3:觀察優先順序
       netsh interface ipv6 show prefixpolicies
S4:再用 ping 來測試,就會發現原本走 IPv6 的變成「先」走 IPv4 了

 

 --- 那 Linux  修改 IP v4 / v6 連線順序  ----------------

簡單的說,只要對應修改 /etc/gai.conf 就可以了

A call to getaddrinfo(3) might return multiple answers. According to RFC 3484 these answers must be sorted so
that the answer with the highest success rate is first in the list. The RFC provides and algorithm for the
sorting. The static rules are not always adequate, though. For this reason the RFC also requires that system
administrators get the chance to dynamically change the sorting. For the glibc implementation this can be
achieved with the /etc/gai.conf file.

但是~ /etc/gai.conf  有這個檔案,但預設是空的,你要依照他的格式去編輯內容,如底下的例子內容
sudo vi /etc/gai.conf  然後新增底下文字
label ::1/128 0
label ::/0 1
label 2002::/16 2
label ::/96 3
label ::ffff:0:0/96 4
precedence ::ffff:0:0/96 60
precedence ::1/128 50
precedence ::/0 40
precedence 2002::/16 30
precedence ::/96 20

 

Reference :

微軟 Microsoft 修正 IPv6 偏好問題說明:http://support.microsoft.com/zh-tw/kb/2533454  
netsh 指令說明:https://msdn.microsoft.com/zh-tw/library/cc740203%28v=ws.10%29.aspx  
http://www.ipv6.org.tw/docu/elearning8_2005/1009402616b-19.pdf  
Linux http://mirrors.bieringer.de/Linux+IPv6-HOWTO/resolver.html     
IPv6 升級實作技術手冊第 1.2 版    https://www.gsnv6.tw/docu/SOP/04.IPv6_SOP_Linux_Server.pdf    

 

 
Accessible and Valid XHTML 1.0 Strict and CSS Powered by LifeType