Pages

Sunday, 24 May 2015

用gost翻墙(这个方法很强大)

gost - GO Simple Tunnel

GO语言实现的安全隧道

特性

  1. 支持设置上层http代理。
  2. 客户端可用作http(s), socks5代理。
  3. 服务器端兼容标准的socks5协议, 可直接用作socks5代理, 并额外增加协商加密功能。
  4. Tunnel UDP over TCP, UDP数据包使用TCP通道传输,以解决防火墙的限制。
  5. 多种加密方式(tls,aes-256-cfb,des-cfb,rc4-md5等)。
  6. 客户端兼容shadowsocks协议,可作为shadowsocks服务器。
二进制文件下载:https://bintray.com/ginuerzh/gost/gost/v1.3/view
Google讨论组: https://groups.google.com/forum/#!forum/go-gost

版本更新

v1.3
  • tls加密方式增加密码认证功能(与旧版本不兼容)
  • 增加版本查看(-v参数)
  • -p参数的默认值修改为空
v1.2
  • websocket tunnel增加加密功能。
v1.1
  • 支持websocket tunnel。

参数说明

-L=":8080": listen address
-P="": proxy for forward
-S="": the server that connect to
-cert="": cert file for tls
-key="": key file for tls
-m="": tunnel cipher method
-p="": tunnel cipher password
-sm="rc4-md5": shadowsocks cipher method
-sp="ginuerzh@gmail.com": shadowsocks cipher password
-ss=false: run as shadowsocks server
-ws=false: use websocket for tunnel
-v=false: print version

使用方法(注意:是1.3版

服务器端:
gost -L=:8080
服务器端设置加密:(见文末,我的补充说明)
gost -L=:8080 -m=aes-256-cfb -p=123456
服务器端有上层http代理:
gost -L=:8080 -m=aes-256-cfb -p=123456 -P=proxy_ip:port
客户端:
gost -L=:8899 -S=your_server_ip:8080
客户端设置加密:
gost -L=:8899 -S=your_server_ip:8080 -m=aes-256-cfb -p=123456
客户端有上层http代理:
gost -L=:8899 -S=your_server_ip:8080 -m=aes-256-cfb -p=123456 -P=proxy_ip:port
使用websocket tunnel
  • 服务器端 gost -L=:8080 -m=aes-256-cfb -p=123456 -ws
  • 客户端 gost -L=:8899 -S=your_server_ip:8080 -m=aes-256-cfb -p=123456 -ws
作为shadowsocks服务器:
gost支持作为shadowsocks服务器运行(-ss参数),这样就可以让android手机通过shadowsocks客户端(影梭)使用代理了。
相关参数:
-ss 开启shadowsocks模式
-sm 设置shadowsocks加密方式(默认为rc4-md5)
-sp 设置shadowsocks加密密码(默认为ginuerzh@gmail.com)
当无-ss参数时,-sm, -sp参数无效。以上三个参数对服务端无效。
相关命令:
  • 服务端:无需特殊设置,shadowsocks模式只与客户端有关,与服务端无关。
  • 客户端:gost -L :8899 -S demo-project-gostwebsocket.c9.io -sm=rc4-md5 -sp=ginuerzh@gmail.com -ss
在手机的shadowsocks软件中设置好服务器(运行gost电脑的IP),端口(8899),加密方法和密码就可以使用了。
注:shadowsocks模式与正常模式是不兼容的,当作为shadowsocks模式使用时(有-ss参数),浏览器不能使用。

tunnel加密说明

目前支持的加密方法
tls, aes-128-cfb, aes-192-cfb, aes-256-cfb, des-cfb, bf-cfb, cast5-cfb, rc4-md5, rc4, table
Client
Client端通过-m参数设置加密方式,默认为不加密(-m参数为空)。
如果设置的加密方式不被支持,则默认为不加密。
当设置的加密方式为tls时,可通过-p参数设置验证密码(若服务端支持密码验证功能)。
当设置的加密方式为非tls时,通过-p参数设置加密密码,且不能为空;-p参数必须与Server端的-p参数相同。
Server
Server端通过-m参数设置加密方式,默认为不加密(-m参数为空)。
如果设置的加密方式不被支持,默认为不处理。
如果没有设置加密方式(-m参数为空),则由client端控制加密方式,即client端可通过-m参数指定Server端使用哪种加密方式。
如果设置了加密方式(-m参数不为空),client端必须使用与Server端相同的加密方式。
当设置的加密方式为tls时,-key参数可手动指定公钥文件,-cert参数可手动指定私钥文件,如果未指定,则使用默认的公钥与私钥。 可通过-p参数设定验证密码(可选),若设置,则客户端必须通过-p参数设置相同的密码。
当设置的加密方式为非tls时,-key,-cert参数无效;通过-p参数设置加密密码,且不能为空.

from  https://github.com/ginuerzh/gost
二进制文件下载:https://bintray.com/ginuerzh/gost/gost

很类似SHADOWSOCKS.但是GOST不像SHADOWSOCKS有那么多平台下的客户端程序,所以GOST略逊于SHADOWSOCKS。
-----------------------------------
 用法:
我的补充说明:  如果你的VPS还未搭建GO环境,请先按此文http://briteming.blogspot.com/2013/05/linuxgo.html的蓝色部分搭建GO环境。
然后cd /root/mygo/,运行 go install github.com/ginuerzh/gost 来安装gost.(VPS中,需先安装git,mercurial:
apt-get install -y git mercurial 或者yum install -y git mercurial)
(或者下载可执行文件包也可:
wget https://bintray.com/ginuerzh/gost/download_file?file_path=gost_1.3_linux_amd64.tar.gz


mv download_file?file_path=gost_1.3_linux_amd64.tar.gz gost_1.3_linux_amd64.tar.gz

tar zxvf gost_1.3_linux_amd64.tar.gz

cd gost_1.3_linux_amd64 )
 root@bv:~/mygo# cd ~
root@bv:~# nohup gost -L=:8080 -m=aes-256-cfb -p=my-password > /dev/null &
回车2次,服务器端就搞好了。
客户端的设置(WINDOWS下):
下载: https://dl.bintray.com/ginuerzh/gost/%gost_1.3_windows_386.zip
(from https://dl.bintray.com/ginuerzh/gost/)
解压gost_1.3_windows_386.zip,进入解压出来的目录,我的为h:\gost_1.3_windows_386\,复制c:\windows\system32\cmd.exe文件到h:\gost_1.3_windows_386\,双击cmd.exe,在里面运行:
 gost.exe -L=:8899 -S=your-server-ip:8080 -m=aes-256-cfb -p=my-password
 (不要关闭这个cmd.exe),然后设置浏览器的SOCKS代理为127.0.0.1:8899,即可翻墙。
你可以在h:\gost_1.3_windows_386\里面新建一个bat文件,比如client.bat,其内容为:
gost.exe -L=:8899 -S=your-server-ip:8080 -m=aes-256-cfb -p=my-password
以后要运行客户端,只需双击client.bat即可。这样省得每次运行CMD.EXE后,都要输入一遍命令:
gost.exe -L=:8899 -S=your-server-ip:8080 -m=aes-256-cfb -p=my-password
至于程序作者所说:"gost支持作为shadowsocks服务器运行",我试了一下,似乎不行.
 经测试,IT‘S NOT AS FAST AS USING SHADOWSOCKS WHEN VIEWING YOUTUBE。
IT‘S AS FAST AS USING SHADOWSOCKS WHEN VIEWING WEBPAGE.
------------------------
 Gost over TLS tunnel(别人写的用法,我未测试)

玩过C9的网友应该知道,在那段时间我们用gost websocket tunnel把C9玩残了,后来我一直都没有再碰C9,
毕竟那是别人花了钱从google买了流量,这样玩很不道德。

基于目前SS不能继续开发的糟糕局势,必须有多种VPS的玩法才保险,所以我给各位介绍Gost over TLS tunnel的新玩法。

Gost over TLS tunnel的作者还是那个搞C9 websocket tunnel的作者,只是大家玩的少,不太熟悉,再加上作者很懒,说明书上写的太简要,很多人都不知道怎么玩。

具体玩法如下,用的是VPS和客户端通过TLS证书认证的方式实现,有一点难度,需要有一定linux的基础:

OS:Centos7

命令行如下:

yum install openssl-devel

自己创建证书:

openssl req -new -x509 -days 7777 -nodes -out stunnel.pem -keyout vps.pem
openssl gendh 2048 >> vps.pem
openssl x509 -subject -dates -fingerprint -in vps.pem  

然后把创建的vps.pem证书通过ftp或ssh从VPS传回到你的电脑主机

接着在VPS上运行下面的命令

wget https://github.com/ginuerzh/gost/releases/download/v1.8/gost_1.8_linux_amd64.tar.gz
tar -xvf gost_1.8_linux_amd64.tar.gz
cd gost_1.8_linux_amd64
把刚才创建的vps.pem证书放进gost_1.8_linux_amd64这个目录

运行:
 ./gost -L=:8080 -tls -cert="vps.pem"
这样VPS端就配置好了

然后到下面的网址下载客户端程序

https://github.com/ginuerzh/gost/releases/download/v1.8/gost_1.8_windows_amd64.zip

新建一个文件夹,把解压出来的gost.exe放进去
然后新建一个批处理文件比如: gost vps.bat,把下面的内容放进去

gost -L=:8899 -S=vpsip:8080 -tls -cert="vps.pem"

然后chrome或者ff新建一个代理场景:http:127.0.0.1: 8899, 就可以翻墙了.
---------

相关帖子:http://briteming.blogspot.com/2017/11/socks5-over-tls-https-and-http2-gost.html
--------------------

利用云IDE平台cloud9实现websocket tunnel,用来翻墙


利用云IDE平台Cloud9实现websocket tunnel
Cloud9 IDE是一个基于Node.JS构建的JavaScript程序开发Web IDE, 其官方(https://c9.io)提供的云IDE平台,提供了完整的Ubuntu Linux Docker容器,并且用户具有sudo权限。
在2013年,增加了对websocket的支持,详见官方blog: https://c9.io/site/blog/2013/05/native-websockets-support/
这次写的比较急,我获知这个方法后马上试验了一下,发现速度很快!在电脑和安卓手机都科学上网成功后,我就马上写出来了.

原理

在Cloud9的平台中建立websocket服务器,将数据通过websocket传输给客户端实现一个tunnel。

步骤

注册

进入https://c9.io(被墙)注册帐号,需要邮箱激活认证。

工作空间

登录后,进入dashboard, 会有一个默认的demo-project, 点击START EDITING进入。
进入到工作空间后,默认会有一个命令行窗口在下方

部署服务器

以下命令均在工作空间中的终端中操作
  1. wget https://bintray.com/artifact/download/ginuerzh/gost/gost_1.3_linux_amd64.tar.gz
  2.  
  3. tar zxf gost_1.3_linux_amd64.tar.gz
  4.  
  5. cd gost_1.3_linux_amd64/
  6.  
  7. ./gost -m=aes-256-cfb -p=123 -ws   (注意 ./gost前面的 '.' (注:执行完这一步后,命令行是没有任何输出的,此属正常)123是密码
这个时候websocket服务器就已经跑起来了
在浏览器中输入projectname-username.c9.io测试一下,会显示Bad Request,终端中也会显示websocket: version != 13,这个时候就表明websocket已经可用
这里的projectname为工程名,在这里就是demo-project;username是注册时填写的username,这里是gostwebsocket,完整的websocket地址为: demo-project-gostwebsocket.c9.io,你只要把这句里的gostwebsocket替换成你的username,也就是用户名就好了。
比如我的username(用户名)是doubi,那就是demo-project-doubi.c9.io
注:c9.io的服务不是永久在线,当页面关闭后会持续在线两天,之后需要重新打开页面,如果gost没有运行,需再次运行。

客户端连接

https://bintray.com/ginuerzh/gost/gost/view上下载对应平台的版本压缩包(mac下装gost_1.1_darwin_amd64.zip
解压后运行 (windows 去掉前面的’./’):
  1. ./gost -L :8899 -S demo-project-用户名.c9.io -m=aes-256-cfb -p=123 -ws (请替换-S参数为你自己的地址)123是密码
windows命令行:
Windows脚本:
小白版的使用方法:
首先按上面的步骤运行服务端,然后运行程序,点启动,然后等1秒再点启动代理,然后就好了,如果不想用了就右键托盘图标取消启动系统代理!
注意:无论哪种方法来连接,都是全局代理,而我写的这个小白版也只是便于系统代理的设定,不用每次启动关闭都要手动设置代理!
使用方法:
将脚本文件gost.bat放到解压后的gost目录( gost_1.3_windows_386或gost_1.3_windows_amd64)下,修改脚本文件中的命令参数(将参数中的XXX替换为你的用户名),直接执行。
如果处在http代理环境中(代理要支持websocket),可增加上层代理(-P参数):
  1. ./gost -L :8899 -S demo-project-用户名.c9.io -P your_proxy_ip:port -ws
gost命令具体参数说明:
  1. ./gost -h
最后设置好浏览器代理(http或socks5均可)就可访问了, 代理的服务器: localhost, 端口8899 (-L参数设置)。
Tip: 访问http://whatismyip.com/查询IP (可以看到cloud9使用的是google的云服务,相当于我们直接连接到了google的网络了):

Android设置

gost支持作为shadowsocks服务器运行(ss参数),这样就可以让android手机通过shadowsocks(影梭)使用代理了。
相关参数:
-ss    开启shadowsocks模式
-sm   设置shadowsocks加密方式(默认为rc4-md5)
-sp    设置shadowsocks加密密码(默认为ginuerzh@gmail.com)
当无-ss参数时,-sm, -sp参数无效。
以上三个参数对服务端无效。
相关命令:
服务端:
无需特殊设置
shadowsocks模式只与客户端有关,与服务端无关。
  1. ./gost -L :8899 -S demo-project-你的用户名.c9.io -ws -sm=rc4-md5 -sp=ginuerzh@gmail.com -ss
Win系统不需要“./”
加密方式默认为rc4-md5 (sm参数设置),密码默认为ginuerzh@gmail.com(sp参数设置)
在手机的shadowsocks软件中设置好服务器(运行gost电脑的IP),端口(8899),加密方法和密码就可以使用了。
Tip: 注:shadowsocks模式与正常模式是不兼容的,当作为shadowsocks模式使用时(有-ss参数),浏览器不能使用。

加密方式说明

websocket加密功能需要客户端和服务端gost版本都为1.2版及以上。

目前支持的加密方法

tls, aes-128-cfb, aes-192-cfb, aes-256-cfb, des-cfb, bf-cfb, cast5-cfb, rc4-md5, rc4, table

Client端设置

Client端通过-m参数设置加密方式,默认为不加密(-m参数为空)。
如果设置的加密方式不被支持,则默认为不加密
当设置的加密方式为tls时,-p参数无效。
当设置的加密方式为非tls时,通过-p参数设置加密密码,且不能为空,默认密码为ginuerzh@gmail.com;-p参数必须与Server端的-p参数相同。

Server端设置

Server端通过-m参数设置加密方式,默认为不加密(-m参数为空)。
如果设置的加密方式不被支持,默认为不处理 (此情形被视为错误,须用户自行改正)。
如果没有设置加密方式(-m参数为空),则由client端控制加密方式,即client端可通过-m参数指定Server端使用哪种加密方式。
如果设置了加密方式(-m参数不为空),client端必须使用与Server端相同的加密方式。
当设置的加密方式为tls时,-p参数无效;-key参数可手动指定公钥文件,-cert参数可手动指定私钥文件,如果未指定,则使用默认的公钥与私钥。
当设置的加密方式为非tls时,-key,-cert参数无效;通过-p参数设置加密密码,且不能为空,默认密码为ginuerzh@gmail.com。
转载自:https://docs.google.com/document/d/1Wxwl4HrvIpie9xIRRMzasdW_HAuthBFjqL_hQCKBIfE/edit
----------------------

gost v2.5使用方法(我测试成功,非常简单省事)

下载地址: 
1. 服务端:https://github.com/ginuerzh/gost/releases/download/v2.5/gost_2.5_linux_amd64.tar.gz

2. 客户端: https://github.com/ginuerzh/gost/releases/download/v2.5/gost_2.5_darwin_amd64.zip

服务端:
./gost -L=http+tls://0.0.0.0:444
不过 服务端命令是运行在前台的,容易退出。我们可以利用systemd来把该命令运行为service:
nano /etc/systemd/system/gost-http-tls.service
其内容为:
[Unit]
After=network.target

[Service]
ExecStart=/root/gost_2.5_linux_amd64/gost -L=http+tls://0.0.0.0:444
Restart=always

[Install]
WantedBy=multi-user.target


然后运行:
systemctl start gost-http-tls

systemctl enable gost-http-tls
客户端:
./gost -L=:8080 -F=http+tls://VPSIP:444

然后设置浏览器的http proxy server为127.0.0.1:8080 ,浏览器即可翻墙。

(gost的逻辑略微有点绕,服务器端和客户端其实是同一个程序,发给gost的请求他转发出去,那他就是客户端,自己处理就是服务器端,大概就是这么个意思,从这个角度理解官方的配置说明就比较容易懂了.
step1:https://github.com/ginuerzh/gost/releases  根据你的服务器和客户端系统选择对应版本.gost需为2.0版本
step2:假设服务器端是linux,解包,执行 gost -L=socks+tls://:20000,即在20000端口开启了监听,有其他配置需求的参考官方,如果像后台运行 加  &,开机执行用nohup
step3:假设客户端是windows,bat文件的内容如下
gost -L=:8899 -F=socks+tls://106.185.42.113:20000 

将firefox/chrome的代理端口指向8899即可,socks5,内置了tls,无需指定,确保窗口一直开着,不想用了关掉窗口即可.
测试了一下速度,感觉不比ss慢.)
----------------------------------------

使用gost搭建一个socks5代理服务器


本教程仅适用于centos7和ubuntu16这样有systemd的系统。低版本系统请勿尝试。
wget "https://github.com/ginuerzh/gost/releases/download/v2.5-rc2/gost_2.5-rc2_linux_amd64.tar.gz"
tar -zxvf gost_2.5-rc2_linux_amd64.tar.gz
mv gost_2.5-rc2_linux_amd64/gost /usr/bin/gost
chmod +x /usr/bin/gost

cat>/lib/systemd/system/gost.service</etc/gost.json<
你的socks5代理设置在1088端口,用户名user,密码pass
你可以编辑/etc/gost.json来修改代理配置。
可以参阅gost教程:https://docs.ginuerzh.xyz/gost/configuration/
完成.
---------------

Docker版gost的简单说明


Gost go语言实现的安全隧道

项目地址:ginuerzh/gost

可同时监听多端口
可设置转发代理,支持多级转发(代理链)
支持标准HTTP/HTTPS/SOCKS5代理协议
SOCKS5代理支持TLS协商加密
Tunnel UDP over TCP
支持Shadowsocks协议 (OTA: 2.2+,UDP: 2.4+)
支持本地/远程端口转发 (2.1+)
支持HTTP 2.0 (2.2+)
实验性支持QUIC (2.3+)
支持KCP协议 (2.3+)
透明代理 (2.3+)

Docker版本gost
Based on debian:oldstable-slim, https://hub.docker.com/r/mixool/gost/
Based on alpine, https://hub.docker.com/r/mixool/alpine-gost/

Arukas部署:
8080-TCP|CMD -L=:8080
client: chrome+switchyomega HTTPS Endpoint:443
gost client: -L=:8080 -F=socks5://s_ip:s_port
8088-UDP|CMD -L=http2+kcp://:8088
gost client: -L=:8080 -F=http2+kcp://s_ip:s_port
8080-TCP,8088-UDP,8338-tcp|CMD
-L=:8080 -L=http2+kcp://:8088 -L=ss://aes-128-cfb:password@:8338
client: shadowsocks client
gost client: -L=:8080 -F=?
Arukas于2017-7-31结束免费试用,可以尝试部署到Bluemix、Hyber.sh等其他平台。

Daocloud部署中转:
查找Dockerhub镜像mixool/gost,部署并设置端口443 TCP TCP 外部访问,高级设置中添加启动命令

https中转,替换https://xxxx.arukascloud.io为Endpoint: -L=:443 -F=https://xxxx.arukascloud.io:443
ss中转: -L=:443 -F=ss://aes-128-cfb:123456@ip:port

Tips:
部署Daocloud中转后swichyomega也可设置代理类型为http或socks4,手机可使用此http代理。
KCP加速需要使用gost的客户端。
Arukas的Https代理地址Endpoint是固定的,Daoapp的地址和端口是固定的,均可以一次部署,长期使用(Daoapp默认的24小时关闭可用API自动重启,参考这篇文章:
http://cioic.cc/2017/Daocloud-Api%E9%87%8D%E5%90%AF%E5%BA%94%E7%94%A8.html,

可以在CMD命令中添加更多的-L监听多端口搭建不同类型代理,搭建Https+SS服务-L=:443 -L=ss://chacha20:123456@8338

https://github.com/mixool/gost
https://github.com/mixool/alpine-gost
---------------------------------------------
 
https://github.com/KANIKIG/Multi-EasyGost
https://github.com/BlueSkyXN/EasyGost
https://github.com/xxhjkl/EasyGost