需求场景
在家办公时,往往需要同事看到本地服务器的效果。当然可以选择上传服务器的方式解决,当没有服务器,或者希望对方能直接访问本机时(传到服务器太麻烦,可能需配置环境),就需要内网穿透工具啦。还有一种情况就是微信公众号开发需要填写可访问的回调域名,这也可以通过内网穿透工具实现本地测试。网上有很多内网穿透工具,不过不是需要收费,就是需要注册限流等,免费的持续好用的真心没几个。如果自己有一台备案过的服务器,当然是自己搭建最好不过。
可选方式
现在比较常用的是基于ngork和frp两种方式,看了看star数和更新维护状态,后来决定使用frp。
简单介绍
frp基于go语言开发,包括服务端和客户端,服务端配置文件frps.ini,客户端配置文件frpc.ini。服务器端和客户端版本都必须是同一版本,作者并没有做兼容处理,否则可能无法生效。
开始搭建(服务端)
已经有大神做了一键安装脚本,参考https://github.com/MvsCode/frps-onekey
建议选择阿里云方式
wget https://code.aliyun.com/MvsCode/frps-onekey/raw/master/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install
该脚本自动安装go和frp,按照提示来安装即可.配置文件地址/usr/local/frps/frps.ini
因为需要多http客户端,所以需要做泛域名解析*.proxy.urcloud.co,之后就可以通过test1.proxy.urcloud.co,test2.proxy.urcloud.co等域名访问,frps.ini配置修改subdomain_host参数
subdomain_host = proxy.urcloud.co
常用命令/etc/init.d/frps {start|stop|restart|status|config|version}
开始搭建(客户端)
比较遗憾的是并没有多少文章介绍客户端的下载,都只提到了使用方式。(可是github下载真心慢啊),没有梯子的同学可以用http://gitd.cc/ 网站提供的github代下载服务,只要把frp github release页面对应版本的地址复制进去,如https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_windows_amd64.zip
,生成链接后下载即可。注意需要选择和服务端安装的版本一致。frpc.ini配置参考如下
[common]
server_addr = xxx.xxx.xxx.xxx #服务端ip地址
server_port = 5443
token = xxxxx #frps.ini中的token
admin_addr = 127.0.0.1
admin_port = 6443 #客户端dashboard端口
admin_user = admin #客户端dashboard用户名
admin_pwd = admin #客户端dashboard密码
[web1]
type = http
local_port = 8080 #客户端服务器端口
subdomain = test1 #(服务端域名,泛域名解析)
type = http local_port = 8080 #客户端服务器端口 subdomain = test1 #(服务端域名,泛域名解析)
[web2]
type = http
local_port = 8081 #客户端服务器端口
subdomain = test2 #(服务端域名,泛域名解析)
type = http local_port = 8081 #客户端服务器端口 subdomain = test2 #(服务端域名,泛域名解析)
启动客户端./frpc -c frpc.ini
之后,就可以通过test1.proxy.urcloud.co:8000(frps.ini 设置的vhost_port)访问本地的8080端口啦
ssh远程登录
[ssh]
type = tcp
local_port = 22
remote_port = 7000
如果需要远程登录家里的电脑或者树莓派,就需要配置ssh啦
frpc.ini文件配置好并设置好frpc客户端开机启动,就可以通过ssh root@ip -p 7000
命令随时实现ssh远程登录啦
树莓派设置开机启动frpc客户端
后续探索
本文暂未涉及https的使用。后续使用到会再更新。