准备工作

  1. VPS一台(也可以是具有公网IP的实体机)
  2. 访问目标设备(就是你最终要访问的设备)
  3. 简单的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 连接了。

Reference

https://zhuanlan.zhihu.com/p/45445979

最后修改:2021 年 05 月 24 日
如果觉得我的文章对你有用,请随意赞赏