作者:Vamei 出處:http://www.cnblogs.com/vamei 轉載請先與我聯系。
我們用電腦、平板、手機等訪問互聯網時,本地設備和服務器之間的通信有可能因為某些不可控因素被切斷。這種情況下,我們可以采用“曲線”的方式,讓一個第三方的服務器來做接力,從而連接目標服務器。 代理服務器可以繞過許多基於IP地址的限制。例如某視頻網站只允許日本的IP訪問,那么可以借助一台在日本的代理服務器,來讓視頻網站誤以為訪問者是一台身在日本的電腦。
我將使用亞馬遜的雲服務(AWS)來建立代理服務器。首先需要有AWS的EC2實例。登錄AWS網站,按照指導創建即可。可參考亞馬遜雲架設WordPress博客。選擇節點時,最好用距離中國較近的節點,如東京。實例建立后,保存好登錄驗證用的.pem文件,並記錄下IP地址。下面以199.199.199.199的IP地址為例。
建立代理服務器
我選擇的代理服務器軟件是Squid。登錄EC2實例,在命令行下安裝Squid:
sudo apt-get install squid3
編輯/etc/squid3/squid.conf文件。這個配置文件說明了Squid的運行方式。squid.conf的設置很靈活,下面是一個最基本的設置:
# 控制列表,定義all acl all src all # 允許all訪問 http_access allow all # squid監聽的目標端口 http_port 2046
重啟Squid服務器,以便加載新的配置:
sudo service squid3 restart
現在,你已經有了私人的代理服務器,可以更改本地電腦的網絡設置,以便使用代理服務器。在Mac OSX上,在System Preferences->Network->Advanced->Proxies中填上代理服務器的IP地址和端口,就可以開始使用代理服務器了:
199.199.199.199為代理服務器的IP。2046是我們在conf文件中設置的代理端口。在Windows和其他Linux系統中,也可以在系統中設置網絡,從而在全局使用代理服務器。也可以在瀏覽器的設置中啟動,只是局部的在瀏覽器內使用代理服務器。
使用SSH隧道連接代理服務器
上面的通信中,Squid代理服務器只起到了接力的作用。但客戶端與Squid服務器的通信依然是明文,所以通信安全無法保障。為了進一步加強通信的私密性,可以使用SSH隧道(SSH Tunnel),在本地電腦和代理服務器之間建立秘密通道。
建立隧道
在Unix電腦上,可以在命令行直接使用ssh:
ssh -i Tokyo-VPN.pem -N -L2046:localhost:2046 ubuntu@199.199.199.199
上面的命令中,Tokyo-VPN.pem是創建EC2實例時的PEM文件。通過這個命令,本地的2046端口和代理服務器的2046端口將建立SSH隧道。兩者之間的信息將加密傳輸,而不用擔心外部監聽和干擾。
還要更改本地代理設置,啟用SSH隧道:
需要更改的地方很簡單,把之前的代理服務器地址199.199.199.199改為127.0.0.1。
訪問測試: