老E的博客

  • 首页
  • 关于
  • 技术应用
    • VPS相关
    • AI相关
    • 盒子相关
    • 其他
  • 订阅Youtube频道
  • 网络加速
    • expressvpnNo.1 ExpressVPN
    • 最佳免费VPN-PrivadoVPN
    • NordVPN
    • 廉价王者-Surfshark
    • PrivateInternetAccess
    • 解锁一切-PrivateVPN
  • 公益资源
    • AI导航
    • 工具下载
    • Docker镜像加速
  • 友情链接
    • tickcloudTickcloud
老E的博客
专注记录并分享跨境技术应用及随想
  1. 首页
  2. 技术应用
  3. VPS相关
  4. 正文

使用gost通过一条命令同时实现内网穿透及跨境代理的方法

2023年11月9日 3731次阅读 2条评论
clawcloud
expressvpn best vpn
privado vpn
surfshark vpn
private vpn
pia vpn
nord vpn

当我们仅有一台具备公网IP的VPS时,会因为多种需求安装、部署各种软件,总体来看,大致两个方向:一是内网穿透,二是外网代理,site-to-site或者peer-to-peer之间是一条或多条加密隧道。有没有什么方法能够最大程度降低我们的部署开销,并使得整体方案更为简洁、两端更加可维护呢?当然有,本文从采用具备隧道建立与管理、代理转发两类核心功能的工具入手,使用gost部署我们的双向隧道并实现服务的相互转发。借助gost灵活、全面的特性,我们仅使用一条命令即可达成目标。gost v3的详细用法见「gost v3项目仓库」。

1.先决条件与假设环境

1.1 先决条件

  • 一台具有公网IP地址的VPS
  • VPS作为服务端开放了入站80、8080端口
  • 如需通过域名访问内网服务,需添加DNS A记录,名称随意、内容/值为VPS公共P地址

1.2 假设

以下为本文部署环境的假设,使用处不做说明。

  • VPS的ip地址为22.33.44.55
  • 在gost程序文件所在目录运行gost,未添加path
  • 客户端开放了入站1080、8096端口,1080端口提供socks5转发服务、8096端口提供媒体服务

2.配置

首先在服务端(VPS)及客户端(本地主机)上下载、解压gost 3.0 rc10。以下为从Github下载、解压的指令。无法连接github的情况下可以分别按版本点击下载「windows amd64」、「Linux amd64」和「Linux arm64」,再通过sftp上传至服务端。

#linux amd64版本
wget https://github.com/go-gost/gost/releases/download/v3.0.0-rc10/gost_3.0.0-rc10_linux_amd64.tar.gz
tar zxvf gost_3.0.0-rc10_linux_amd64.tar.gz
#linux arm64版本
wget https://github.com/go-gost/gost/releases/download/v3.0.0-rc10/gost_3.0.0-rc10_linux_arm64.tar.gz
tar zxvf gost_3.0.0-rc10_linux_arm64.tar.gz

接下来,在服务端运行如下一条命令。

./gost -L relay+wss://:8080?bind=true

#Windows下命令相同,仅路径分隔符不同
.\gost -L relay+wss://:8080?bind=true

客户端(Linux或Windows)使用如下一条命令后,愉快地去测试吧。

./gost -L socks5://:1080?udp=true -L rtcp://:80/:8096 -F relay+wss://22.33.44.55:8080

#Windows下命令相同,仅路径分隔符不同
.\gost -L socks5://:1080?udp=true -L rtcp://:80/:8096 -F relay+wss://22.33.44.55:8080

以上配置中,采用的Websocket Secure隧道相对中庸,并不是速度导向的,如果需要充分利用带宽,可替换为kcp协议。本配置方案兼容gost2,在使用relay协议并应用隧道时,需要开启bind,在服务端开启bind的前提下,客户端配置可省略服务端IP。

3.开机自启动与管理

Linux系统下,可以通过systemd守护并管理gost服务单元。本文示例服务端配置文件/etc/systemd/system/dualtunnel.service内容如下:

[Unit]
Description=A dual-tunnel by gost
After=network.target

[Service]
Type=simple
ExecStart=</path/to/yourgost> -L relay+wss://:8080?bind=true
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=multi-user.target

客户端配置文件/etc/systemd/system/dualtunnel.service内容如下:

[Unit]
Description=A dual-tunnel by gost
After=network.target

[Service]
Type=simple
ExecStart=<path/to/yourgost> -L socks5://:1080?udp=true -L rtcp://:80/:8096 -F relay+wss://22.33.44.55:8080
RestartSec=10s

[Install]
WantedBy=multi-user.target

通过nano或vi/vim编辑、保存好dualtunnel.service文件后,顺序使用systemctl命令完成开机自启动、启动、状态查看等工作。

systemctl daemon-reload
systemctl enable dualtunnel.service
systemctl start dualtunnel.service

#查看服务状态
systemctl status dualtunnel.service

Windows客户端可使用sc命令(需要管理员权限)将gost注册、添加为系统服务。

sc create gost binpath= "<path/to/gost> -L socks5://:1080?udp=true -L rtcp://:80/:8096 -F relay+wss://22.33.44.55:8080" start= auto

#对应删除服务命令
sc delete gost

4.后续

以上配置方式并非利用了gost v3版本的特性,使用v2版本同样可以实现。尽管达成了目标,但可以看到实际控制都是在客户端完成的,这显然不够规范严谨,具有公网IP地址的服务端在这样的配置案例中理应拥有更多的控制,包括隧道建立、路由、管理等方面。gost实际依托于扩展的端口转发功能实现了内网穿透隧道的建立,新的gost v3进一步加强了内网穿透方面的功能,待其3.0正式版发布后后再记录分享“二合一”进阶配置方法。

同时,支持端口转发的或同时支持正、反向代理的隧道工具进行适当配置,理论上都可以仅使用一个工具就实现内网穿透和流量代理的双重目标。

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
标签: gost vpn 代理 内网穿透 翻墙 虚拟专用网络
最后更新:2024年5月29日

老E

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

  • Charles Wong

    老E您好,有幸拜讀你的gost 設定指引,尤其是用命令行直接運行以及創建service的兩種方法對比,解決了我的疑惑。請教你一下,按你的經驗,如果客戶端在 國內, VPS在國外,這樣子用這個ghost的操作,會不會有問題? 或者說這種從國外反代到國內的情況,你推薦gost還是其他的逆向方法嗎?謝謝

    2024年11月27日
    回复
    • webmaster

      @Charles Wong 回国流量不在于协议、工具,方向敏感,你可以考虑反向shell的方式

      2024年11月28日
      回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    站内搜索
    归档
    • 2025 年 5 月
    • 2025 年 4 月
    • 2025 年 3 月
    • 2025 年 2 月
    • 2025 年 1 月
    • 2024 年 12 月
    • 2024 年 11 月
    • 2024 年 10 月
    • 2024 年 9 月
    • 2024 年 8 月
    • 2024 年 7 月
    • 2024 年 6 月
    • 2024 年 5 月
    • 2024 年 4 月
    • 2024 年 3 月
    • 2024 年 2 月
    • 2024 年 1 月
    • 2023 年 12 月
    • 2023 年 11 月
    • 2023 年 10 月
    • 2023 年 9 月
    • 2023 年 8 月
    • 2023 年 7 月
    • 2023 年 6 月

    Copyright ©2023-2025 Appscross. All Rights Reserved.