前言
疫情在家的合作开发属实不方便,不在同一局域网下,前后端交互变得异常困难。由于公网IPv4地址的稀缺,现在三大运营商分配给我们拨号后的IP地址都是内网的了(我家是长沙联通,在宽带账号名后面加上@changsha能获取到公网IP,其他用户可以咨询自己的运营商看看能不能整个公网IP)。那么我们可以不可以利用自己的服务器作为中间商,A想连接B的端口,B主动连接到服务器建立好隧道,然后A连接服务器后通过隧道连接到B呢,答案是可以的。现在流行的内网穿透软件有Ngrok和frp,前者低版本是开源的,新版是闭源的;后者是国人的作品非常之好用,部署也很简单。那有同学问了,为啥不用向日葵啥的组建局域网呢,一个是收费,二个是如果我想穿透一个Web服务,向日葵是做不到的。再说了,有自己的服务器不好好利用不是浪费🐴。
frps的部署
先去它的 GitHub上根据自己的系统架构下载最新的版本,然后解压。编辑frps.ini如下配置
1 | [common] |
第一个端口是主要的端口,就是我们的frpc客户端通过这个端口连接到服务端的。第二个端口是HTTP服务的端口,专门用来映射客户端的HTTP服务。这些端口都可以自己随意设定。
配置好之后执行frps -c frps.ini即可运行frps服务器了。
客户端的连接
客户端frpc.ini如下配置:
1 | [ssh] |
然后执行frpc -c frpc.ini就可以运行frpc客户端了。做好解析后就可以让别人访问web.frp.looyeagee.cn:6088来访问本机8080端口的Web服务了;也可以通过6100端口访问到本机的SSH服务了。
其他设置
这样还是没有很方便,因为每次还要配置域名的解析。所以我们可以做一个泛解析A记录。主机记录写上*.frp即可。这样就很方便啦,现在还有一个安全的问题,目前提供的是HTTP服务,虽然说frp提供了HTTPS服务,但是我使用了宝塔面板配置了其他网站,443端口被占用了。每次加上端口号访问真的不爽,所以我是这样做的:在宝塔新建一个网站,加上*.frp.looyeagee.cn这个通配域名,然后设置反向代理到127.0.0.1:6088即可,再开启强制HTTPS。这样我们访问HTTP就会自动重定向到HTTPS啦。


