最近由于个人原因离校一段时间,但机房电脑数据太多懒得处理。遂花了半小时左右搭建了 frp 服务器。
准备工作
frp 就是 fast reverse proxy。(目前笔者用到的)功能就是借助一台有公网 ip 的服务器作为中转,把内外网的流量连接起来。
先买了台小鸡来充当公网主机(服务端)。
确保机房的设备,也就是内网主机(客户端)网络畅通。
测试了内网主机能够直连公网主机。
服务端搭建
先自行下载解压 frp。
1 | mkdir -p /etc/frp/ |
服务器端使用的是可执行文件是frps
,配置文件是frps.ini
。
最简单的配置就是这样。
1 | # frps.ini |
可以参考frps_full.ini
,内附有注释。
下面假设我的服务器 ipv4 地址为114.51.41.9
,可使用的端口为11450~11466
。目前我自己写的配置如下:
1 | [common] |
bind_port
即用客户端连接到服务端的端口,需要保证其被服务端 firewall 放行。
dashboard
相关的几条,开启了一个 http://[server_addr]:11451
的 dashboard,可以查看客户端的连接状态。
直接./frps -c frps.ini
启动 frp。
开机启动
作为把裤子都卖给 systemd 的壬,本人用 systemd 来启动 frps 服务。
v0.37.0 压缩包下附带一个 ./systemd/
文件夹,内附有 frps.service
。
但是实际上不太能直接用,得自己改改。
1 | vim ./systemd/frps.service |
客户端搭建
客户端使用的是可执行文件是frpc
,配置文件是frpc.ini
。
1 | [common] |
common
中的token
需要和服务端frps.ini
中common
下token
一致。user
的设定是为避免多个客户端 proxy 重名导致的连接失败。
此时,我们就可以使用ssh -p 11455 user@114.51.41.9
来使用ssh
登录到客户端了。
注意,这里local_ip
也可以为客户端内网中其他可访问 ip。
当然先要./frpc -c frpc.ini
启动 frp。
开机启动
Windows 的开机启动很奇怪,我们直接用 winsw 注册一个系统服务实现开机自启。
下载 release 中的.exe
文件,任意改名,下以startfrpc.exe
为例。
放入和 frp 相同的目录中,在同一个目录里创建一个 utf8 编码的文本文件,改名为startfrpc.xml
,填入以下内容:
1 | <service> |
name
与description
字段分别是服务的名称与介绍。
以管理员权限执行命令:
1 | startfrpc.exe install |
如果要卸载该服务,则执行:
1 | startfrpc.exe stop |