提前声明 此穿透方式全部免费
此方法树莓派均可用。我所用的是树莓派zero w 架构是armv6,所以很多armv7架构的应用无法适配
内网穿透,意思就是将内网(本地)的web应用通过nat穿透到公网上,从而让别人可以访问到。
内网穿透目前主要由ngrok和frp两种,都非常好用,国内ngrok免费的有ittun、sunny和natapp,这三个都是免费的,前面两个可以自定义域名不需要实名,后面natapp需要vip版本才可以自定义域名,并且需要实名。
sunny的arm版本的ngrok客户端在我的树莓派运行不了,因为树莓派系统自带python,所以可以安装python版本。ittun的和natpp的ngrok都可以,由于需要自定义域名,使用的是ittun的ngrok_arm版本的。
这里是我自己的网站,欢迎访问 ragbag.ink
国内官网: https://www.ngrok.cc/
官网有详细教程,这里就复制一部分,然后修改为我需要的部分
访问官网注册账号并新建隧道
隧道名称:可以随便填写,无关紧要只是为了一个备注
前置域名:服务器免费赠送的域名,请不要带上后缀,如果要 sunny.free.idcfengye.com 只需要填写 sunny 即可
本地端口:可以为同一个局域网内任意一台机器进行映射,只需要填对ip和端口就行,例如:192.168.1.1:80
http验证用户名:非必填项,在需要的时候填写,否则可以不填
http验证密码:非必填项,在需要的时候填写,否则可以不填
解析方式为CNAME方式
我这里是在namesilo申请的域名(国外的不需要备案)(申请步骤请自行查阅,比较简单,哪天有空我写一篇)
腾讯云和阿里云的域名需要实名认证,解析步骤请到sunny官网开详细步骤
域名类型一定要选择自定义域名,在自定义域名上填写上自己购买的域名。然后保存之后需要重新启动隧道。否则不会自动生效。
根据自己的操作系统去下载对应的客户端
树莓派armv6以上架构
./sunny clientid 隧道id
要想后台运行可以使用 setsid 命令
setsid ./sunny clientid 隧道id &
树莓派ZERO是armv6架构,上述linux_arm客户端无法正常启动,会出现illegal instruction。寻找很多方法,无果,如果有大佬解决,可以分享的话请留言,或者给我发邮箱[email protected]
我采用的是python版本,因为树莓派系统自带python,可以下载安装python版本。
下面是详细步骤
将下载下来的安装包利用WinSCP上传到树莓派/home/pi目录(注只需要上传sunny.py文件即可)
给sunny.py 客户端赋予权限
sudo chmod +x sunny.py
python ./sunny.py --clientid=隧道id
隧道id改成你在 ngrok.cc 网站购买的隧道id
出现该图就成功了
setsid python sunny.py clientid 隧道id &
官网有在Linux下实现开机自动启动Ngrok客户端详细说明。python版我还没有试
好了,教程到这里就结束了,欢迎访问我的个人博客 www.ragbag.ink