Frp是一款流行的跨平台开源免费内网穿透反向代理应用,支持 Windows、macOS与 Linux,支持 TCP、UDP 协议,支持http 和 https 协议,在公网服务器安装一个server端,内网服务器安装一个客户端,起到一个中转转发的作用,从而实现内网暴露到外网,实际就是一个反向代理转发器。
服务器端安装配置 Frp
FRP 使用 Go 语言开发,可以支持 Windows、Linux、macOS、ARM 等多平台部署。FRP 安装非常容易,只需下载对应系统平台的软件包并解压就可用了。这里以 Linux 系统为例:
1 | export FRP_VERSION=0.41.0 |
截止写这篇文章为止,github上的最新版本是0.41.0,如果以后出了更新的版本只要改一下上面的版本号就行了,可以去https://github.com/fatedier/frp/查看最新版本信息。
FRP 默认提供了 2 个服务端配置文件,一个是简化版的 frps.ini,另一个是完整版的 frps_full.ini。初学者只需用简版配置即可,在简版 frps.ini 配置文件里,默认设置了监听端口为 7000,可以按需修改它。
需要将服务器的系统防火墙安全组放行,设置 7000
或修改过的对应端口的「允许入站和出站」,否则会一直连接不上的哦!!!这个切记!!
启动 FRP 服务端(非后台启动,未配置开机自启的情况下)
1 | ./frps -c ./frps.ini |
如服务器使用 Win 系统,假设解压到 c:\frp 文件夹,那么只需这样启动:
1 | c:\frp\frps.exe -c c:\frp\frps.exe |
当然,这样的启动一般测试可以,生产环境多数为后台启动,需要配置后台运行和开机自启
使用systemctl配置后台运行和开机自启
1 | sudo vim /lib/systemd/system/frps.service |
在frps.service里写入以下内容
1 | [ ] |
启动frps
1 | sudo systemctl start frps |
如果要重启应用,sudo systemctl restart frps
如果要停止应用,sudo systemctl stop frps
如果要查看应用的日志,sudo systemctl status frps
如果启动时7000端口被占用
1 | #查看端口号 |
或
1 | #查看端口号 |
或
1 | #查看程序进程 |
得到进程id(pid)之后,杀掉进程
1 | kill -9 进程号 |
至此服务端安装完毕并已经启动
配置frp客户端(内网机器上)
可以将 Frp 客户端安装在内网的 Windows 电脑、Linux 设备 比如树莓派 或者 NAS,甚至部分路由器等设备上。Linux 客户端的安装和启动与服务器端没有太多区别,只是对应运行程序是 frpc 而不是 frps。
如果是linux设置,安装和设置重启过程这里就省略了,和上面一样的,如果是windows电脑,Frp 是绿色程序,下载软件包回来解压后,启动 frpc.exe 即可。
在启动前,我们需要先修改配置文件frpc.ini
比如服务器的公网ip是1.2.3.4.5
1 | [ ] |
如上,中括号里面的文字是标识,可以自定义,第一个server-port = 7000
是服务器上的server端端口。
这里配置了四个应用,分别是
1.ssh远程登录22端口,映射公网的7001;
2.hexo应用,4000端口映射公网的7002
以上还可以配置更多端口,上面的7001到7002都要在服务器安全组放行
启动frp客户端
linux和上面写的服务端启动方法一样
windows假设已将 Frp 的客户端解压缩到 c:\frp 目录中,那么启动 Frp 客户端的命令就是:
1 | c:\frp\frpc.exe -c c:\frp\frpc.ini |
Linux 启动 Frp 客户端命令(非后台启动,未配置开机自启的情况下):
1 | ./frpc -c ./frpc.ini |
启动之后看到 “start proxy success”字样就表示启动成功了。
远程访问
公网ip或域名:7001就可以登录内网linux
公网ip或域名:7002就可以访问到内网的hexo应用
这样真的就完美舒服了。