使用FRP进行流量转发

1.说明

个人需求为一台 Debian 服务器使用 Debian 反向代理 udp 流量至另一台服务器。具体为用一台部分网络连接容易的服务器,反向代理我实际的 Minecraft 服务器。

尝试使用 Nginx stream 进行 UDP 转发,但暂未成功。

后尝试使用 Frp ,成功了,且配置也很简单。

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

https://blog.csdn.net/qq_35427539/article/details/104001378

https://blog.csdn.net/tehcon/article/details/86624387

Leave a Comment