内网穿透原理
内网穿透(Net穿透)也即端口映射,笔者粗暴理解是一种能够将外网机器与内网机器(外网无法直接访问的设备)建立通信的一种技术解决方案。
百度百科
尽管有许多穿越NAT的技术,但没有一项是完美的,这是因为NAT的行为是非标准化的。这些技术中的大多数都要求有一个公共服务器,而且这个服务器使用的是一个众所周知的、从全球任何地方都能访问得到的IP地址。一些方法仅在建立连接时需要使用这个服务器,而其它的方法则通过这个服务器中继所有的数据——这就引入了带宽开销的问题。
具体原理详见百度百科=> https://baike.baidu.com/item/NAT%E7%A9%BF%E8%B6%8A
需要资源
一台公网服务器(可以通过IP直接访问)
树莓派(也可以是电脑,以树莓派为例)
安装
本文以frp v 0.13.0为例(具体版本可以自己定,但不保证其他版本能够成功)。
笔者在go 1.7.4版本下编译frp v 0.13.0时会出现如下编译错误,根据frp作者留言,改用go 1.8.3版本编译。
*ht.Server has no field or method Close()
安装golang环境
由于frp工具是基于golang编写,所以需要安装golang环境。
以go1.8.3版本为例(亲测有效)
- Linux aliserver 2.6.32-431.23.3.el6.i686 #1 SMP Thu Jul 31 14:37:53 UTC 2014 i686 i686 i386 GNU/Linux
- https://www.golangtc.com/static/go/1.8.4/go1.8.4.linux-armv6l.tar.gz
- Linux raspberrypi 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linux
- https://www.golangtc.com/static/go/1.8.4/go1.8.4.linux-386.tar.gz
由于下载的是编译好的包,所以安装很简单。下载后,进行解压,并设置一些环节变量即可。
具体安装步骤详见:https://golang.org/doc/install
安装frp工具
- Linux aliserver 2.6.32-431.23.3.el6.i686 #1 SMP Thu Jul 31 14:37:53 UTC 2014 i686 i686 i386 GNU/Linux
- https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_386.tar.gz
- Linux raspberrypi 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linu
- https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_arm.tar.gz
启动 & 使用 frp工具
使用起来很简单,只需要简单修改配置文件后,执行启动命令即可。
具体步骤详见:https://github.com/fatedier/frp/blob/master/README_zh.md
文章出处:胡小旭 => 利用内网穿透frp工具实现外网链接(ssh)内网树莓派设备