GO Simple Tunnel - a simple tunnel written in golang

Overview

GO Simple Tunnel

GO语言实现的安全隧道

GoDoc Go Report Card codecov GitHub release Docker gost

English README

!!!V3版本已经可用,欢迎抢先体验!!!

特性

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 pull ginuerzh/gost

Homebrew

brew install gost

Ubuntu商店

sudo snap install core
sudo snap install gost

快速上手

不设置转发代理

  • 作为标准HTTP/SOCKS5代理
gost -L=:8080
  • 设置代理认证信息
gost -L=admin:[email protected]:8080
  • 多端口监听
gost -L=http2://:443 -L=socks5://:1080 -L=ss://aes-128-cfb:[email protected]: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:[email protected]:8338

客户端:

gost -L=:8080 -F=ss://chacha20:[email protected]_ip:8338
Shadowsocks UDP relay

目前仅服务端支持UDP Relay。

服务端:

gost -L=ssu://chacha20:[email protected]: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贡献

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

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

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

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

    opened by OnionSalt 18
  • wss 协议的证书锁定无效

    wss 协议的证书锁定无效

    版本: gost 2.11.1 (go1.14.2 linux/amd64)

    重现步骤:

    • 随意生成一个证书 server.crt
    • 使用 ./gost -L 'wss://127.0.0.1:10040' 在本地启动一个服务端
    • 使用 ./gost -L 127.0.0.1:10030 -F 'wss://127.0.0.1:10040?ca=server.crt' 启动客户端
    • 设置浏览器 socks5 代理为 127.0.0.1:10030 这时是可以正常访问的.

    在服务端没有使用 server.crt 作为证书的情况下应该校验失败才对. 而如果将 wss 协议改成 https, 就能看到 certificate signed by unknown authority 的错误日志了.

    opened by luyuhuang 17
  • Connection issues for remote port forwarding

    Connection issues for remote port forwarding

    Hey,

    I use remote port forwarding with tls and auth. It seems that not all connections are successful if hitting port repedately. Here's how to reproduce:

    server (with cert.pem and key.pem)

    ./gost -logtostderr -v=5 -L=socks://admin:[email protected]:8080
    

    client

    python -m SimpleHTTPServer 8000
    ./gost -logtostderr -v=5 -L=rtcp://:2222/0.0.0.0:8000 -F=socks://admin:[email protected]:8080
    

    then:

    while ~; do curl $SERVER_IP:2222; done
    

    here's the output:

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html>
    <title>Directory listing for /</title>
    <body>
    <h2>Directory listing for /</h2>
    <hr>
    <ul>
    <li><a href="ca-key.pem">ca-key.pem</a>
    <li><a href="ca.csr">ca.csr</a>
    <li><a href="ca.pem">ca.pem</a>
    <li><a href="csr.json">csr.json</a>
    <li><a href="gost">gost</a>
    </ul>
    <hr>
    </body>
    </html>
    curl: (7) Failed to connect to 51.15.46.248 port 2222: Connection refused
    curl: (7) Failed to connect to 51.15.46.248 port 2222: Connection refused
    curl: (7) Failed to connect to 51.15.46.248 port 2222: Connection refused
    curl: (7) Failed to connect to 51.15.46.248 port 2222: Connection refused
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html>
    <title>Directory listing for /</title>
    <body>
    <h2>Directory listing for /</h2>
    <hr>
    <ul>
    <li><a href="ca-key.pem">ca-key.pem</a>
    <li><a href="ca.csr">ca.csr</a>
    <li><a href="ca.pem">ca.pem</a>
    <li><a href="csr.json">csr.json</a>
    <li><a href="gost">gost</a>
    </ul>
    <hr>
    </body>
    </html>
    curl: (7) Failed to connect to 51.15.46.248 port 2222: Connection refused
    curl: (7) Failed to connect to 51.15.46.248 port 2222: Connection refused
    curl: (7) Failed to connect to 51.15.46.248 port 2222: Connection refused
    curl: (7) Failed to connect to 51.15.46.248 port 2222: Connection refused
    

    Here are server logs: http://pastebin.com/ecVBtJ7n Here are client logs: http://pastebin.com/E56gr9FH

    Any idea what is wrong? Why is socks5 connection closing and opening? Why gost doesn't keep the connection alive?

    enhancement 
    opened by sheerun 16
  • bad version error

    bad version error

    Hello, 打算利用gost的quic协议做ss的wrap,配置如下。

    sslocal指向local gost的L:socks5+tcp://1080 local gost F利用quic指向remote server的gost L:quic://server ip:port remote gost F指向remote ssserver:socks5+tcp://127.0.0.1:1081

    感觉没什么问题,但是log显示如下: 2019/01/24 11:53:03 socks.go:801: [socks5] 127.0.0.1:4616 -> 127.0.0.1:1080: Bad version 2019/01/24 11:53:03 socks.go:801: [socks5] 127.0.0.1:4618 -> 127.0.0.1:1080: Bad version

    server gost没什么log提示。

    希望指点,谢谢。

    opened by e2ge 14
  • 不同版本是否可以混用?

    不同版本是否可以混用?

    使用客户端连接不同版本的服务端会导致客户端panic

    客户端版本:gost 2.6 (go1.11.2) 服务端版本:gost 2.5-rc1 (go1.10)

    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x4 pc=0x12000]
    
    goroutine 35 [running]:
    github.com/ginuerzh/gost.(*Node).Clone(0x286a764, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
            /Users/zhengrui/src/go/src/github.com/ginuerzh/gost/node.go:142 +0x48
    github.com/ginuerzh/gost.(*FailFilter).Filter(0x2c586e0, 0x286a700, 0x6, 0x8, 0x2b, 0x4, 0x3fffffff)
            /Users/zhengrui/src/go/src/github.com/ginuerzh/gost/selector.go:158 +0xd0
    github.com/ginuerzh/gost.(*defaultSelector).Select(0x82ff50, 0x286a700, 0x6, 0x8, 0x2908460, 0x2, 0x2, 0x0, 0x0, 0x0, ...)
            /Users/zhengrui/src/go/src/github.com/ginuerzh/gost/selector.go:33 +0x104
    github.com/ginuerzh/gost.(*NodeGroup).Next(0x29062d0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
            /Users/zhengrui/src/go/src/github.com/ginuerzh/gost/node.go:216 +0x78
    github.com/ginuerzh/gost.(*Chain).selectRouteFor(0x2815ae0, 0x2c588d0, 0xa, 0x0, 0x42b70, 0x8d)
            /Users/zhengrui/src/go/src/github.com/ginuerzh/gost/chain.go:298 +0x12c
    github.com/ginuerzh/gost.(*Chain).dialWithOptions(0x2815ae0, 0x2c588d0, 0xa, 0x2bc8540, 0x35892c, 0x10, 0x407358, 0x1)
            /Users/zhengrui/src/go/src/github.com/ginuerzh/gost/chain.go:130 +0x4c
    github.com/ginuerzh/gost.(*Chain).Dial(0x2815ae0, 0x2c588d0, 0xa, 0x282b798, 0x4, 0x4, 0x1, 0x1add08, 0x2892214, 0x0)
            /Users/zhengrui/src/go/src/github.com/ginuerzh/gost/chain.go:118 +0xec
    github.com/ginuerzh/gost.(*socks5Handler).handleConnect(0x2908558, 0x4f4cb0, 0x2906420, 0x29085f0)
            /Users/zhengrui/src/go/src/github.com/ginuerzh/gost/socks.go:438 +0x3a0
    github.com/ginuerzh/gost.(*socks5Handler).Handle(0x2908558, 0x4f4e60, 0x280c2c0)
            /Users/zhengrui/src/go/src/github.com/ginuerzh/gost/socks.go:398 +0x290
    created by github.com/ginuerzh/gost.(*Server).Serve
            /Users/zhengrui/src/go/src/github.com/ginuerzh/gost/server.go:81 +0x3e4
    
    bug 
    opened by xxxsen 13
  • 2.5版本新架构2个已知bug

    2.5版本新架构2个已知bug

    2.5版本新架构2个已知bug 1:使用标准的ssh模式(forward+ssh),无法作为中间层使用, 2:mws/mwss模式如果中断之后,客户端必须发起2次请求才可以连接,第一次请求会失败. 3:mws/mwss模式,如果服务端挂了一会,然后客户端就连不上了,必须重新启动客户端,这个模式问题多.

    enhancement 
    opened by f4nff 13
  • server.go 当中 从sync.Pool中取出来的[]byte 是否更应该用 *[]byte

    server.go 当中 从sync.Pool中取出来的[]byte 是否更应该用 *[]byte

    具体原因参照: https://staticcheck.io/docs/checks#SA6002

    server.go中 对应片段, 改成: func copyBuffer(dst io.Writer, src io.Reader) error { buf := lPool.Get().(*[]byte) defer lPool.Put(buf)

    _, err := io.CopyBuffer(dst, src, *buf)
    return err
    

    }

    v3 
    opened by shoaly 12
  • 希望增加功能 DNS over Proxy

    希望增加功能 DNS over Proxy

    类似:gost -L='dns://:53?dns=1.1.1.1:53/tcp' -F='socks5://127.0.0.1:1080' 这样查询 DNS 的流量就会通过 socks5 代理去远端查询,而不是在本机直接查询

    因为有些程序设置了 socks5 代理后,DNS 查询还是用本机的,得多单独代理一次 DNS

    希望能够实现,谢谢

    opened by GeekDuanLian 12
  • gost kcp模式断流问题

    gost kcp模式断流问题

    花了不少时间挨个版本测试的 v2.3-2.6.1版本的kcp均正常不断流。 v2.7.0-2.11.1版本全部断流。

    测试方法是:ssh配置代理,连本地gost,本地gost连到国外的gost服务端,ssh连上国外的服务器后1-10分钟就断了。

    本地配置: { "key": "it's a secrect", "crypt": "aes", "mode": "fast2", "mtu" : 1200, "sndwnd": 1024, "rcvwnd": 2048, "datashard": 10, "parityshard": 3, "dscp": 0, "nocomp": false, "acknodelay": false, "nodelay": 0, "interval": 40, "resend": 0, "nc": 0, "sockbuf": 4194304, "keepalive": 30, "scavengettl":3600, "snmplog": "", "snmpperiod": 60 } 本地启动命令: gost -L=redirect://:1090 -F=kcp://**:***@*:4000?c=gost.conf

    服务器端配置: { "key": "it's a secrect", "crypt": "aes", "mode": "fast2", "mtu" : 1200, "sndwnd": 2048, "rcvwnd": 1024, "datashard": 10, "parityshard": 3, "dscp": 0, "nocomp": false, "acknodelay": false, "nodelay": 0, "interval": 40, "resend": 0, "nc": 0, "sockbuf": 4194304, "keepalive": 30, "scavengettl":3600, "snmplog": "", "snmpperiod": 60 } 服务器端启动命令: gost -L=kcp://****:*****@:4000?c=gost.conf

    NeedsInvestigation 
    opened by PHCSJC 11
  • 服务器端多ip的时候能否加个参数,指定用绑定ip做出口IP来请求资源?

    服务器端多ip的时候能否加个参数,指定用绑定ip做出口IP来请求资源?

    比如服务器A有3.3.3.3 和 4.4.4.4两个ip,当服务器端如下设置的时候: gost -L=socks5://4.4.4.4:1080 客户端B连接服务器A gost -L=:8080 -F=socks5://4.4.4.4:1080 用8080端口代理访问互联网,其实服务器A使用的是3.3.3.3这个ip发起请求,在多ip代理服务器上非常不方便(因为其中的一些ip可能会被一些中间网络设备block掉)

    我记得socket在请求互联网资源的时候,无论是listen动作,还是connect动作,都可以用bind方法来指定监听IP或者出口ip。

    如果能加一个参数,当设置这个参数的时候, 就会在代理服务器请求资源的时候,先bind代理服务器设置的ip就更好了,就如上面的服务器A,如果加一个参数(比如b) gost -L=socks5://4.4.4.4:1080?b=1 这样设置就能让服务器A在请求资源的时候,都会先bind 4.4.4.4 这个ip。

    不知道这个feature能否添加进来?

    Proposal Feature TODO v3 
    opened by cod1ingcoding 11
  • HTTP 抢先发送数据

    HTTP 抢先发送数据

    常规的 HTTP 代理实现会等到代理服务器返回 200 OK 之后才开始发送数据。如果提前到连接完成后,直接开始发送数据,则可以减少一个RTT的时间。 default

    通常情况下,这些预发送数据会被放到服务器的 TCP 缓存池中,不会造成问题。 唯一的问题是错误处理,如果代理无法连接目标服务器,或者代理密码错误,则后面发送的数据会被当做 HTTP 请求处理,自然就会出错了。出现这种情况的时候,直接关闭链接即可。

    Proposal 
    opened by Max-Sum 11
  • tun模式全局代理无法建立连接

    tun模式全局代理无法建立连接

    我想通过tun模式将服务器所有流量转发给客户端,但是运行后发现如此设置客户端会无法连接到服务器端,但是如果我不加0.0.0.0的路由就可以正常连接,已经检查路由表无任何问题。

    配置如下:

    服务器端:

    gost -L="tun://:8421?net=192.168.123.1/24&gw=192.168.123.2&route=0.0.0.0/0"

    客户端: gost -L tun://:8421/SERVER_IP:8421?net=192.168.123.2/24

    opened by noorall 1
  • RT-AC3100 路由器无法运行 Illegal instruction

    RT-AC3100 路由器无法运行 Illegal instruction

    [email protected]:/tmp/home/root/gost_2.8.1_linux_arm# cat /proc/cpuinfo Processor : ARMv7 Processor rev 0 (v7l) processor : 0 BogoMIPS : 2798.38

    processor : 1 BogoMIPS : 2798.38

    Features : swp half thumb fastmult edsp CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x3 CPU part : 0xc09 CPU revision : 0

    Hardware : Northstar Prototype Revision : 0000 Serial : 0000000000000000 [email protected]:/tmp/home/root/gost_2.8.1_linux_arm# ./gost Illegal instruction [email protected]:/tmp/home/root/gost_2.8.1_linux_arm#

    我尝试了各个版本的都不行,请问有什么办法吗?

    opened by mirror222 0
  • Help! I want to start Gost with SS-TCP and SS-UDP, but now I can only do it in 2 terminal, can someone help me to do it in 1 terminal?

    Help! I want to start Gost with SS-TCP and SS-UDP, but now I can only do it in 2 terminal, can someone help me to do it in 1 terminal?

    Help! I want to start Gost enabling SS-TCP and SS-UDP, but now I can only do it in 2 terminals with "-L ss://:local_port/remote_ip:remote_port" and "-L ssu://:local_port -F ssu://remote_ip:remote_port". So how can do it in 1 terminal?

    opened by jackmarshall18 0
  • IPs we defined

    IPs we defined

    Hello, I am using Gost for TLS proxy, my question is, is it possible that some of the IPs we defined are not sent to the server and the rest are sent to the server? How? @costinm @sheerun @mengzhuo @soffchen image

    opened by vahedicom 0
  • Do not exit the server loop on accept errors

    Do not exit the server loop on accept errors

    accept can return an error when clients terminate their connection attempts or when sending an initial SYN times out. This means a given connection cannot be used, but does not mean that other connection attempts will fail.

    Returning an error will stop the server from accepting any more connections, breaking it completely until the process is restarted. Instead, let's simply log the error.

    Also, adding a delay does not quite make sense since connections returned by accept are independent.

    I think this is what was causing #243.

    opened by knyar 1
Releases(v2.11.4)
Owner
ginuerzh
To be conscious that you are ignorant is a great step to knowledge.
ginuerzh
A deployable proxy server and tunnel written in go

Tunnelify Tunnelify is a deployable proxy server and tunnel written in go Installing | Quickstart | Configuration Installing Direct download You can i

Kofo Okesola 33 Nov 17, 2022
Simple HTTP tunnel using SSH remote port forwarding

Simple HTTP tunnel using SSH remote port forwarding

Skye L. 23 Nov 18, 2022
Chisel is a fast TCP/UDP tunnel, transported over HTTP, secured via SSH.

Chisel is a fast TCP/UDP tunnel, transported over HTTP, secured via SSH. Single executable including both client and server. Written in Go (golang). Chisel is mainly useful for passing through firewalls, though it can also be used to provide a secure endpoint into your network.

Jaime Pillora 8.2k Dec 1, 2022
A Stable & Secure Tunnel based on KCP with N:M multiplexing and FEC. Available for ARM, MIPS, 386 and AMD64。KCPプロトコルに基づく安全なトンネル。KCP 프로토콜을 기반으로 하는 보안 터널입니다。

Disclaimer: kcptun maintains a single website — github.com/xtaci/kcptun. Any websites other than github.com/xtaci/kcptun are not endorsed by xtaci. Re

xtaci 13.1k Nov 30, 2022
Toy gRPC Tunnel over CloudFlare (Proof of Concept)

gun You know what it means. Guide Server Go to your domain in CloudFlare. In "Network" tab, turn on gRPC.

Qv2ray Workgroup 146 Nov 3, 2022
Cloud Native Tunnel

inlets is a Cloud Native Tunnel written in Go Expose your local endpoints to the Internet or within a remote network, without touching firewalls. Foll

inlets 8.4k Jan 4, 2022
Clash - A rule-based tunnel in Go.

Clash A rule-based tunnel in Go. Features Local HTTP/HTTPS/SOCKS server with authentication support VMess, Shadowsocks, Trojan, Snell protocol support

Dreamacro 33.5k Nov 23, 2022
A rule-based tunnel in Go with experimental features

Experimental-Clash A rule-based tunnel in Go with experimental features. Features Local HTTP/HTTPS/SOCKS server with authentication support VMess, Sha

Clash .NET 133 Nov 15, 2022
An anonymous, encrypted Point-to-Point (Layer 3) tunnel between two peers.

NKN-Link An anonymous, encrypted Point-to-Point (Layer 3) tunnel between two peers. NKN-Link Table of Contents Preface Description Install Setup Run P

HAH! Sun 7 Apr 6, 2022
Gogrok is a self hosted, easy to use alternative to ngrok. It uses SSH as a base protocol, using channels and existing functionality to tunnel requests to an endpoint.

gogrok A simple, easy to use ngrok alternative (self hosted!) The server and client can also be easily embedded into your applications, see the 'serve

Tyler Stuyfzand 5 Jun 15, 2022
HTTP tunnel over Websocket

WS PROXY This is a reverse HTTP proxy over websockets. The aim is to securely make call to internal APIs from outside. How does it works a WSP client

root.gg 83 Nov 12, 2022
A Minecraft scanner written in Golang (first Golang project)

__ __/ \__ Gothyc A Minecraft port scanner written in Go. ?? / \__/ \__ \__/ \__/ \ Version 0.3.0 \__/ \__/ Author @toas

toast 11 Nov 6, 2022
Simple wget - Simple wget written as test for Scorum

simple_wget simple wget written as test for Scorum Task: Implement in Go (http:/

Andrey Solomenniy 0 Jan 24, 2022
An SNMP library written in GoLang.

gosnmp GoSNMP is an SNMP client library fully written in Go. It provides Get, GetNext, GetBulk, Walk, BulkWalk, Set and Traps. It supports IPv4 and IP

Go SNMP 917 Nov 21, 2022
The hotwire demo chat written in Golang

Hotwire Go Example This is a recreation of the Hotwire Rails Demo Chat with a Go backend. See the Hotwire docs for more information about Hotwire. Qui

John Turner 87 Nov 10, 2022
High-performance PHP application server, load-balancer and process manager written in Golang

RoadRunner is an open-source (MIT licensed) high-performance PHP application server, load balancer, and process manager. It supports running as a serv

Spiral Scout 6.9k Nov 29, 2022
An URL shortener service written in Golang

ggz An URL shortener service written in Golang. Features Support MySQL, Postgres or SQLite Database. Support RESTful or GraphQL API. Support Auth0 or

null 182 Nov 18, 2022
Squzy - is a high-performance open-source monitoring, incident and alert system written in Golang with Bazel and love.

Squzy - opensource monitoring, incident and alerting system About Squzy - is a high-performance open-source monitoring and alerting system written in

Squzy 469 Nov 13, 2022
Centralized Configuration System written in Golang - Spring cloud compatible

Centralized Configuration System What is Vecosy Vecosy is a configuration service exposed through REST/GRPC. Is Spring Cloud Conf compatible and also

null 17 Sep 15, 2022