gost 常用tunnel配置示例(隧道模式)
创始人
2024-05-20 11:02:31
0次

gost是用golang语言实现的一个安全隧道。地址位于:

https://github.com/ginuerzh/gost

是一个不可多得的隧道工具。

至于什么是隧道? 就是可以通过这个工具传输一些其他协议的数据。就像这个样子。

隧道有什么用呢?

可以起到一些加速的作用或者流量变换的作用。 具体就不展开了。

虽然gost带有代理功能,但是我们并不使用代理功能。这里只用它建隧道。

gost的功能特性如下:


多端口监听

多级转发链

多协议支持

TCP/UDP端口转发

TCP/UDP透明代理

DNS解析和代理

TUN/TAP设备

反向代理

负载均衡

路由控制

限速限流

准入控制

动态配置

Prometheus监控指标

Web API

Web UI

Wiki站点:https://gost.run

常用方法

gost由于非常灵活, 用起来对用户的要求还是有点高的。

不过一般掌握几个命令就可以了。

首先网络架构大概是这样的:

gost创建tunnel,在隧道中传输其他的数据。

常用的命令:

命令需要client与server配合。

下面的命令示例中的 server.com需要 在实际中换成具体的server所用的域名,直接用IP在一些情况下大概也可以。

命令示例的是对远端 80端口的通道,当然,不局限于nginx的http服务, 只要是tcp的服务,都可以用。 O(∩_∩)O哈哈~

    • tls tunnel

服务端将连接 从443转发到80口, 客户端监听本机的tcp端口80,Forward到 服务端, tunnel是经过tls加密的。 secure=false可以不对证书进行验证。

# server
gost -L tls://:443/:80# client
gost -L=tcp://:80 -F forward+tls://server.com:443?secure=false

TLS证书

GOST内置了TLS证书,如果需要使用自定义TLS证书,有两种方法:

  • 在GOST运行目录放置cert.pem(公钥)和key.pem(私钥)两个文件即可,GOST会自动加载运行目录下的cert.pem和key.pem文件。

  • 使用key和cert参数指定证书文件路径:

gost -L="tls://:443?cert=/path/to/my/cert/file&key=/path/to/my/key/file"
    • kcp tunnel

客户端连接到服务端,形成kcp tunnel, 本地访问80端口与远端80相同。

由于kcp 采用的是udp协议,并且kcp有一些加速的功能,这种方式可以对连接进行加速。

国际线路上kcp速度可以,就是不太持久。(哈哈)

# server,  nginx listen on 80 
gost -L kcp://:9000/:80# client
gost -L tcp://127.0.0.1:80  -F forward+kcp://server.com:9000

如果需要修改kcp隧道的参数,可以在后面用c=xxx这样的形式带上配置文件。

client是需要跟服务端一样的。

# server
gost -L kcp://:9000/:80?c=/path/to/config/file.json# client
gost -L tcp://127.0.0.1:80  -F "forward+kcp://server.com:9000?c=/path/to/config/file.json"

GOST中内置了一套默认的KCP配置项,默认值与xtaci/kcptun中的一致。可以通过参数c指定外部配置文件,配置文件为JSON格式:

{"key": "it's a secrect","crypt": "aes","mode": "fast","mtu" : 1350,"sndwnd": 1024,"rcvwnd": 1024,"datashard": 10,"parityshard": 3,"dscp": 0,"nocomp": false,"acknodelay": false,"nodelay": 0,"interval": 40,"resend": 0,"nc": 0,"sockbuf": 4194304,"keepalive": 10,"snmplog": "","snmpperiod": 60,"tcp": false
}

配置文件中的参数说明请参考kcptun。

3.QUIC tunnel

client本地的80端口通过tunnel通到远端主机的80端口。

中间采用的是quic协议,这个目前速度实测不是特别快。

# server./gost -L quic://:1443/:80# client
.\gost.exe -L tcp://127.0.0.1:80  -F "forward+quic://server.com:1443"

4.其他协议

HTTP2 , HTTP3(目前标准还没定下来), DTLS

等等不再一一叙述,因为命令基本都是类似的。

详情可以查看gost的官方网站。 https://gost.run/tutorials/protocols/overview/

上一篇:pinia原理学习

下一篇:指针(基础)

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...