GithubHelp home page GithubHelp logo

ginuerzh / gost Goto Github PK

View Code? Open in Web Editor NEW
15.1K 15.1K 2.4K 22.21 MB

GO Simple Tunnel - a simple tunnel written in golang

License: MIT License

Go 99.42% Dockerfile 0.07% Makefile 0.51%
dns go golang http2 kcp obfs4 quic shadowsocks sni socks5 ssh tls tunnel tuntap udp

gost's Introduction

GO Simple Tunnel

GO语言实现的安全隧道

GoDoc Go Report Card codecov GitHub release Docker gost

English README

特性

Wiki站点: v2.gost.run

Telegram讨论群: https://t.me/gogost

Google讨论组: https://groups.google.com/d/forum/go-gost

安装

二进制文件

https://github.com/ginuerzh/gost/releases

源码编译

git clone https://github.com/ginuerzh/gost.git
cd gost/cmd/gost
go build

Docker

docker run --rm ginuerzh/gost -V

Homebrew

brew install gost

Ubuntu商店

sudo snap install core
sudo snap install gost

快速上手

不设置转发代理

  • 作为标准HTTP/SOCKS5代理
gost -L=:8080
  • 设置代理认证信息
gost -L=admin:123456@localhost:8080
  • 多端口监听
gost -L=http2://:443 -L=socks5://:1080 -L=ss://aes-128-cfb:123456@:8338

设置转发代理

gost -L=:8080 -F=192.168.1.1:8081
  • 转发代理认证
gost -L=:8080 -F=http://admin:[email protected]:8081

设置多级转发代理(代理链)

gost -L=:8080 -F=quic://192.168.1.1:6121 -F=socks5+wss://192.168.1.2:1080 -F=http2://192.168.1.3:443 ... -F=a.b.c.d:NNNN

gost按照-F设置的顺序通过代理链将请求最终转发给a.b.c.d:NNNN处理,每一个转发代理可以是任意HTTP/HTTPS/HTTP2/SOCKS4/SOCKS5/Shadowsocks类型代理。

本地端口转发(TCP)

gost -L=tcp://:2222/192.168.1.1:22 [-F=...]

将本地TCP端口2222上的数据(通过代理链)转发到192.168.1.1:22上。当代理链末端(最后一个-F参数)为SSH转发通道类型时,gost会直接使用SSH的本地端口转发功能:

gost -L=tcp://:2222/192.168.1.1:22 -F forward+ssh://:2222

本地端口转发(UDP)

gost -L=udp://:5353/192.168.1.1:53?ttl=60 [-F=...]

将本地UDP端口5353上的数据(通过代理链)转发到192.168.1.1:53上。 每条转发通道都有超时时间,当超过此时间,且在此时间段内无任何数据交互,则此通道将关闭。可以通过ttl参数来设置超时时间,默认值为60秒。

注: 转发UDP数据时,如果有代理链,则代理链的末端(最后一个-F参数)必须是gost SOCKS5类型代理,gost会使用UDP over TCP方式进行转发。

远程端口转发(TCP)

gost -L=rtcp://:2222/192.168.1.1:22 [-F=... -F=socks5://172.24.10.1:1080]

将172.24.10.1:2222上的数据(通过代理链)转发到192.168.1.1:22上。当代理链末端(最后一个-F参数)为SSH转发通道类型时,gost会直接使用SSH的远程端口转发功能:

gost -L=rtcp://:2222/192.168.1.1:22 -F forward+ssh://:2222

远程端口转发(UDP)

gost -L=rudp://:5353/192.168.1.1:53?ttl=60 [-F=... -F=socks5://172.24.10.1:1080]

将172.24.10.1:5353上的数据(通过代理链)转发到192.168.1.1:53上。 每条转发通道都有超时时间,当超过此时间,且在此时间段内无任何数据交互,则此通道将关闭。可以通过ttl参数来设置超时时间,默认值为60秒。

注: 转发UDP数据时,如果有代理链,则代理链的末端(最后一个-F参数)必须是GOST SOCKS5类型代理,gost会使用UDP-over-TCP方式进行转发。

HTTP2

gost的HTTP2支持两种模式:

  • 作为标准的HTTP2代理,并向下兼容HTTPS代理。
  • 作为通道传输其他协议。
代理模式

服务端:

gost -L=http2://:443

客户端:

gost -L=:8080 -F=http2://server_ip:443
通道模式

服务端:

gost -L=h2://:443

客户端:

gost -L=:8080 -F=h2://server_ip:443

QUIC

gost对QUIC的支持是基于quic-go库。

服务端:

gost -L=quic://:6121

客户端:

gost -L=:8080 -F=quic://server_ip:6121

注: QUIC模式只能作为代理链的第一个节点。

KCP

gost对KCP的支持是基于kcp-gokcptun库。

服务端:

gost -L=kcp://:8388

客户端:

gost -L=:8080 -F=kcp://server_ip:8388

gost会自动加载当前工作目录中的kcp.json(如果存在)配置文件,或者可以手动通过参数指定配置文件路径:

gost -L=kcp://:8388?c=/path/to/conf/file

注: KCP模式只能作为代理链的第一个节点。

SSH

gost的SSH支持两种模式:

  • 作为转发通道,配合本地/远程TCP端口转发使用。
  • 作为通道传输其他协议。
转发模式

服务端:

gost -L=forward+ssh://:2222

客户端:

gost -L=rtcp://:1222/:22 -F=forward+ssh://server_ip:2222
通道模式

服务端:

gost -L=ssh://:2222

客户端:

gost -L=:8080 -F=ssh://server_ip:2222?ping=60

可以通过ping参数设置心跳包发送周期,单位为秒。默认不发送心跳包。

透明代理

基于iptables的透明代理。

gost -L=redirect://:12345 -F=http2://server_ip:443

obfs4

此功能由@isofew贡献。

服务端:

gost -L=obfs4://:443

当服务端运行后会在控制台打印出连接地址供客户端使用:

obfs4://:443/?cert=4UbQjIfjJEQHPOs8vs5sagrSXx1gfrDCGdVh2hpIPSKH0nklv1e4f29r7jb91VIrq4q5Jw&iat-mode=0

客户端:

gost -L=:8888 -F='obfs4://server_ip:443?cert=4UbQjIfjJEQHPOs8vs5sagrSXx1gfrDCGdVh2hpIPSKH0nklv1e4f29r7jb91VIrq4q5Jw&iat-mode=0'

加密机制

HTTP

对于HTTP可以使用TLS加密整个通讯过程,即HTTPS代理:

服务端:

gost -L=https://:443

客户端:

gost -L=:8080 -F=http+tls://server_ip:443

HTTP2

gost的HTTP2代理模式仅支持使用TLS加密的HTTP2协议,不支持明文HTTP2传输。

gost的HTTP2通道模式支持加密(h2)和明文(h2c)两种模式。

SOCKS5

gost支持标准SOCKS5协议的no-auth(0x00)和user/pass(0x02)方法,并在此基础上扩展了两个:tls(0x80)和tls-auth(0x82),用于数据加密。

服务端:

gost -L=socks5://:1080

客户端:

gost -L=:8080 -F=socks5://server_ip:1080

如果两端都是gost(如上)则数据传输会被加密(协商使用tls或tls-auth方法),否则使用标准SOCKS5进行通讯(no-auth或user/pass方法)。

Shadowsocks

gost对shadowsocks的支持是基于shadowsocks-go库。

服务端:

gost -L=ss://chacha20:123456@:8338

客户端:

gost -L=:8080 -F=ss://chacha20:123456@server_ip:8338
Shadowsocks UDP relay

目前仅服务端支持UDP Relay。

服务端:

gost -L=ssu://chacha20:123456@:8338

TLS

gost内置了TLS证书,如果需要使用其他TLS证书,有两种方法:

  • 在gost运行目录放置cert.pem(公钥)和key.pem(私钥)两个文件即可,gost会自动加载运行目录下的cert.pem和key.pem文件。
  • 使用参数指定证书文件路径:
gost -L="http2://:443?cert=/path/to/my/cert/file&key=/path/to/my/key/file"

对于客户端可以通过secure参数开启服务器证书和域名校验:

gost -L=:8080 -F="http2://server_domain_name:443?secure=true"

对于客户端可以指定CA证书进行证书锁定(Certificate Pinning):

gost -L=:8080 -F="http2://:443?ca=ca.pem"

证书锁定功能由@sheerun贡献

gost's People

Contributors

bnuhero avatar cute avatar dependabot[bot] avatar dmitry-online avatar ginuerzh avatar gnought avatar guqing637 avatar honwen avatar hubix9 avatar isofew avatar jeffrey4l avatar koaiwu avatar lkebin avatar luyuhuang avatar mengzhuo avatar messyidea avatar moonfruit avatar openwrt2223 avatar p-pppp avatar purerosefallen avatar recall704 avatar septs avatar sheerun avatar sleshep avatar soffchen avatar suguds avatar testwill avatar wencaiwulue avatar xinst avatar zhangzqs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gost's Issues

websocket的问题

1.2版本
./gost -ws 就可以了
2.0
./gost -L=ws://ws:8888 -v=4 -logtostderr
提示 I1127 20:02:18.097704 88575 util.go:65] open cert.pem: no such file or directory
要如何破

HTTP 代理对 telegram 无效

可能是个 bug,./gost -L :5555 -m rc4-md5 -p pass -ws -S 客户端,telegram desktop 设置使用生成的 http 代理,无法连接,别的 app 可以顺利使用生成的 http 代理。

关于配置逻辑的疑问

对贵项目对于服务端客户端的定义存疑:若欲让 SS 服务端(配置在海外VPS)走 Socks 5:9050 端口,以达到链式双重代理的要求,请问此时 SS 的 服务端 是否该被定义为GOST的 客户端
此时的配置是否应为:
gost -L=:9050 -F=ss://aes-128-cfb:123456@server_ip:8338

不能连接到服务器。

Server:CentOS 6.5 gost_1.8
gost -L=:8080 -tls

Client :Windows 7 & Archlinux gost 1.8
gost.exe -L=:8899 -S=104.238.xxx.xxx:8080 -tls
Explorer:Chrome & SwithyOmega Plugin
method:http/https/socks 127.0.0.1 8899

Client Log:
2015/09/21 13:05:06 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:05:06 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:05:06 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:05:06 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:05:06 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:05:06 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:05:06 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:05:06 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:05:06 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:05:06 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:05:06 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:05:36 client.go:175: malformed HTTP request "\x04\x01\x00Pӓ\x04\x1f\x00"
2015/09/21 13:07:11 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:07:11 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:07:11 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:07:11 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:07:11 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:07:11 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:07:41 client.go:175: malformed HTTP request "\x04\x01\x01\xbb\x05\t\xfa\xa4\x00"
2015/09/21 13:11:04 client.go:235: GetAddrInfoW: No such host is known.
2015/09/21 13:11:34 client.go:175: malformed HTTP request "\x04\x01\x01\xbb\x05\t\xfa\xa4\x00"

Linux下和Windows下报错一致。服务器能ping的通,ss代理正常。使用gost的时候,http代理和tls代理报错是一致的,我不清楚是哪里的问题。另外,服务器的gost没有任何日志输出。

如何在服务端和客户端设置密码?

用-p参数貌似没有作用,例如:
我在服务端用 ./gost -p="abc"
客户端用 gost -p="xyz"
两个密码设置为不同,但是依然可以连接

连接到是很正常,看网页和视频都没问题,但是密码怎么设置呢?不设置密码也可以直接连接,这样的话不管是谁,只要知道我的服务端地址就都可以连接啊

可否开发一个安卓的gost应用?

在手机上可以跑gost的arm版,但是怎么都没法设置代理,proxyandroid,影梭,fqrouter,还是wifi的代理设置,似乎Android不支持本机的代理服务器,希望能开发个类似lantern和影梭的gost应用,socks转vpn.

remote: conn.go:10:2: cannot find package "github.com/golang/glog" in any of:

remote: /app/tmp/cache/go1.4.2/go/src/github.com/golang/glog (from $GOROOT)
remote: /tmp/build_0e42156230034c956db02b5cb5cd4412/.heroku/go/src/github.com/ginuerzh/gost/Godeps/_workspace/src/github.com/golang/glog (from $GOPATH)
remote: /tmp/build_0e42156230034c956db02b5cb5cd4412/.heroku/go/src/github.com/golang/glog
remote: godep: go exit status 1
remote:
remote: ! Push rejected, failed to compile Go app

这要怎么办 heroku 不支持 import "github.com/golang/glog" ??

增加多用户支持?

是否能加上多用户支持,可以多用户验证和流量统计,比较适合共享出去 :)

可否使用 SSL 与服务器连接呢

目前客户端中填写服务器的标准格式是 gost -S=server_ip:port , 使用 Cloud9 IDE 和 Heroku 只能
gost -S=*.c9.io:80gost -S=*.herkuapp.com:80 可行,无法使用 SSL. 可否加入类似 gost -S=https://*.herkuapp.com 这种功能以使用 SSL 呢?

2.0 rc2触发google的异常流量监测

经测试,2.0RC2版本会触发google的异常流量监测,加密方式为 socks5+tls/wss,使用2.0RC版本则没有遇到此问题

关于此网页

我们的系统检测到您的计算机网络中存在异常流量。此网页用于确认这些请求是由您而不是自动程序发出的。为什么会这样?

如果 Google 自动检测到从您的计算机网络发出的请求可能违反服务条款,就会显示此网页。这些请求一旦停止,此阻断即会失效。在此期间,如果您能破解上述人机识别系统,就可以继续使用我们的服务。

该流量可能是由恶意软件、浏览器插件或发送自动请求的脚本发出的。如果您与他人共享网络连接,请向管理员寻求帮助 — 这可能是由多台计算机使用同一 IP 地址导致的。了解详情

有时,如果您使用的是自动程序普遍使用的高级条款或者正在快速连续地发送请求,则可能需要破解人机识别系统。

IP 地址:2400:8900::f03c:91ff:fe3b:****
时间:2016-01-26T01:01:56Z
网址:https://www.google.com/search?q=asdf&ie=utf-8&oe=utf-8

Gost at present doesn't support IPv6 right?

I've tested it with an ipv6 address and it replied that there is to many colons. I want to make sure that whether is gost not supporting ipv6 or my command or server has issues,thanks.

too many open files

我这里 gost 的服务端平均每天会遇到一次此问题,即不断刷 too many open files,客户端所有连接均失败。断开所有客户端重新连接不能解决问题,只能重启服务端。我有调节过 limits,但只会影响问题发生的频率,因此猜测可能是由某种资源泄露导致。希望可以帮忙看看!

错误信息样例:

2015/07/24 11:41:10 server.go:1775: http: Accept error: accept tcp [::]:80: too many open files; retrying in 1s
2015/07/24 11:41:11 server.go:1775: http: Accept error: accept tcp [::]:80: too many open files; retrying in 1s
2015/07/24 11:41:12 server.go:1775: http: Accept error: accept tcp [::]:80: too many open files; retrying in 1s
2015/07/24 11:41:13 server.go:1775: http: Accept error: accept tcp [::]:80: too many open files; retrying in 1s
2015/07/24 11:41:14 server.go:1775: http: Accept error: accept tcp [::]:80: too many open files; retrying in 1s
2015/07/24 11:41:15 server.go:1775: http: Accept error: accept tcp [::]:80: too many open files; retrying in 1s

http+tls 模式下 使用 Basic 认证 然后会导致Chrome崩溃

测试版本 2.0-rc2
Chrome版本 47.0.2526.106
使用 Flora_Pac 生成的 PAC ,其中关键语句如下
return 'HTTPS ssl_domain:8080; DIRECT' ;
命令行 -L=http+tls://user:pass@server-ip:8080
然后 访问需要代理的网站 弹出 gost 的Basic 认证框, 输入正确的密码点确定后 Chrome崩溃.

如果不加Basic 认证 是可以使用的.

另外,直接用SwitchOmega 指定 HTTPS 代理,不使用 pac 脚本 ,也是会导致崩溃的.

所以不明问题点,特来告知作者你一下 不知道是不是软件导致还是PAC问题.

谢谢.

能否做成 daemon

前两天测试配合 redsocks,结果 gost 夜里自己死掉了,也没有看到 log
单独作为 socks 代理存在的时候就不会死

项目主页说明是不是有误?

TLS

gost内置了tls证书,如果需要使用其他tls证书,在gost目录放置key.pem(公钥)和cert.pem(私钥)两个文件即可。

应该是:
cert.pem(公钥)和key.pem(私钥) 吧?是不是写反了?

gost2 rc3不支持UDP转发

用websocket建立socks5代理:
服务端:
gost -L=ws://:8080
客户端:
gost -L=:1080 -F=wss://xxx.xxx.xxx:443

用sockscap测试UDP转发
[07:29:24] 测试已开始...
[07:29:24] 地址: 127.0.0.1:1080
[07:29:24] 代理类型: SOCKS 5
[07:29:24] 用户名: [空]
[07:29:24] 密码: [空]
[07:29:24] 正在测试代理服务器的UDP转发...
[07:29:24] 正在连接到代理服务器...
[07:29:24] 连接已建立.
[07:29:24] 正在测试UDP转发...
[07:29:24] 代理服务器绑定在 127.0.0.1:63984 以用于UDP转发.
[07:29:24] 正在测试数据传递...
[07:29:29] UDP数据传递测试失败.
[07:29:29] 测试结束.

websocket不支持UDP转发吗?只有这个速度好,想用这个玩游戏,但是UDP不行,可否解决?

DNS 问题

使用中会卡住,log显示解析服务器地址超时。DNS 没缓存起来?

2015/08/22 22:59:16 client.go:235: lookup xxxx.yyyy.com on 223.6.6.6:53: read udp 223.6.6.6:53: i/o timeout
2015/08/22 22:59:16 client.go:235: lookup xxxx.yyyy.com on 223.6.6.6:53: read udp 223.6.6.6:53: i/o timeout
2015/08/22 22:59:16 client.go:235: lookup xxxx.yyyy.com on 223.6.6.6:53: read udp 223.6.6.6:53: i/o timeout
2015/08/22 22:59:16 client.go:235: lookup xxxx.yyyy.com on 223.6.6.6:53: read udp 223.6.6.6:53: i/o timeout
2015/08/22 22:59:16 client.go:235: lookup xxxx.yyyy.com on 223.6.6.6:53: read udp 223.6.6.6:53: i/o timeout
2015/08/22 22:59:16 client.go:235: lookup xxxx.yyyy.com on 223.6.6.6:53: read udp 223.6.6.6:53: i/o timeout
2015/08/22 22:59:16 client.go:235: lookup xxxx.yyyy.com on 223.6.6.6:53: read udp 223.6.6.6:53: i/o timeout
2015/08/22 22:59:16 client.go:235: lookup xxxx.yyyy.com on 223.6.6.6:53: read udp 223.6.6.6:53: i/o timeout
2015/08/22 22:59:16 client.go:235: lookup xxxx.yyyy.com on 223.6.6.6:53: read udp 223.6.6.6:53: i/o timeout

不确定是否有内存泄漏

跑的 ss 串到远程的 wss

kern.log:Apr 26 23:59:04 soff kernel: [181179.664269] Out of memory: Kill process 48156 (gost) score 797 or sacrifice child
kern.log:Apr 26 23:59:04 soff kernel: [181179.666314] Killed process 48156 (gost) total-vm:1726736kB, anon-rss:1409524kB, file-rss:0kB

kern.log:Apr 28 09:36:26 soff kernel: [302222.501353] Out of memory: Kill process 62063 (gost) score 824 or sacrifice child
kern.log:Apr 28 09:36:26 soff kernel: [302222.503361] Killed process 62063 (gost) total-vm:1600432kB, anon-rss:1413444kB, file-rss:0kB

请问作为代理服务器时,支持用户密码认证麽?

请问,服务器端兼容标准的socks5协议, 可直接用作socks5代理, 并额外增加协商加密功能。在直接作为 socks5代理时,能支持用户密码认证吗?也就是说我在分享给朋友这个代理时,能否提供认证功能?
包括客户端,在作为代理提供时,是否也能提供认证功能,这样在分享时,能避免被滥用。

UDP Relay 一直没成功

base {
        log_debug = off;
        log_info = off;
        log = "file:/var/log/redsocks.log";
        daemon = on;
        redirector = iptables;
}

redudp {
        local_ip = 127.0.0.1;
        local_port = 1053;
        ip = 127.0.0.1;
        port = 19443;
        type = socks5;
        dest_ip = 8.8.8.8;
        dest_port = 53;
        udp_timeout = 3;
}

使用gost -L=:19443的时候,成功解析了

# dig -p 1053 www.youtube.com @127.0.0.1

; <<>> DiG 9.9.5-3-Ubuntu <<>> -p 1053 www.youtube.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21979
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.youtube.com.               IN      A

;; ANSWER SECTION:
www.youtube.com.        22890   IN      CNAME   youtube-ui.l.google.com.
youtube-ui.l.google.com. 5      IN      CNAME   youtube-ui-china.l.google.com.
youtube-ui-china.l.google.com. 154 IN   A       159.106.121.75

;; AUTHORITY SECTION:
google.com.             22020   IN      NS      ns2.google.com.
google.com.             22020   IN      NS      ns3.google.com.
google.com.             22020   IN      NS      ns4.google.com.
google.com.             22020   IN      NS      ns1.google.com.

;; ADDITIONAL SECTION:
ns1.google.com.         194821  IN      A       216.239.32.10
ns3.google.com.         194823  IN      A       216.239.36.10
ns2.google.com.         194826  IN      A       216.239.34.10
ns4.google.com.         194822  IN      A       216.239.38.10

;; Query time: 8 msec
;; SERVER: 127.0.0.1#1053(127.0.0.1)
;; WHEN: Thu Jan 21 14:51:59 GMT 2016
;; MSG SIZE  rcvd: 261

使用gost -L=:19443 -F=socks+wss://ip:port或者gost -L=:19443 -F=socks://ip:port

# dig -p 1053 www.youtube.com @127.0.0.1

; <<>> DiG 9.9.5-3-Ubuntu <<>> -p 1053 www.youtube.com @127.0.0.1
;; global options: +cmd
;; connection timed out; no servers could be reached

redsocks 报错:

1453387908.288028 socks5-udp.c:381 socks5_relay_error(...) [127.0.0.1:55036->8.8.8.8:53]: socks5_relay_error
1453387942.866162 socks5-udp.c:381 socks5_relay_error(...) [127.0.0.1:26411->8.8.8.8:53]: socks5_relay_error
1453387947.907073 socks5-udp.c:381 socks5_relay_error(...) [127.0.0.1:26411->8.8.8.8:53]: socks5_relay_error
1453387952.859461 socks5-udp.c:381 socks5_relay_error(...) [127.0.0.1:26411->8.8.8.8:53]: socks5_relay_error

too many open files

服务器上跑了7个gost进程,其中一个进程运行了大约48小时,出现了拒绝服务的情况。
root 12158 1 0 18:26 pts/1 00:00:00 gost -log_dir=/var/log/gost/ -v=4 -L=:8082 -F=tls://usr:pass@ip
查看日志报:
too many open files
日志大约900M

lsof | grep gost
可以看到有很多sock和IPv4没有释放。

重启gost后即恢复正常,请问这是程序没有正确释放文件句柄吗?

我把文件打开数限制提高到了4096,再观察几天看一下。

I use it as websockets, there is no reaction

I deploy it on c9.io cloud, the teminal prompt "ws.go:64: websocket: version != 13" , I think the cloud server has been running , my client computer is OSX 10.7 , I type this in teminal ,"./gost -L=:8080 -S=demo-project-Myusername.c9.io -ws" , there is no reaction except infinite waiting

website thumbnails return 404

When I access http://exhentai.org/ (need login e-hentai first) Display as Thumbnails can find many 404 with gost-2.0-rc2 client.
Using squid is ok.
Maybe this is "User-Agent: Go-http-client/1.1" caused?

server log:
I0209 18:25:18.762884 10603 http.go:21] [http] CONNECT exhentai.org:80
I0209 18:25:19.078412 10603 http.go:60] HTTP/1.1 200 Connection established
Proxy-Agent: gost/2.0-rc2

client log:
I0209 18:25:25.645671 26596 http.go:76] [http] CONNECT exhentai.org OK
I0209 18:25:25.645671 26596 conn.go:80] [::1]:7465 disconnected, connections:11
I0209 18:25:28.631839 26596 conn.go:75] [::1]:7491 connected, connections: 12

提个关于转发代理的建议。。。

目前的转发代理的工作模式是,单个转发代理,或者是一条转发代理链。
我的想法是这样的,能不能再增加一种转发代理的工作模式,就是设置多个转发代理,然后这些转发代理工作在负载均衡模式,也就是说,如果当前正在工作的转发代理突然失效了,程序能够自动检测到,并且切换到另一个可用的转发代理继续工作?
这样可以避免代理的单点故障导致的网络中断,保证网络长时间运行不中断,不知道这个建议能否实现?

gost tls客户端不指定证书,也能连接是什么原因

我用的是1.8版的,服务器端用了自己签发的证书,并用gost tls 命令指定了证书路径并成功运行,但是发现gost tls客户端不指定证书,也能连接是什么原因?这样岂不是没有安全性可言,请尽快修复这个bug.

在 Heroku 上部署后 APP 运行即崩溃

发现 Heroku 支持 WebSockets, 就在 Heroku 上部署了一个,可是 gost -ws 运行不起来, $ heroku logs 查看日志发现 gost 运行后崩溃,G 大是否有时间研究一下怎么在 Heroku 上运行 gost 呢?

Godeps.json 和 Procfile 都没问题,部署后 gost 一直尝试运行,但最终崩溃:

"/gost/Godeps/Godeps.json"

{
    "ImportPath": "github.com/ginuerzh/gost",
    "GoVersion": "go1.4.2",
    "Deps": [
        {
            "ImportPath": "code.google.com/p/go-uuid/uuid",
            "Comment": "null-15",
            "Rev": "35bc42037350f0078e3c974c6ea690f1926603ab"
        },
        {
            "ImportPath": "github.com/codahale/chacha20",
            "Rev": "7be6a955b0468becb6aaa609b484b52fbf355b76"
        },
        {
            "ImportPath": "github.com/ginuerzh/gosocks5",
            "Rev": "1c68fa0909fe9805bfa671af322b9ec59fe6acda"
        },
        {
            "ImportPath": "github.com/gorilla/websocket",
            "Rev": "6eb6ad425a89d9da7a5549bc6da8f79ba5c17844"
        },
        {
            "ImportPath": "github.com/shadowsocks/shadowsocks-go/shadowsocks",
            "Comment": "1.1.4",
            "Rev": "4a4293907b1641ac4b00ca70cae0d2a88611ecd9"
        },
        {
            "ImportPath": "golang.org/x/crypto/blowfish",
            "Rev": "7d5b0be716b9d6d4269afdaae10032bb296d3cdf"
        },
        {
            "ImportPath": "golang.org/x/crypto/cast5",
            "Rev": "7d5b0be716b9d6d4269afdaae10032bb296d3cdf"
        },
        {
            "ImportPath": "golang.org/x/crypto/salsa20/salsa",
            "Rev": "7d5b0be716b9d6d4269afdaae10032bb296d3cdf"
        }
    ]
}

"/gost/Procfile"

web: gost -ws

相关链接: https://devcenter.heroku.com/articles/go-websockets

是否兼容1.x版本

我用了开发者的1.x版本部署了几个APP在heroku,我想知道2.0版本还能兼容吗?如果可以的话怎么设置参数呢?特别是在我设置了密码的情况下。另外,我测试下来2.0版本跑ss效率很高,穿透能力很强,希望开发者能继续努力改进。

socks+wss方式出错

使用socks+ws方式时可以正常连接,但是wss则报错
版本:RC2
http: TLS handshake error from 114.230..:52455: tls: first record does not look like a TLS handshake

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.