用RAMHost的MiniVPS架设VPN和Squid代理
发表于2010年6月28日突然之間翻牆就成了必備技能之一。 我用RAMHost的Mini VPS嘗試了幾種翻牆的方式。 操作系統是Debian 5.0。
通過VPN翻牆 – OpenVPN+Tunnelblick
全局都翻牆且不用設置瀏覽器,客戶端一點就可以。
具體步驟參考RAMHost用戶論壇的第四個帖子。唯一需要注意的是第四步在/etc/rc.local中加入自動重啟OpenVPN的命令。這還真是必須的,因為/dev/tun會在重啟的時候丟掉,可能是OpenVZ的原因吧。
# restart openvpn after 1 hour in case tun device got broken on reboot sleep 3600 /etc/init.d/openvpn stop sleep 10 /etc/init.d/openvpn start |
我使用Tunnelblick做客戶端來連VPN。 下載安裝後,需要將openvpn.conf放在如下位置~/Library/Application Support/Tunnelblick/Configurations/openvpn.conf中引用的.crt和.key也放這裡即可。
當晚(其實大概天快亮了-_-!)試過看Hulu和Youtube等高清視頻很流暢。
好處多多,壞處就是得拷貝那几個證書文件給客戶端。(更喜歡PPTP要求用戶名密碼的方式,但OpenVZ不支持。)
代理服務器 – Squid
GFW是強大的,直接用Squid仍然會被墻。
更安全的代理服務器 – Squid+Stunnel
請教了一下Fantix,他用Stunnel給Squid加密的方法來解決這個問題。
我用的Squid3,需要啟用lenny-backports才能找到。其實默認的Squid2.7也可以。裝好後,默認配置就能用。
sudo apt-get install squid3 |
簡化版的配置如下:
visible_hostname proxy.sunliwen.com cache_effective_user proxy proxy http_port 3128 acl localnet src 127.0.0.0/24 http_access allow localnet |
sudo /etc/init.d/squid3 start
因為我要用Stunnel加密,所以只允許本地訪問。 配置Stunnel之前先測試一下Squid是否可以走通。
export HTTP_PROXY=http://localhost:3128 elinks www.youtube.com |
配置服務器端Stunnel(可參考這篇博客)
主要有以下幾個步驟:
- 生成證書
sudo openssl genrsa -out privkey.pem 2048 sudo openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095 sudo cat privkey.pem cacert.pem >> /etc/stunnel/stunnel.pem |
- 更改證書屬性
sudo chmod 0400 /etc/stunnel/stunnel.pem |
- 更改chroot目錄的owner
sudo chown stunnel4:stunnel4 /var/run/stunnel4 |
- /etc/stunnel/stunnel.conf編輯如下
cert = /etc/stunnel/stunnel.pem chroot = /var/lib/stunnel4/ pid = /stunnel4.pid setuid = stunnel4 setgid = stunnel4 ; debug = 7 ; output = /var/log/stunnel4/stunnel.log client = no [http] accept = 8080 connect = localhost:3128 |
客戶端也需要安裝stunnel,這裡是MacOSX
sudo port install stunnel |
然後在客戶端本地運行
sudo stunnel3 -c -d localhost:8080 -r proxy.sunliwen.com:8080 |
或者創建包含如下內容的配置文件 stunnel.conf (我這立的位置在 /opt/local/etc/stunnel/stunnel.conf )
client = yes [proxy] accept = 127.0.0.1:8080 connect = proxy.sunliwen.com:8080 |
然後 http://localhost:8080 便成了一個安全的代理。
比較
前者比較方便,但不是很穩定,鏈接會自動斷開,重新鏈接VPN可以恢復。 後者需要在瀏覽器上進行設置,但比較穩定,沒出過什麼問題。
兩種方法速度差不多,都比裸的Squid慢。
PS:Hulu - 通過VPN可以看,Squid代理卻不行。 後者具體情況是,在播放完廣告之後報告一個錯
Sorry, we are unable to stream this video. Please check your Internet connection and try again.
點“reload the video”,重新放了一遍廣告,錯誤依舊。可能Hulu已經不僅僅在播放前查IP了。