代理服務器和多徑技術實踐

    利用客戶端代理服務器和服務器端反向代理服務器,可以具備安全/可靠/快捷等優點,同時多路經傳輸可以加大傳輸速度和增強傳輸魯棒性。利用嵌入式開發板和linux系統,搭建網絡拓撲C--P==RP--S,其中C(Client)和S(Server)分別代表客戶端和服務器,P(Proxy)和RP(Reverse-proxy)代表代理和反向代理,在這個網絡拓撲上順利實現了代理和多徑技術的結合。

一.配置要求

  1.兩臺PC(網絡拓撲中的C和S,爲了方便下文統一用代號表示),軟件平臺爲Ubuntu 13.04+

  2.兩個嵌入式開發板mini2440(網絡拓撲中的P和RP,爲了方便下文統一用代號表示),軟件平臺爲linux 3.11.10

  3.PC和開發板之間傳輸和控制的串口和網線

  4.兩個代理之間通信的網線/無線網卡/3G模塊

  5.最好兩人協作

二.環境搭建

1.PC環境

PC上必須安裝ubuntu便於和嵌入式開發板統一系統平臺,安裝過程網上有很多教程。

爲了達到在PC上的終端控制開發板的目的,要裝minicom,安裝比較順利,利用以下命令行即可

#apt-get install minicom

直接在終端輸入minicom可以啓動該程序

此外可以安裝bwm-ng,監測傳輸過程中的各個路徑速度,也是利用apt-get安裝

直接在終端輸入bwm-ng可以啓動該程序

S上要安裝apache服務器,安裝配置過程比較簡單

2.開發板環境

在兩個嵌入式開發板上安裝完linux 後在P上安裝tinyproxy,安裝及配置代理的過程參考博客點擊打開鏈接

RP上安裝反向代理tinyproxy-re跟tinyproxy過程類似,但有些許不同,參考點擊打開鏈接

在開發板P和RP上可以移植appweb(一個web服務器,不是必須項),這樣就可以方便地在PC端通過圖形看到各條路徑的傳輸狀態,移植過程參考點擊打開鏈接

要熟悉appweb的demo開發流程,參考我的一篇博客,如果要進一步學習如何在appweb中嵌入javascript,參考點擊打開鏈接

三.實現流程

1.搭建網絡拓撲

首先是P和RP之間通過網線先連接上。C和P,S和RP,均是通過串口和網線連接。待C和S上的minicom啓動後,將P和RP通電,通電後在minicom上能看到P和RP的打印信息。

然後在minicom的界面上用命令ifconfig查看eth0的信息,在PC上同樣查看eth0的信息,ping對方eth0的ip可以檢查兩者是否成功連通。

接着就是P和RP之間多條網絡路徑的搭建了,由於網線已經連好,只要再在P和RP都插入無線網卡和3G模塊就行,插入後在minicom上有對應的USB口打印信息。

注意wifi要設置成同一個ssid才能設置連接,這裏可以在開發板上安裝wpa_supplicant實現。修改wpa_supplicant配置文件,實現P和RP上的SSID相同。輸入命令

#system/bin/wpa_supplicant -d -Dwext -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf------------------------>wpa_supplicant目錄不盡相同

我們在執行時加上了-c/data/misc/wifi/wpa_supplicant.conf,我們可以將我們要連接的AP的設置以一定的格式寫入wpa_supplicant.conf配置文件中即可。

eg. 

ctrl_interface=DIR=/data/system/wpa_supplicant GROUP=system update_config=1

network={

ssid="my access point"

proto=WPA

key_mgmt=WPA-PSK

psk="you pass words"

}

具體的wpa_supplicant使用參考點擊打開鏈接

兩個3G模塊之間的通信比較複雜,可以參考點擊打開鏈接

2.設置每個網絡接口的ip

在root模式下利用命令ifconfig [itf] 192.168.*.*將指定interface設置成ip 192.168.*.*。在我的實現中,具體各個接口的ip設置如下:


每次重啓後都要手動設置一次ip比較麻煩,可以寫一個腳本。

3.設置代理

首先在通過minicom設置P上的代理服務器,先進入tinyproxy.conf的目錄,這裏是cd /etc找到了這個配置文件,接着輸入命令:
#./tinyproxy -d -c ./tinyproxy.conf &
解釋一下這個命令,tinypoxy是全局運行的,因此就算程序不在當前目錄下也可運行(通過which tinyproxy也能找到程序目錄),但是tinyproxy.conf配置文件必須要在當前目錄下,而&是後臺運行指令,防止代理運行造成傳輸時的程序衝突。
反向代理設置的步驟與此相似。
然後是在PC上面的瀏覽器端設置代理ip,以Firefox瀏覽器爲例,在“工具”下拉列表裏點擊“選項”,選中“高級”欄目中的“網絡”標籤頁,點擊“設置”手動設置ip。
在實現過程中,C的代理ip設置爲P的eth0 ip,而S的反向代理ip設置爲RP的eth0 ip。這樣C和S之間在ip上就相當於兩個代理之間通信了,可以理解爲代理充當了防火牆,而反向代理充當了服務器僞裝的作用。
代理設置完之後可以用ping檢查是否連通。

4.http傳輸測試

現在可以正式開始傳輸測試了,在C的瀏覽器端輸入S上面某文件的URL,S作爲服務器,但是URL中的ip是第3步設置的反響代理ip如果能順利下載文件即代表傳輸通過。

如果進一步地用appweb在瀏覽器前端顯示了各個網絡路徑的傳輸速率曲線,就更加直觀了。

四.總結

總的來說,代理和多徑技術的結合需要注意很多技術細節問題,需要不斷找方法克服。整個實現的流程圖如下:



發佈了39 篇原創文章 · 獲贊 17 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章