Featured image of post Gost使用加密隧道转发数据

Gost使用加密隧道转发数据

使用Gost在两台机器间加密通信并实现端口转发

需求

  • 有两台机器A与B,需要都能访问 x.x.x.x:xx 地址。其中B机器能直接访问,A机器只能与B机器连通,无法访问 x.x.x.x:xx 地址。因此需要用Gost搭建端口转发,实现A访问B的特定端口,B再往x.x.x.x:xx 地址发送请求
  • 为了隐私与安全性考量,B的特定端口需要有权限校验,防止任何人都能访问

准备工作

  1. 这里下载最新版Gost到A、B两台机器上
  2. 将可执行文件放入 /usr/local/bin/gost 路径下

B机器配置

具体写法

使用 relay+tls模式监听本地8888端口,并将接收到的数据解密后发送到 x.x.x.x:xx

1
/usr/local/bin/gost -L=relay+tls://user:pwd@:8888/0:0  -F=forward+tcp://x.x.x.x:xx

持续化运行

需要编写systemd配置信息将Gost放入systemd运行维护,创建 /etc/systemd/system/gost.service 文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[Unit]
Description=GO Simple Tunnel
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/gost -L=relay+tls://user:pwd@:8888/0:0  -F=forward+tcp://x.x.x.x:xx
Restart=always

[Install]
WantedBy=multi-user.target

执行:systemctl daemon-reload && systemctl enable gost && systemctl start gost 即可实现启动Gost并开机自启

A机器配置

需要在本地监听一个端口(例如9999),使用与B机器相同配置的加密模式后转发到B机器的8888端口,A机器上访问 127.0.0.1:9999 即会被Gost转发到B机器后再转发到 x.x.x.x:xx 地址

1
/usr/local/bin/gost -L=tcp://:9999/0:0 -F=relay+tls://user:pwd@B_address:8888/0:0

持续化运行

需要编写systemd配置信息将Gost放入systemd运行维护,创建 /etc/systemd/system/gost.service 文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[Unit]
Description=GO Simple Tunnel
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/gost -L=tcp://:9999/0:0 -F=relay+tls://user:pwd@B_address:8888/0:0
Restart=always

[Install]
WantedBy=multi-user.target

执行:systemctl daemon-reload && systemctl enable gost && systemctl start gost 即可实现启动Gost并开机自启

效果

A机器上访问 127.0.0.1:9999 地址,数据就会通过Gost的加密隧道到达B机器,再由B机器转发到 x.x.x.x:xx 地址

使用 Hugo 构建
主题 StackJimmy 设计