GOST两行命令实现内网穿透

2023-12-13 10:00:08 11点赞 92收藏 5评论

前言

先来说说什么是内网穿透,内网穿透是一种通过公共网络(通常是互联网)访问位于私有网络中的计算机或服务的技术。是否需要内网穿透?如果家里或公司的网络不能够被互联网直接访问(没有公网IP)那么就可能需要内网穿透。当然并不是说一定要做内网穿透,对于一些特定的服务,暴露到公网其实并不安全。今天介绍的是基于端口转发来实现内网穿透,所以需要一定的条件:

  • 一台拥有公网IP的主机

  • 有域名更好

介绍

GOST是一个开源软件,马上就发布3.0正式版了,可能只有小部分小伙伴听说过,但是很多小伙伴绝对使用过它提供的服务,今天只介绍它的端口转发功能,其它功能可以参阅https://gost.run/官方文档

这篇文章会先大致介绍下原理,后面再来进行实操。如果没有公网IP的网络环境就如下图一样,主机A可以访问互联网云主机互联网云主机之间也是可以互相访问的,但是互联网是无法访问到主机A的,同样云主机也无法直接访问到主机A

GOST两行命令实现内网穿透

而加上内网穿透,网络环境就变成如下图。主机A当然可以直接访问互联网,而互联网想要访问主机A,则需要先访问到云主机,而我们可以在云主机主机A上打通一个通道(因为这两台机器我们都可以控制),通过这个通道,自然就可以访问到主机A了。这样就实现常说的内网穿透了

GOST两行命令实现内网穿透

可以通过GOST非常简单的实现打通隧道的操作,只需要两行命令,在云主机上开启socks5协议的服务,再把主机A的5230的服务转发到云主机的3333端口上,这样就可以通过访问云主机的3333端口访问到主机A的5230的服务了,而6666端口就是云主机主机A之间的通道端口

GOST两行命令实现内网穿透

搭建

接下来进行演示,这里的演示环境为:云主机(阿里云ECS)、主机A(群晖218)

首先去ECS安全组,把需要的端口放开,如果服务器开启了防火墙,也要放开相应的端口

GOST两行命令实现内网穿透

分别通过SSH命令进入阿里云ECS后台,执行如下命令安装GOST(可以去https://github.com/go-gost/gost/releases下载适合主机架构的版本;如果安装过慢,也可以下载到本地再上传到ECS)

wget https://github.com/go-gost/gost/releases/download/v3.0.0-nightly.20231202/gost_3.0.0-nightly.20231202_linux_amd64.tar.gz

下载完毕后,进行解压

tar -xzvf gost_3.0.0-nightly.20231202_linux_amd64.tar.gz

在群晖218上执行(218是intel处理器)进行下载

wget https://github.com/go-gost/gost/releases/download/v3.0.0-nightly.20231202/gost_3.0.0-nightly.20231202_linux_386.tar.gz

下载完毕后,进行解压

tar -xzvf gost_3.0.0-nightly.20231202_linux_386.tar.gz

接下来运行服务,在ECS上执行如下命令运行GOST服务

./gost -L socks5://:6666?bind=true

在群晖218上执行如下命令运行GOST服务。这行命令大致的意识是把x.x.x.x远端3333端口映射到127.0.0.1的5230端口上(x.x.x.x为你服务器的地址)

./gost -L rtcp://:3333/127.0.0.1:5230 -F socks5://x.x.x.x:6666

现在打开浏览器输入x.x.x.x:3333(x.x.x.x为你服务器的地址),可以看到群晖218上端口为5230的服务已经可以被访问了

GOST两行命令实现内网穿透

如果拥有域名的话,可以通过配置反向代理,后面就可以直接使用域名访问内网的服务了,而云主机只当当做了一个中转机,使用了它的带宽而已

优化

上面的方法虽然可以把服务转发到了外网,但是如果在某些时候,我们仅仅只想连接到内网简单设置下,并不想把服务一直暴露到公网怎么办?

只需要在218上先执行:

./gost -L socks5://:7777?bind=true

再开启一个终端,再执行如下命令,服务端的命令保持不变

./gost -L rtcp://:3333/127.0.0.1:7777 -F socks5://x.x.x.x:6666

前面在ECS上执行的命令可以理解为,准备好了一个666接头等待别人来连接,而群晖218上又准备好了一个7777的接头,最后执行的rtcp://:3333/127.0.0.1:7777则是把7777的接头转到了ECS的3333上,这样打开3333就不是刚刚的5230的服务了,而是一个接头,只要连接到这个接头,就连接到群晖218的内网了

现在可以设置浏览器插件SwitchyOmega的socks5代理为x.x.x.x:3333来测试是否可以访问你的内网设备

GOST两行命令实现内网穿透

到这里有些小伙伴就会想,那这样岂不是知道端口号,人人都可以访问我的内网设备和云主机了?是的,这样只要知道了你的公网IP和端口,那么就会十分的危险,所以我们在开启socks5服务的时候可以加上授权,在云主机上执行如下命令,user为用户,123456为密码

./gost -L socks5://user:12345678@:6666?bind=true

本地设备也要加上授权(x.x.x.x为你服务器的地址)

./gost -L rtcp://:3333/127.0.0.1:5230 -F socks5://user:12345678@x.x.x.x:6666

这样就非常安全了。有小伙伴会问,那这个通道传输数据安全么?引用文档的一句话:GOST支持标准SOCKS5协议的0x00(NO AUTHENTICATION REQUIRED)和0x02(USERNAME/PASSWORD)方法,并在此基础上扩展了两个方法:TLS(0x80)和TLS-AUTH(0x82),用于数据加密。如果客户端和服务端都使用GOST,则数据传输默认会被加密(协商使用0x80或0x82方法),否则使用标准SOCKS5进行通讯(0x00或0x02方法) 同样的,可以在本地设备加上授权

./gost -L socks5://user1:123456:7777?bind=true

再运行

./gost -L rtcp://:3333/127.0.0.1:7777 -F socks5://user:12345678@x.x.x.x:6666

但是这样关闭终端就会终止程序的运行,所以修改命令为:nohup xxx > gost.log 2>&1 &,xxx为执行的命令,如下

nohup ./gost -L rtcp://:3333/127.0.0.1:7777 -F socks5://user:12345678@x.x.x.x:6666 > gost.log 2>&1 &

如果想要关闭gost程序,则可以执行

kill -9 $(ps aux | grep "gost" | sed '/grep/d' | awk '{print $2}')

最后,只需要找个支持sockt5的客户端,设置好公网IP、端口、用户、密码就可以进到你的内网了

GOST两行命令实现内网穿透

会思考的小伙伴就会发现,哪怕是拥有公网IP,也可以通过这个方法来实现去掉HTTPS后的端口号,也不用去路由器上打开防火墙和端口转发了

后记

GOST的主要用处不是用来干这个的,很多人用它来搭建中转服务,其实原理都差不多。当然GOST也不是仅仅支持socks协议,还有很多,比如可以使用ss协议gost -L ss://AEAD_CHACHA20_POLY1305:123456@:8338,其中CHACHA20_POLY1305为加密协议,123456为密码;GOST同样支持docker部署,也支持使用配置文件运行,这里只是简单的介绍了它的端口转发命令行运行而已,想要了解得更深,可以查看官方文档https://gost.run/

最后插一句,双十一阿里云有个活动,现在好像还没有结束,99元一年:2核2G3M带宽

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2699元起

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

2849元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3299元起

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

2179元起

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

2190.84元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

2099元起

Synology 群晖 DS423+ 4盘位 NAS网络存储 (Intel四核 、无内置硬盘)

Synology 群晖 DS423+ 4盘位 NAS网络存储 (Intel四核 、无内置硬盘)

4079元起

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

1199元起

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

1899元起

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

2000元起

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

2699元起

Synology 群晖 DS1821+ 8盘位NAS (V1500B、4GB)

Synology 群晖 DS1821+ 8盘位NAS (V1500B、4GB)

8899元起

Synology 群晖 DS223j 双盘位 NAS网络存储服务器 私有云 智能相册 文件自动同步

Synology 群晖 DS223j 双盘位 NAS网络存储服务器 私有云 智能相册 文件自动同步

1549元起

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

1699元起

Synology 群晖 DS923+ NAS网络存储服务器 标准无硬盘

Synology 群晖 DS923+ NAS网络存储服务器 标准无硬盘

4899元起

Synology 群晖 DS1821+ 8盘位 NAS(V1500B、4GB)

Synology 群晖 DS1821+ 8盘位 NAS(V1500B、4GB)

7196元起

文中相关商品

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)
5评论

  • 精彩
  • 最新
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
92
扫一下,分享更方便,购买更轻松