1.说明
1.0 FRP原理
核心目的是流量转发,而转发的目的可以有很多,如反向代理,内网穿透(访问家里的 NAS,远程控制)等等
1.1 个人的反向代理需求
一台 Debian 服务器使用 Debian 反向代理 UDP 流量至另一台服务器。具体为用一台部分网络连接容易的服务器,反向代理我实际的 Minecraft 服务器。
尝试使用 Nginx stream 进行 UDP 转发,但暂未成功。
后尝试使用 Frp ,成功了,且配置也很简单。
1.2 个人的内网穿透需求
暴露自己一台内网中的 windows 电脑的远程控制端口至带固定公网 IP 的服务器。
之后则可以使用其他设备远程控制 windows 电脑。
个人尝试过 win,ipad,iphone ,都可以有效控制(IOS用 RD Client)。
且用了半年了,基本很稳定,且延迟可控。
个人感觉比 TeamViewer 好用。
2.FRP安装
对 linux 而言,FRP 服务端和客户端使用同一种安装方式。
首先,建一个 Frp 的文件夹,并进入
mkdir ~/myfrp
cd myfrp
在 https://github.com/fatedier/frp/releases/download/ 查询最新版本对应系统的包。并进行下载。
比如当前 latest 版本为 v0.34.3
https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_386.tar.gz
解压至当前文件夹,并进入
tar zxvf frp_0.34.3_linux_386.tar.gz
cd frp_0.34.3_linux_386/
ls 一下,可以看到各个文件
ls
其中
- frcp 是 frp 客户端程序
- frcp.ini 是客户端默认配置
- frps 是 frp 服务端程序
- frps.ini 是服务端默认配置
3.服务端配置
编辑 frps.ini
vi frps.ini
参考以下配置
[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = pp
dashboard_pwd = myfrppassword
- bind_port 是 frp 服务监听的端口号,用于和 frp 客户端建立连接
- dashboard_port 是服务器面板的端口号
- dashboard_user 是登陆服务器面板的用户名
- dashboard_pwd 是登陆服务器面板的密码
编辑完毕后,Esc,按:wq 回车保存退出。
之后可以直接运行:
./frps -c frps.ini
但运行会持续占据控制台。
建议使用 Screen ,独立一个窗口进行管理。
详见:Screen安装使用
运行成功后,可以进入浏览器 http://服务器的ip或者域名:7500 ,并登陆,进行状态监控
4.客户端配置
编辑 frpc.ini
vi frps.ini
参考以下配置
[common]
server_addr = frp.pangruitao.com
server_port = 7000
[mcbe]
type = udp
local_ip = 127.0.0.1
local_port = 19132
remote_port = 8888
- server_addr 服务器的ip或域名
- server_port 服务器 frp 的监听端口
- 每个 [xx] 为一项 frp 反向代理配置
- type 代理的类型,这里为 udp
- local_ip 本地 ip,可以不管
- local_port 转发至本地的端口
- remote_port 对应的服务端接受流量的端口
根据上面这样的配置后,如果建立成功,服务端将会把所有 8888 端口收到的 udp 流量转发至此客户端,并且此客户端的 frp 服务会将流量进一步转发至 8888
注:客户端不要求有固定的公网 ip ,这是本应是相对于 nginx 进行反向代理的最明显优势。可以基于此做内网穿透。
最后运行客户端即可,同样,如果客户端是纯命令行操作。那也建议在 screen 中运行。详见:Screen安装使用
./frpc -c frpc.ini
之后可监控运行情况
5.参考资料
https://github.com/fatedier/frp