实现个人服务器自由:内网穿透解决方案

云中志

共 3004字,需浏览 7分钟

 · 2021-11-30

前言

一直想搞个属于自己的服务器,但是ecs小资的价格就足以让我望而却步了,所以就想着搞个内网穿透玩玩。最开始,我是打算等树莓派拿回来再搞的,但是对于有趣的事情,我总是按耐不住内心的喜悦和即刻行动的冲动,所以就在最近开始忙碌的前些时候(大概上周六,一直拖到今天),我开始搞起了内网穿透,但由于近来一直太忙,也没有时间更新内容,所以内容更新就被一拖又拖(想必到年底了各位小可爱应该也很忙),然后就一直拖到今天,因此今天我必须终结这块的内容!

内网穿透

目前,内网穿透的解决方案比较丰富,今天我们来分享其中的两种:NgrokFRP

Ngrok

ngrok是一个反向代理,通过在公共的端点和本地运行的 Web服务器之间建立一个安全的通道。ngrok可捕获和分析所有通道上的流量,便于后期分析和重放。

通过nogrok实现内网穿透也很简单,而且网上也有很多ngrok免费服务器资源,这里我们以Sunny-Ngrok为例,演示下内网穿透的实现方式。

注册账户

首先我们访问Sunny-Ngrok的官方网址,点击注册:

https://www.ngrok.cc/

然后填写相关注册信息:

随后就可以注册完成。

隧道管理

登录成功后,点击隧道管理菜单,可以看到如下信息,当然刚注册的账户开通隧道哪里的信息应该都是零:

之后点击开通隧道,然后选择最后一个Ngrok免费服务器,你就可以白嫖了。因为是白嫖,所以速度自然不会太快,可以看到,这里限速128k,速度自然不会太快,不过凑合能用

点击确定添加之后,还需要进一步确认

完成上面的配置工作之后,我们点击隧道管理,然后就可以看到我们的隧道信息,这里最核心的数据就是我们的隧道id,后面我们在进行内网穿透的时候要用到。

如果觉得隧道配置有问题,也可以点击编辑进行修改:

这里的本地端口就是我们本地的服务地址,我的服务端口就是8889,本来到到这里就可以正常进行内网穿透了,但是由于拖得有点久了,服务商现在需要实名认证才可以使用隧道,所以需要换个服务商看下(好吧,找了半天,没找到合适的 (-__-)。

如果你打算用这个服务商的Ngrok服务,完成如下配置之后只需要下载官方提供的客户端软件,然后运行,并输入隧道id即可完成内网穿透。

FRP

frp是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持tcp,http, https 等协议类型,并且 web服务支持根据域名进行路由转发。FRP也算是比较老牌的内网穿透工具,而且网上有很多丰富的示例,下面我们就来演示如何通过FRP实现内网穿透。

下载

第一步依然是下载工具包,由于frp是基于go实现的一款开源内网穿透工具,所以我们可以直接去github下载即可,另外各位小伙伴不要吝啬自己的start,给大佬点个赞,让这个项目更好地延续:

项目地址:

https://github.com/fatedier/frp

下载方式也很简单,直接点击右侧Releses即可,可以看到目前最新版本是0.38.0

这里我直接选择win版本,各位小伙伴根据自己需要选择对应版本即可。

frp映射基本语法

首先解压我们刚刚下载的软件包,结构大致如下:

其中ini结尾的都是frp的配置文件,等下我们的内网穿透配置就通过配置frpc.ini来实现。我们先来看下frpc.ini,默认情况下它是这样的:

其中common配置节点是不能删除的,它下面配置的通用的配置,类似于顶级域名。server_addr就是我们要映射的服务器地址,可以是是具体的ip地址或者域名(服务提供商提供的frp服务器IP 地址或者域名地址),server_port就是服务器穿透的端口,也就是服务提供商提供的frp 服务端口号。下面还可以配置token等验证信息,具体的可以去看下frp的官方文档:

https://gofrp.org/docs/

底下的ssh配置节点就是我们可以修改和添加的映射节点了,type指定映射协议类别,支持的类别还挺丰富的,感兴趣的小伙伴可以详细研究下:

这里我就直接用tcp协议了,下面的local_ip表示要映射的内网地址,可以是本机地址,也可以是内网其他机器地址,我觉得应该也可以配置其他外网地址(那是不是太多此一举了),local_port表示我们要映射的内网服务端口,remote_port就是外网的端口(服务提供商提供的端口)。

寻找frp服务商

由于没有公网ip,另外还想白嫖,所以需要找到可用的frp服务器。下面我们以freefrp.net提供的frp服务器为例,演示下如何通过frp实现内网穿透。

网址如下:

https://freefrp.net/docs.html

网站首页已经提供了我们需要的配置信息,而且不需要注册哦,是不是很良心呢?

同时网站首页给出了端口范围:

拿到这些信息之后我们要修改下frpc.ini文件,我最终的修改结果如下:

需要注意的的是,这里的配置名必须唯一(也就是这里的yunzhongzhi_linux_ssh),不能和其他用户的冲突,然后通过如下命令启动frp内网穿透:

frpc -c ./frpc.ini

如果有如下错误提示可以换个服务器试下:

从这张图中可以看到,最后提示我启动代理成功(start proxy success),然后我们通过刚才配置的域名和端口访问下:

这里我配置的是linuxssh服务,配置完成之后我们就可以在外网环境下访问linux了,其他服务配置类似,不同的就只有地址和端口,我顺手还测试了下网络,延迟差不多有100毫秒,也算能够接受。

之前有小伙伴私信问我是否可以修改samba服务的端口,其实如果通过内网穿透的方式,完全可以实现这个需求。

其他服务器:

原本到这里就结束了,但是我呢,是一个喜欢送佛送到西的小可爱,所以我还帮各位小可爱找到了一个速度更快的frp服务器,当然也是白嫖的:

点击免费获取token的链接,然后关注下博主的公众号(我是我的哦),然后会自动收到token,建议想用的小可爱都关注下吧,毕竟拿人的手短。配置方法和上面一样,网速确实要比上面演示的要快一点:

可以看到这里的网络延迟只有30毫秒左右,比上面的快多了。需要注意的是,用这个服务器的话,端口范围是5000-6000

网站地址如下:

http://freefrp.wlphp.com/#first

结语

内网穿透相比于云服务器还是要便宜很多的,如果能搞到公网ip的小伙伴那就不要太爽了,完全不需要任何其他服务器,完全可以直接搭建自己的frp服务,甚至可以直接用nginx,我原本也是打算这么搞的,但是奈何移动没有公网IP,而且就算有,可能也不好申请(让我回头再问问),所以暂时就放弃了。好了,关于内网穿透的内容我们就分享这么多吧,感兴趣的小伙伴可以自己亲自动手试下!

最后,再善意提醒下各位小伙伴,使用免费的frp存在安全风险,有条件的小伙伴还是通过正规的服务商购买服务比较好,免费的frp服务玩玩还可以,如果真正用来传输重要数据,出了信息泄露的问题就有点得不偿失了!好了,各位小可爱,晚安吧!

- END -


浏览 108
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报