使用Dual Stack同時擁有IPv4與IPv6 速度變慢(IPv6 Fallback)的解決方法
转载自 http://www.netqna.com/2014/06/IPv6-Fallback.html
可能很多人沒有關注或發現,其實早在幾年前 IPv4 的位置就已經配發完了,也就是說未來我們架設的網站或Services,會逐漸面臨到如何與IPv6網路共存的問題,而最近遇到了一些客戶已經未雨綢繆地籌備IPv4到IPv6的過渡方法。
目前IPv4到IPv6的過渡方法有下列三種
- Dual Stack(IPv4/IPv6雙堆疊)
- Tunneling(隧道)
- NAT-PT(轉換)
而我們其中一個客戶選擇使用第一種Dual Stack(IPv4/IPv6雙堆疊)的方式來做轉換,使用這種方式算是相當的簡單,只要電腦或是網路上的路由器同時支援IPv4和IPv6即可,對於公司行號內部來說轉換相當容易,只需將網路節點換成支援Dual Stack的裝置即可,每個裝置同時擁有IPv4和IPv6位址,2種網路同時並存在公司內部,卻又不相互干擾。不過當我們的客戶使用 Dual Stack 上線沒有多久,他們的使用者卻抱怨上Facebook變的很慢很慢(迷之聲..上班可以玩臉書嗎? XDDD),一開始用戶懷疑是DNS解析以及同時擁有IPv4與IPv6 是不是有回覆的優先順序的問題,這邊我說明一下,DNS Server 會依用戶詢問的記錄(Domain name record)回覆,當某個Domain name record只有IPv4位址,就只回覆IPv4位址當某個Domain name record只有IPv6位址,就只回覆IPv6位址如果某個Domain name record有IPv4及IP6位址,則IPv4、及IPv6位址都回覆,所以沒有先後順序問題。
後來請用戶的網管人員調閱Firewall Log發現IPv6的連線都被Deny掉了,原來用戶的網管人員沒有設定IPv6的Firewall Policy,但用戶為什麼還是可以連到Facebook呢?原因是現在新的OS,一般都會先嘗試連線IPv6位址,而如果該Domain name record 的IPv6連線有問題,或是該Domain name record設定有問題,會造成OS繼續嘗試IPv6位址,大約在經過21秒後才改嘗試該Domain name record的IPv4位址,所以使用者雖然可以連上Facebook但很緩慢,這就是IPv6 Fallback現象。
所以要解決這個問題有兩種解決方法,第一個解決方法比較簡單,就是請網管人員開通Firewall Policy,第二種就是設定OS可透過下面教學,來控制OS本身IPv4、IPv6路由的優先順序,來避開這個問題。
Windows 設定方式
Windows: (::ffff:0:0即是指IPv4),此指令輸入後是永久生效,不必每次都重新設定。
C:\>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
C:\>netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 100 4
確定。
C:\>netsh interface ipv6 show prefixpolicies
正在查詢使用中的狀態…
優先順序 標籤 首碼
———- —– ——————————–
100 4 ::ffff:0:0/96
50 0 ::1/128
40 1 ::/0
30 2 2002::/16
20 3 ::/96
5 5 2001::/32
C:\> |
Linux 設定方式
Linux: (::ffff:0:0即是指IPv4),以下對/etc/gai.conf檔加入即可。
最後在做一個重開機。
~]# cat /etc/gai.conf
# Label
# Add another rule to the RFC 3484 label table. See section 2.1 in
# RFC 3484.
# The default is:
label ::1/128 0
label ::/0 1
label 2002::/16 2
label ::/96 3
label ::ffff:0:0/96 4
label fec0::/10 5
label fc00::/7 6
#
# Precedence
# Add another rule the to RFC 3484 precedence table. See section 2.1
# and 10.3 in RFC 3484.
# The default is:
precedence ::1/128 50
precedence ::/0 40
precedence 2002::/16 30
precedence ::/96 20
#precedence ::ffff:0:0/96 10
#
# For sites which prefer IPv4 connections change the last line to
precedence ::ffff:0:0/96 100
~]# shutdown -r now
|