frp快速入门: 使用frp进行内网穿透

frp快速入门: 使用frp进行内网穿透

frp,根据官方介绍,A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.它可以帮助我们在没有公网的情况下,将内网的设备映射到公网上。
frp的基本功能相信读者基本已经了解,就不过多的介绍了。写这篇文章主要是在最近部署frp的时候,发现很多文章都已经过时(在v0.52.0版本后,frp的配置文件不再支持ini,而是以toml,yaml和json代替,本文使用默认的toml),因此专门写篇文章记录一下。
本文使用frp v0.53.2版本

前提条件

要使用frp,你首先需要一台拥有公网ip的服务器。
最好使用线路好一点的,保证速度,我使用的是Azure HK。

获取frp

访问Releases页面,根据你的系统和架构选择相应的版本。
例如,我使用linux,amd64架构,使用wget把frp拉到本地
wget https://github.com/fatedier/frp/releases/download/v0.53.2/frp_0.53.2_linux_amd64.tar.gz
解压
tar -zxvf frp_0.53.2_linux_amd64.tar.gz
给文件夹改个名
mv frp_0.53.2_linux_amd64 frp
接着放到你喜欢的地方
进入目录,可以看到有4个文件
frps frps.toml frpc frpc.toml,外加LICENSE
其中,frps是服务端文件,frpc是客户端文件

编辑配置

由于frp已经不在使用ini配置,因此相应的配置的名称也发生了变化,这一点请务必注意。

服务端配置:
编辑frps.toml,可以看到以下配置: bindPort = 7000
bindPort是客户端连接的端口,记得打开防火墙/安全组
(interesting,相比于之前的默认配置只剩一行了)
这些是一些常用的配置: auth.token:用于进行认证,在服务端和客户端均需配置为相同的,也可使用OIDC认证,doc
web界面:较长,直接看doc

配置案例

以ssh为例
frps.toml

bindPort = 7000

auth.token = "816A0AF87AC35668"

frpc.toml

serverAddr = "x.x.x.x"
serverPort = 7000
auth.token = "816A0AF87AC35668"

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6022

接着,分别启动frps和frpc
./frps -c frps.toml ./frpc -c frpc.toml 现在应该就可以通过服务端的6022端口连接内网的ssh了。。 如果不能正常连接,检查安全组/防火墙。
当然,在目前状态下,退出ssh后,frp不会在后台运行,可以使用nohup或screen保持运行,也可以使用systemctl配置任务。

PS:这个博客搭起来也得半年了,一直没有时间写文章,这算是第一篇正式的文章了,也是2023年的第一篇,当然也是最后一篇 :),祝新年快乐