目录
一、搭建经历
!本段不涉及教学,着急的朋友请直接看第二大段的教学
1、ngrok尝试
最近开发的公众号功能需要进行本地测试,但微信能力平台的接口请求无法发送到自己电脑上跑的本地项目,总不可能先打包到服务器上进行测试,出问题再打包部署的(low)。此处就需要进行到内网(NAT)穿透,简单说就是需要讲内网电脑的特定端口暴露给公网进行访问。
由于没啥特别的需求,比如支持udp,ssh啥的,只是单纯的进行web服务调试,所以一开始选择的方案是简单易用的傻瓜式ngrok,下载解压,一句ngrok http xxxx(端口号)
就可以搞定。
内网穿透是搞定了,但微信平台的接口请求就是发不过来,自己打开生成的外网链接一看,好家伙,ngrok新版本中,新ip访问第一次有一个warning页面…,大致意思就是怕有人拿内网映射进行诈骗和一些违法犯罪的事情,需要手动点击访问网站后才能以后的访问中关掉这个页面,微信平台只是发起GET请求,鬼帮我点这个页面啊,所以请求就一直失败。解决的方案也很简单,因为微信平台发起的请求我们修改不了,所以只需要升级ngrok账户,专业版一个月20美刀…,气不过直接放弃。
————————
2、钉钉开放能力平台尝试
尝试ngrok无果后,问了下朋友,转战钉钉开放能力平台的内网穿透,因为钉钉的内网穿透是基于ngrok封装的,所以使用起来也非常简单,可能会没有上面warning页的问题。然后一通操作猛如虎:在工具github官方开源仓库上下载,做映射,取自定义域名,愣是怎么回车都是失败。结果一上钉钉能力平台官网,好家伙…,7月21号就已经废弃了…害
3、frp内网穿透搭建
尝试两个工具无果后,已经没啥心情了,果然没办法偷懒。内网穿透的工具和专门做这个的网站很多,但比如还有nps、ew、网云穿啥的。网站咱们就排除了,首先我个人会不太放心(似乎很没有意义),其次网站用多了基本要收费。
工具里选择frp也是认真了解考虑,frp搭建好后比较稳定(公网url固定),穿透方便(一条cmd命令即可),免费,配置功能简单,反向代理,支持 TCP、UDP、HTTP、HTTPS等,安全,github上近60k的start。总而言之,强大好用,就是配置没接触过,或许有些麻烦,但咱们可以一劳永逸啊!抄起键盘就是干!
二、frp搭建内网穿透教学
1、前言
- frp官方文档
- 简单介绍一下,frp主要有两个部分,客户端(frpc)和服务端(frps),服务端需要部署在具有公网IP的机器上(也就是我们自己买的ecs),客户端就是我们需要进行穿透的电脑(本地机器)
搭建环境
服务端:腾讯云的CentOS7.3,使用了宝塔面板
客户端:Window10专业版
frp版本:0.42.0
如果环境一致,搭建起来必定没有问题。
2、服务端搭建(Server)
- 首先需要在服务端下载frp并解压,通过SSH连接服务器或宝塔面板命令终端进行下载。输入命令
arch
查看处理器架构,下载对应的frp版本。
- 这里的版本是“X86_64”,选择“amd64”版本即可(版本可以去frp的github仓库找),继续输入命令
wget https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_linux_amd64.tar.gz
,等待下载完成即可。
- 下载好后进行解压,输入命令
tar -zxvf frp_0.42.0_linux_amd64.tar.gz
- 解压好后,使用宝塔的同学在文件目录中里的
/root/frp_0.42.0_linux_amd64
可以找到解压文件。使用SSH连接的同学输入命令cd frp_0.42.0_linux_amd64
可以进入。
- 这里我们只需要修改“frps.ini”文件的配置就可以了。由于只需要进行Web服务的穿透访问,这里只配置Web,其他配置按需百度添加即可,重点是成功搭建并运行。
- 配置好后,在
frp_0.42.0_linux_amd64
当前文件目录输入命令nohup ./frps -c ./frps.ini &
,会在当前目录生下生成一个名为nohup.out
的日志文件,打开即可查看。如果是下图这样,就是运行好了,此时程序会在后端不断执行,frp服务端基本搭建完成。
注意事项
- 第6点,linux大佬也可以用
systemctl
去运行,可以设置重启服务器后自动运行。 - 配置完后,需要宝塔面板和服务器管理面板(我这是腾讯云)的防火墙,都要放行对应的端口,比如我这是7000,7500,3000
- 如果启动失败,或者想重启服务端frp,需要先杀掉原本的运行着frp的进程。在在
frp_0.42.0_linux_amd64
当前文件目录输入命令lsof -i:端口号
可以查看对应端口占用情况,比如下图为命令lsof -i:7000
的执行结果,其中PID则为进程号。再执行命令kill -9 7880
即可杀死该进程。此时可以回到服务器搭建第6点进行重启。
- frp的7500端口是frp服务器端的管理后台
3、客户端搭建(Client)
- 和服务端类似,首先去frp的github仓库下载对应版本,我的是Inter的CPU,所以下载“frp_0.42.0_windows_386.zip”,如果是amd的CPU就下载“frp_0.42.0_windows_amd64.zip”。
- 下载好后,随便在电脑一个位置解压。解压后进入文件夹,修改“frpc.ini”配置文件。同样只对web服务进行了配置。
- 配置好后,在“frpc.ini”的目录下,输入cmd命令
./frpc -c frpc.ini
即可完成客户端搭建,下图为成功的输出。此时在浏览器上输入“custom_domains:remote_port”即可访问到在客户端机器“local_port”端口上运行的web服务,大功告成。
注意事项
- 客户端执行
./frpc -c frpc.ini
命令的时候可能会弹出Window10的防火墙提醒,记得点“允许” - “frpc.exe”文件不能直接双击运行
- 将执行命令打包成bat文件,可以双击运行或设置成开机自启
- 更多配置可以参考frp官网的配置文档
三、总结
frp搭建好后,使用起来非常的稳定、强大并且方便。还是推荐经常有内网穿透需求的小伙伴自己搭建一下。不要为了一时的偷懒,造成了长久的麻烦,提效是关键。