2016年4月24日 星期日

gfw.press另一翻牆組合,配搭tinyproxy (咐上一鍵安裝腳本)

在上一篇文裡寫了在Debian 7.0 x86安裝gfw.proxy+3proxy翻牆組合
得到回響是認為設置過份複雜,不利推廣搭建此一全新利器,而事實上複雜
度不是在於gfw.press,而是3proxy功能繁多,設置文件就一定是麻煩點,
這已是最少設定了 :(

不過好在gfw.press只是一條加密隧道,本身不具備代理功能,如同stunnel
必須要配合其他代理程式才能翻牆,後端代理只要支援CONNECT方式即可配搭,
而tinyproxy正是很好的選擇,設置簡單且體積輕盈,耗用系統資源很少,
而且在Debian 7.0軟件源已有編譯的執行文件,無須像3proxy要自行編譯


安裝tinyproxy的流程在第一篇文已寫,這裡只簡單說說安裝流程,以下為
Debian 7.0 x86系統,128/128 vswap nat vps

1) apt-get install tinyproxy
2) 編輯 /etc/tinyproxy.conf , 找到
   Port 8888
   改為
   Port 3128
   因為gfw.press預設使用這端口,需要監聽這個端口,然後再找到
   #Listen 192.168.0.1 在其下加入
   Listen 127.0.0.1
儲存檔案離開,其他更多的提高效率設置請參考較早前的文章,這裡不再囉嗦
gfw.press的取得方式和設置方法請看上一篇文章,這裡也不再說,相同的


為了簡化安裝過程,已編寫了一個簡單腳本,這腳本在以下系統成功安裝
Debian 7.0 x86 minimal
Debian 7.6 x86_64
Ubuntu 14.04 x86 TLS minimal
Ubuntu 14.04 x86_64 minimal
而腳本未能成功安裝的是
Debian 8.0 x86_64
Ubuntu 15.04 x86_64
原因不明,如果是這兩個OS或者手動安裝,較為容易找出問題

--------begin gfwpress.sh--------------------------------------------------

#! /bin/bash
# $PROG gfwpress.sh
# Author twfcc@twitter
# Discription: One Key install gfw.press 
# gfw.press official site: https://github.com/chinashiyu/gfw.press
# Public domain use as your own risk!
msg1="Usage: $0 {-n|-s}"
msg2="-n means install on openvz nat ipv4 share vps"
msg3="-s means install on openvz standard vps"

[ $UID -ne 0 ] && {
              echo "Execute this script must be root." >&2 ;
              exit 1 ;
}

case "$1" in
-n) flag=0 ;;
-s) flag=1 ;;
*) echo "$msg1" >&2 ;
   echo "$msg2" >&2 ;
   echo "$msg3" >&2 ;
            exit 1
            ;;
esac

apt-get update && apt-get upgrade -y 
apt-get install openssl curl openjdk-7-jre git tinyproxy -y
wait 
myip=$(curl -s v4.ifconfig.co)
pw=$(openssl rand -base64 32 | tr -d '+/0oO=' | cut -c3-18)
i=0
j=1
upper=0
lower=0
digit=0
count=${#pw}
while true ; do
c=${pw:$i:1}
[[ $c =~ [A-Z] ]] && ((upper++))
[[ $c =~ [a-z] ]] && ((lower++))
[[ $c =~ [0-9] ]] && ((digit++))
if (($upper > 0)) && (($lower > 0)) && (($digit > 0))
then
break
fi
((i++))
((j++))
if ((j == count)) ; then
unset pw i j upper lower digit
i=0
j=1
upper=0
lower=0
digit=0
pw=$(openssl rand -base64 32 | tr -d '/+0oO' |cut -c3-18)
count=${#pw}
fi
done

git clone https://github.com/chinashiyu/gfw.press.git

if [ $flag -eq 0 ] ; then
internal_ip=$(ifconfig venet0:0 \
| awk -F: '$2 ~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/{print $2}' \
| cut -d" " -f1)
port=$(echo -e ${internal_ip##*.})20
else
pick=($(for i in {19901..19999} ;do echo $i ;done))
count=${#pick[@]}
port=${pick[$((RANDOM%count-1))]}
fi
winclient="http://gfw.press/GFW.Press.msi"
tinyconf="/etc/tinyproxy.conf"
mv -f "$tinyconf" "$tinyconf".bak 
sed -e 's/^Port 8888$/Port 3128/' \
    -e 's/#Listen 192.168.0.1/Listen 127.0.0.1/' $tinyconf.bak > $tinyconf

service tinyproxy restart
wait

[ -d gfw.press ] && cd gfw.press || {
echo "gfw.press is not exist." >&2 ;
exit 1 ;
}

echo "$port $pw" > user.txt
chmod +x server.sh
./server.sh 
wait 
if netstat -nlp | grep -q 'tinyproxy' ; then
echo "ALL done,enjoy."
echo "IP: $myip"
echo "Port: $port"
echo "password: $pw"
echo
echo "Download Windows client from $winclient"
else
echo "Failed to install gfw.press" >&2
exit 1
fi
exit 0

---------------end of gfwpress.sh--------------------------------

使用方法,複製以上文字,存檔為Unix/Linux文件格式,windows下最好使用
Notepad++複製,上傳到vps /root目錄下即可,或者也可在我的網盤下載:

https://www.dropbox.com/s/k468ywju55fstyx/gfwpress.sh?dl=0

以root登陸vps,然後執行chmod +x gfwpress.sh, 這個腳本有2個選項
-n 是安裝在OpenVZ NAT IPv4 share vps,俗稱窮鬼級vps(我就是顧客)
-s 是安裝在OpenVZ 正常固定IPv4 vps

例如: ./gfwpress.sh -s 這樣

因為gfw.press是Java編寫的程序,非常吃記憶體,最好有512M或以上的
記憶體VPS,否則只能像我一樣,安裝來測試了 :(
在128M/128vSwap的32bit系統下,安裝好後使用一端口一用戶,起動30M
然後跑了數個網頁,再到youtube看一段6分鐘視頻,實體ram使用了123M,
vSwap 用了78M,基本上系統變慢了,最初是速度飛快的,總之ram多就好,
不然發揮不出威力的

:)

沒有留言:

張貼留言