2011/04/27

無痛將IPv4 only web service提供IPv6服務- 使用proxy轉換

隨著IPv6日的到來,許多單位紛紛參與了IPv6日的測試工作,並希望藉由這個機會檢視自身的IPv6準備程度。其中一個問題是既有的IPv4服務網頁服務如何移轉至雙協定,最簡單的方式是在前台主機直接升級作業系統與網頁伺服器以提供雙協定服務。直接移轉的營運成本其實最低,但卻往往是最不可行的一條路。在既有服務移轉的過程中,往往要面對許多不確定性的因素(註:台灣區的單位可與IPv6計畫移轉技術分項連繫,有整理好的移轉系統文件可供諮詢 http://www.rd.ipv6.org.tw)。此時部分人會選擇以轉換代理者的方式提供服務(ex:國內某電信龍頭入口網),在初期使用者較少的情況下,可以透過轉換伺服器提供IPv6服務爭取內部實際IPv6移轉之測試時間。



坊間之網路負載平衡器大多有支援,包含了硬體(抱歉不能打廣告)與軟體(微軟的tcp proxy..或opensource)解決方案,其中Linux上的HAproxy就是其中一個解決方案。


整個的概念是,一家公司既有的IPv4位址是IPv4Address. 名稱是ipv4.company.com.tw。現在有一台轉換伺服器 ipv6位址是IPv6Address與隨便一個IPv4,網管把ipv6.company.com.tw設定為IPv6Address (AAAA record)。當使用者以ipv6連線時就會連接到這台轉換伺服器,再由轉換伺服器去IPv4伺服器以代理者的身分取得連線。


優點:既有的IPv4伺服器與防火牆不需要變更


缺點:對於伺服器來說,使用者似乎都來自於同一個位址。未來使用者大量增加時會造成服務處理效能下降,因此僅能視為過渡時期爭取時間的解決方案。


相關教學


http://www.koopman.me/2011/02/haproxy-for-ipv6-translation-to-ipv4-only-website/



但不要以為這是萬能的,根據PTT IPv6板上的板友分享


作者 alextwl (alextwl) 看板 IPv6


標題 [討論] msa.hinet.net relay & HELO ipv6 addr


時間 Tue Jun 30 20:47:16 2009


───────────────────────────────────────


msa.hinet.net ipv6 open relay 老早不算是新聞了,


但最近在有 v6 環境底下寄信才發現,msa.hinet.net 如果 HELO 送 v6 位址


(e.g. HELO [IPv6:2001:b020:0:71::11])


會被回 501 Invalid domain name 打槍 -_-


一氣之下就花了點時間試試,HELO 給 FQDN 跟 v4 位址會過關,


打開寄回來的信發現第一個 Received header 長這樣:


Received: from its.not.a.valid.domain.com ([203.74.21.24])


by msr13.hinet.net (8.9.3/8.9.3) with ESMTP id UAA24838


Sender 的 IP 位址居然是 203.74.21.24 而非 IPv6 位址,而且固定不變。


看起來像是門口放了台 L3 專門做v6轉v4之後再丟給後方的農場,


也難怪會 open relay。


另外我是在 Win32 底下用 Mozilla Thunderbird 2.0.0.21,


EHLO argument 只會寫 IPv6 位址不會用 domain name (但不清楚有設反解的情況),


所幸後來有找到 preference 可以自訂這個部分[1],暫時解決問題。

No comments: