- 論壇徽章:
- 0
|
各位大蝦所說的技術(shù)已經(jīng)可以實(shí)現(xiàn)了.
大概情況如下:
某網(wǎng)站 ,如www.test.com, 電信接入鏈路一條, 網(wǎng)通一條, 電信給的IP是1.1.1.1 ,網(wǎng)通給的是2.2.2.2 處于不同網(wǎng)段
要求實(shí)現(xiàn) 網(wǎng)通的用戶從網(wǎng)通的鏈路 訪問到 服務(wù)器, 而電信的用戶用電信的鏈路訪問到服務(wù)器.
解決方案:
要從DNS下手
某個(gè)用戶從電信發(fā)起訪問,過程如下
1 Client
2 Client所指定的DNS服務(wù)器 根據(jù)Client的網(wǎng)絡(luò)接入的方式不同,DNS服務(wù)器地址未知
3 test.com的
Client 問自己的DNS www.test.com的IP是多少
Client DNS 服務(wù)器通過遞歸或則迭代,訪問到test。com的soa dns服務(wù)器。
a, 如果是迭代,則最終向test。com詢問誰是 www.test.com的 ,將是Client.
這樣,test.com的DNS服務(wù)器將得到Client的IP,再根據(jù)IP地址是網(wǎng)段是屬于
電信還是CNC的,決定返回www.test.com 的IP 1.1.1.1 還是 2.2.2.2
如果是電信用戶,則返回1。1。1。1,這樣該電信Client最終得到www.test.com = 1.1.1.1 的A記錄解析,從而通過電信網(wǎng)絡(luò)訪問www.test.com,這樣就能達(dá)到我們所預(yù)期的目的。
b,如果是遞歸查詢,則比較麻煩, 因?yàn)樽罱K向test.com 的dns服務(wù)器詢問誰是www.test.com的,是Client DNS. 這樣只能判定Client DNS是電信還是網(wǎng)通,而無法斷定Client
是電信還是網(wǎng)通。 不過,由于網(wǎng)絡(luò)接入的方式不一樣,例如 網(wǎng)通的ADSL方式,其IP、DNS地址均由動(dòng)態(tài)獲取,這樣此時(shí) Client DNS服務(wù)器與Client應(yīng)該是屬于相同運(yùn)營商IP,這樣就能夠通過判定Client DNS地址來大約斷定Client所屬運(yùn)營商。
但是假如某網(wǎng)通用戶手工指定DNS,恰好又指定了一個(gè)電信的DNS服務(wù)器,這個(gè)時(shí)候,就比較麻煩了,因?yàn)閷?huì)從電信的鏈路上收到一個(gè)TCP連接,其源地址為網(wǎng)通IP。
考慮此時(shí)是遞歸查詢,所知Client DNS的IP地址為電信IP,則會(huì)返回1。1。1。1地址給與該 Client DNS,那么Client作為網(wǎng)通用戶最終得到的IP將是 www.test.com=1.1.1.1 (該地址為電信地址) ,這樣就會(huì)導(dǎo)致此用戶得到錯(cuò)誤的服務(wù)器地址。
不過,好運(yùn)的是,現(xiàn)在的大多數(shù)DNS服務(wù)器都是迭代查詢,因?yàn)闆]有多少DNS服務(wù)器可以承受遞歸的流量,所以對(duì)于99%的用戶來說,都能得到正確的地址解析,從而正確的訪問服務(wù)器。
目前手工配置DNS服務(wù)器來實(shí)現(xiàn)以上目的,好象只能有BIND能做到,不過需要自己開發(fā)一些相關(guān)工作流程,以及收集電信、網(wǎng)通IP地址段,工作內(nèi)容比較復(fù)雜。
好消息是,現(xiàn)在已經(jīng)有相關(guān)的商業(yè)產(chǎn)品能夠做到這一點(diǎn)。 如果網(wǎng)站的級(jí)別已經(jīng)到達(dá)需要做鏈路負(fù)載均衡的話,我想這點(diǎn)錢BOSS還是會(huì)批準(zhǔn)的吧:)
有興趣的話,可以跟我聯(lián)系msn: moon_yagami@126.com QQ11892426, 我們可以交流一下相關(guān)技術(shù),也能提供完整的解決方案。
[ 本帖最后由 unsword 于 2006-4-25 16:47 編輯 ] |
|