gost转发使用

gost代理转发

在GOST中,GOST与其他代理服务都被看作是代理节点,GOST可以自己处理请求,或者将请求转发给任意一个或多个代理节点。

下载地址

https://github.com/ginuerzh/gost/releases
https://github.com/ginuerzh/gost/releases/download/v2.11.5/gost-linux-amd64-2.11.5.gz

开启代理服务

[root@vm ~]# gzip -d gost-linux-amd64-2.11.5.gz
[root@vm ~]# chmod +x gost-linux-amd64
[root@vm ~]# ls
gost-linux-amd64  nginx-1.20.2  nginx-1.20.2.tar.gz  ngx_http_proxy_connect_module
[root@vm ~]# mv gost-linux-amd64  /usr/local/bin/gost

[root@vm ~]# gost -V
gost 2.11.5 (go1.19.2 linux/amd64)
[root@vm ~]# gost -L :80   #对于-L参数,协议层默认为是HTTP & SOCKS5
#nohup gost -L=admin:123456@0.0.0.0:3456 > ./gost.log &

流程如下

http
sockert
host
gost:80
host
internet
[root@vm ~]# vim /usr/lib/systemd/system/gost.service
[Unit]
Description=gost
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service

[Service]
Type=simple
User=root
DynamicUser=true
ExecStart=/usr/local/bin/gost  -L :80

[Install]
WantedBy=multi-user.target

[root@vm ~]# systemctl enable gost --now
[root@iZwz95d8h70xu0k6l86c9oZ ~]# ps -ef |grep gost
root     18879     1  1 13:40 ?        00:00:00 /usr/local/bin/gost -L :80
root     18883  1492  0 13:40 pts/0    00:00:00 grep --color=auto gost
[root@vm ~]# ss -antup | grep  gost
tcp    LISTEN     0      128    [::]:80                 [::]:*                   users:(("gost",pid=18879,fd=6))

#指定代理服务器,访问   
[root@vm2 ~]# curl -I http://www.baidu.com/ -v -x 10.1.0.11:80

一个GOST服务或节点被分为两层,数据处理层和数据通道层,每一层分别对应一种网络协议。两层之间相互独立,并可以任意组合使用(除了有部分限制)。

数据处理

数据处理分为代理和转发两种类型。详细见官网吧

https://v2.gost.run/getting-started/

https://gost.run/getting-started/quick-start/

代理
    - http - HTTP协议
    - http2 - HTTP2协议
    - socks4 - SOCKS4/SOCKS4A协议
    - socks,socks5 - SOCKS5协议
    - ss - Shadowsocks协议
    - ssu - Shadowsocks UDP relay协议
    - sni - SNI
    - relay - Relay协议

转发
    - tcp - TCP端口转发
    - udp - UDP端口转发
    - rtcp - TCP远程端口转发
    - rudp - UDP远程端口转发
    
数据通道
数据通道用于承载代理或转发协议数据,目前支持的数据通道协议有很多:

tcp - 原始TCP协议
udp - 原始UDP协议
tls - TLS协议    
GOST目前有以下几个参数项:

    -L - 指定本地服务配置,可设置多个。   协议层默认为是HTTP & SOCKS5
    -F - 指定转发服务配置,可设置多个,构成转发链。
    -C - 指定外部配置文件。
    -D - 开启Debug模式,更详细的日志输出。
    -V - 查看版本,显示当前运行的gost版本号。

转发代理

gost -L :8080 -F 10.1.0.1:8081
#监听在8080端口的HTTP/SOCKS5代理服务,使用10.1.0.1:8081作为上级代理进行转发。
http
sockert
forward
host
gost:80
host
proxy
10.1.0.1
internet

多级转发代理

gost -L=:8080 -F=quic://10.1.0.1:8081 -F=socks5+wss://10.1.0.2:8082 -F=http2:N...
GOST按照-F设置的顺序通过代理链将请求最终转发给最后一个
http
sockert
forward
forward
forward
host
gost:80
host
proxy
10.1.0.1
proxy
10.1.0.1
proxy
N...

实验环境准备

os1 10.2.0.11
os2 10.2.0.12
os3 172.17.0.2
vm  192.168.56.10(能连通os1-3)

[root@vm ~]# curl 10.2.0.11
os1
[root@vm ~]# curl 10.2.0.12
os2
[root@vm ~]# curl 172.17.0.2
os3

实验测试

端口转发 tcp/udp

一对一转发
gost -L tcp://:8080/:80  #将本地的TCP端口8080映射到本地的80端口

[root@os1 /]# gost -L tcp://:8080/:80
[root@vm ~]# curl 10.2.0.11:8080
os1

[root@os1 /]# gost -L=tcp://:8080/10.2.0.12:80   #映射到别的地址端口
[root@vm ~]# curl 10.2.0.11:8080
os2


一对多转发
gost -L tcp://:8080/10.2.0.11:80,10.2.0.12:80?strategy=round&maxFails=1&failTimeout=30s

[root@os1 /]# gost -L tcp://:8080/10.2.0.11:80,10.2.0.12:80?strategy=round
[root@vm ~]# for i in {1..10};do curl 10.2.0.11:8080 ;done
os1
os2
os1
os2

转发链

#将本地的TCP端口8080通过转发链1080映射到10.2.0.11的80端口。
gost -L=tcp://:8080/10.2.0.11:80 -F socks5://192.168.56.10:1080  
[root@vm ~]# gost -L :1080
[root@os3 /]# gost -L=tcp://:8080/10.2.0.11:80 -F socks5://192.168.56.10:1080
[root@vm ~]# curl  172.17.0.2:8080
os1

带验证的http代理

[root@vm ~]# gost -L http://gost:gost@:8443
[root@os3 /]# curl -v  -x 192.168.56.10:8443 http://10.2.0.12
...
< HTTP/1.1 407 Proxy Authentication Required

[root@os3 /]# curl -x 192.168.56.10:8443 -U gost:gost http://10.2.0.12
os2

带验证的socks代理

[root@vm ~]# gost -L socks5://gost:gost@:8443
[root@os3 /]# curl  --socks5  gost:gost@192.168.56.10:8443    http://10.2.0.11
os1

代理上网

#国外某机  10.2.0.11
[root@os1 /]# gost -L ss+mwss://user:123456@:443

#国内某机  192.168.56.10   能通10.2.0.11
[root@vm ~]# gost -L :1080 -F ss+mwss://user:123456@10.2.0.11:443

#本机  172.17.0.2  只能通192.168.56.10
[root@os3 /]# curl  http://10.2.0.12
curl: (7) Failed connect to 10.2.0.12:80; Connection timed out
#访问国外某网
[root@os3 /]# curl -x 192.168.56.10:1080 http://10.2.0.12  #指定代理192.168.56.10:1080
os2

ssh转发

#TCP端口转发可以借助于标准SSH协议的端口转发功能进行间接转发
[root@os2 /]# gost -L=sshd://user:123456@:2222
[root@vm ~]# gost -L=tcp://:8080/10.2.0.12:22 -F sshd://user:123456@10.2.0.12:2222
[root@os3 /]# ssh 192.168.56.10 -p 8080
[root@os2 ~]# hostname
os2

远程端口转发

感觉跟普通转发一样
#所有到本地8080端口的数据会被转发到192.168.1.1:80。
gost -L rtcp://:8080/10.2.0.11:80
gost -L rudp://:10053/192.168.1.1:53,192.168.1.2:53,192.168.1.3:53?ttl=5s

[root@vm ~]# gost -L rtcp://:8080/10.2.0.11:80
[root@os3 /]# curl 192.168.56.10:8080
os1

远程转发链
#监听8080端口。当收到请求后再通过转发链将数据转发给rtcp服务,rtcp服务再将请求转发到192.168.1.1:80端口
gost -L=rtcp://:8080/192.168.1.1:80 -F socks5://192.168.1.2:1080
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值