准备工作
- VPS一台(也可以是具有公网IP的实体机)
- 访问目标设备(就是你最终要访问的设备)
- 简单的Linux基础(会用cp等几个简单命令即可)
因为frp的原理是利用服务端(所准备的VPS)进行转发,因而VPS的速度直接决定了之后连接的质量,请根据自己的需要选择相应主机配置。
服务端设置
SSH 连上 VPS 后执行以下语句:
# 查看 VPS 的架构,并根据这个选择对应的 release 版本
arch
# 去 github 上下载
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
# 解压
tar -zxf frp_0.33.0_linux_amd64.tar.gz
# 改名方便操作
mv frp_0.33.0_linux_amd64 frp
# 这里可以将文件放到想要的地方,为了方便我就放在用户根目录
# 进入 frp 目录并查看文件
cd frp/ && ls
frp 里面有四个比较重要的文件:
- frps
- frps.ini
- frpc
- frpc.ini
前两个带 s (server) 的是服务端的程序和配置文件,后两个带 c (client) 的是客户端的程序和配置文件。
这里配置服务端,所以可以删除客户端的两个文件,并且编辑服务端的配置文件:
rm frpc frpc.ini
vim frps.ini
文件默认应该有如下格式:
[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 10080
vhost_https_port = 10443
- “bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。
- “dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。
- “token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。
- “dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。
- “vhost_http_port”和“vhost_https_port”用于反向代理HTTP主机时使用,本文不涉及HTTP协议,因而照抄或者删除这两条均可。
如果没有必要,端口均可使用默认值,token、user和password项请自行设置。
编辑完成后保存,即可运行 frp 服务器了:
./frps -c frps.ini
如果看到屏显如下,则表示成功启动了:
2020/07/28 10:43:27 [I] [service.go:178] frps tcp listen on 0.0.0.0:7000
2020/07/28 10:43:27 [I] [service.go:277] Dashboard listen on 0.0.0.0:7500
2020/07/28 10:43:27 [I] [root.go:209] start frps success
后台运行
至此,我们的服务端仅运行在前台,如果Ctrl+C停止或者关闭SSH窗口后,frps均会停止运行,因而我们使用 nohup命令将其运行在后台。
nohup ./frps -c frps.ini &
客户端配置
frp的客户端就是我们想要真正进行访问的那台设备,大多数情况下应该会是一台Windows主机。这里我使用的是 arch Linux ,所以用 Linux 主机作例子。
下载和服务端同样版本的 frp :
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
之后的配置方法和服务端差不多。由于是客户端所以要保留带 c 的程序和配置文件:
rm frps frps.ini
vim frpc.ini
默认配置文件如下:
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
token = 12345678
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
common 栏是服务端的基础配置,将之前服务端的地址和端口填入即可。如果之前配置了 token 也要填上。
其他的就是自定义的规则。自定义规则的格式解释如下:
- “[xxx]”表示一个规则名称,自己定义,便于查询即可。
- “type”表示转发的协议类型,有TCP和UDP等选项可以选择,如有需要请自行查询frp手册。
- “local_port”是本地应用的端口号,按照实际应用工作在本机的端口号填写即可。
- “remote_port”是该条规则在服务端开放的端口号,自己填写并记录即可。
配置完保存即可运行:
./frpc -c frpc.ini
按照上面的配置就可以实现内网的 ssh 连接了。