实现个人服务器自由:内网穿透解决方案
前言
一直想搞个属于自己的服务器,但是ecs
小资的价格就足以让我望而却步了,所以就想着搞个内网穿透玩玩。最开始,我是打算等树莓派拿回来再搞的,但是对于有趣的事情,我总是按耐不住内心的喜悦和即刻行动的冲动,所以就在最近开始忙碌的前些时候(大概上周六,一直拖到今天),我开始搞起了内网穿透,但由于近来一直太忙,也没有时间更新内容,所以内容更新就被一拖又拖(想必到年底了各位小可爱应该也很忙),然后就一直拖到今天,因此今天我必须终结这块的内容!
内网穿透
目前,内网穿透的解决方案比较丰富,今天我们来分享其中的两种:Ngrok
和FRP
。
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
),然后我们通过刚才配置的域名和端口访问下:
这里我配置的是linux
的ssh
服务,配置完成之后我们就可以在外网环境下访问linux
了,其他服务配置类似,不同的就只有地址和端口,我顺手还测试了下网络,延迟差不多有100
毫秒,也算能够接受。
之前有小伙伴私信问我是否可以修改samba
服务的端口,其实如果通过内网穿透的方式,完全可以实现这个需求。
其他服务器:
原本到这里就结束了,但是我呢,是一个喜欢送佛送到西的小可爱,所以我还帮各位小可爱找到了一个速度更快的frp
服务器,当然也是白嫖的:
点击免费获取token
的链接,然后关注下博主的公众号(我是我的哦),然后会自动收到token
,建议想用的小可爱都关注下吧,毕竟拿人的手短。配置方法和上面一样,网速确实要比上面演示的要快一点:
可以看到这里的网络延迟只有30
毫秒左右,比上面的快多了。需要注意的是,用这个服务器的话,端口范围是5000-6000
。
网站地址如下:
http://freefrp.wlphp.com/#first
结语
内网穿透相比于云服务器还是要便宜很多的,如果能搞到公网ip
的小伙伴那就不要太爽了,完全不需要任何其他服务器,完全可以直接搭建自己的frp
服务,甚至可以直接用nginx
,我原本也是打算这么搞的,但是奈何移动没有公网IP
,而且就算有,可能也不好申请(让我回头再问问),所以暂时就放弃了。好了,关于内网穿透的内容我们就分享这么多吧,感兴趣的小伙伴可以自己亲自动手试下!
最后,再善意提醒下各位小伙伴,使用免费的frp
存在安全风险,有条件的小伙伴还是通过正规的服务商购买服务比较好,免费的frp
服务玩玩还可以,如果真正用来传输重要数据,出了信息泄露的问题就有点得不偿失了!好了,各位小可爱,晚安吧!