在VPS上配置内网穿透
最近老经常出差到上海,笔记本和树莓派就放上海这边办公室懒得拿回公寓,但是上面都有些想随时调出来看的文件,希望能用手机直接访问这俩设备,搜了一下准备用frps-frpc做个内网穿透试试。
1 需求
用手机访问VPS特定端口后,VPS转发请求到笔记本和树莓派,就这么简单。搜到的第一篇文章就是内网穿透:在公网访问你家的 NAS。
2 部署frp
2.1 部署frps
在VPS上部署服务端frps:
下载页面在Release · fatedier/frp:
1 | wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz |
开启防火墙,我打算用默认的7000
端口:
1 | sudo firewall-cmd --zone=public --permanent --add-port=7000/tcp # frps监听端口 |
在VPS上配置frps.ini
:
1 | [common] |
配置启动项:
1 | ln frps /usr/bin/frps |
2.2 部署frpc - ssh
在树莓派上部署客户端,下载并解压:
1 | wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_arm.tar.gz |
在树莓派上配置frpc.ini
1 | [common] |
配置启动项:
1 | sudo ln frpc /usr/bin/frpc |
2.3 部署frpc - http
在笔记本上部署客户端,下载并解压:
1 | wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_darwin_amd64.tar.gz |
在笔记本上配置frpc.ini
1 | [common] |
笔记本就不配置启动项了,临时服务web,用完就关。另外,macOS的防火墙过于傻瓜,只能配置程序,不能配置端口,用nginx的时候得把这傻瓜墙关了。
3 测试
谷歌上搜个Termux的apk安在手机上,再Termux安装ssh(pkg install dropbear
),用手机登录ssh -p10022 pi@45.135.135.76
:
小结
frp作为内网穿透工具还有好多高级功能我都没试,有需要再尝试。另外,提交上面的手机图片时遇到一个不太常见的git使用场景:
1 | B |
- 一开始我提交了一张图片(即在本地库及远端github上均从X->A,本地库及远端库最新为A)
- 发现忘了给IP打码,就用
git reset --hard HEAD^
在本地回退了(即本地从A->X,而远端仍然为A) - 打码提交(即本地X->B,本地库最新为B,而远端仍然为A)。此时远端库最新的A节点和本地库最新的B节点冲突了,直接提交会出现错误:
1 | ➜ imagebed git:(master) git push -u origin master |
按照git给出的提示查看Note about fast-forwards
一节,发现我遇到的情况叫做non-fast-forward提交,即希望提交B以将分支A抹掉。此时需要使用git push --force -u origin master
命令。这种场景不常见,一般只有在没有别人参与的分支提交上能用到,因为强制提交会抹掉X->A分支的所有提交,如果是协作模式下会造成提交丢失。