操作时请注意本地数据安全性、 传输保密性和公网服务器安全。

原理图:

frp 超时 timeout awaiting response headers frpfile alo_CL

 

 

 说明:

PS表示公网服务器,拥有其他设备都可访问的ip地址,这里用了阿里云服务器,OS=Cent7.3;

LF表示本地文件服务器,需要能访问互联网,以与PS建立FRP关系、传输FTP到用户的数据,这里使用FileZilla Server;

LG表示LF的网关,需要给LF提供固定的本地ip地址,例如通过dhcp为LF分配局域网地址192.168.1.17;

CL表示受到服务的设备,如手机、PC,需要与PS之间有可靠的连接。

 

 一、在LF本地确认好FTP服务器的配置。

1、用LG为LF分配固定局域网地址(local_ip),如192.168.1.17。

2、 在LF中为FTP被动模式开放专属端口,与FTP默认的端口(20和21)分开,如50000-50002:

frp 超时 timeout awaiting response headers frpfile alo_端口映射_02

3、上述的被动模式IPv4地址写本地地址192.168.1.17。

4、注意开放LF设备的端口:20,21,50000~50002。

例如通过Windows firewall.cpl高级选项的入站规则:

frp 超时 timeout awaiting response headers frpfile alo_端口映射_03

 

二、建立LF和PS的FRP地址、端口映射关系。

1、在PS上的FRP配置、部署:

(1)云主机获取编译好的FRP包:

wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
tar -zxvf frp_0.36.2_linux_amd64.tar.gz

frp的工具和配置文件包括:(nohup.out不算)

frp 超时 timeout awaiting response headers frpfile alo_端口映射_04

在PS端,我们主要关心frps和frps.ini。(s即表示frp Server)

 

(2)配置frps.ini:

# FRP Server Config
# '#' pound sign is Line Comment
# common这个分栏名称不能乱写
[common]
# 7091是PS与LF约定好的、PS开放的frp连接端口,frps程序通过这个端口与frpc程序进行frp连接
bind_port = 7091
# dashboard相关的域是frps管理页面入口
# port指定了管理页面通过http访问的端口,在浏览器入口是aaa.bbb.ccc.ddd:7092
dashboard_port = 7092
# dashboard user 和 pwd 是进入管理页面的用户名和密码
dashboard_user = ADMIN
dashboard_pwd = PASSWORD
# token域适用于frp版本0.36.2,用来使frpc和frps建立简单的身份认证,其他版本未验证
# 网上第三方获得的配置文件有privilege_token域,但是在0.36.2中未找见
token = VERY_SECURE_TOKEN

 

(3)阿里云后台管理:开放端口7091、7092、7096和50000、50001和50002:

 

frp 超时 timeout awaiting response headers frpfile alo_CL_05

 说明:

 7091是PS中保证frp正常工作的最根本端口;

 7092是frps管理页面的http Web端口;

 7096是frp工具将LF本地FTP端口映射成的外部可见的FTP端口(在LF端进行指定);

 50000、50001和50002是LF本地的FTP被动端口,也是要映射的FTP端口。

 

(4)关闭PS的firewalld.service和iptables.service。

 如果您不熟悉iptables用法,可以将这两个服务关掉,防止端口被PS操作系统Ban掉。

 

2、在LF上的FRP配置、部署:

(1)获取和PS端相同版本的frp工具。(LF上的frpc选择了Win64版本)

(2)配置frpc.ini:

# FRP Client Config
[common]
server_addr = aaa.bbb.ccc.ddd
server_port = 7091
token = VERY_SECURE_TOKEN

# 将LF本地192.168.1.17:21端口映射为公网aaa.bbb.ccc.ddd:7096端口
[ftp21]
type = tcp
local_ip = 192.168.1.17
local_port = 21
remote_port = 7096

# 将LF本地192.168.1.17:50000端口映射为公网aaa.bbb.ccc.ddd:50000端口(FTP PASV被动模式指定使用本地50000端口)
[ftp1]
type = tcp
local_ip = 192.168.1.17
local_port = 50000
remote_port = 50000

[ftp2]
type = tcp
local_ip = 192.168.1.17
local_port = 50001
remote_port = 50001

[ftp3]
type = tcp
local_ip = 192.168.1.17
local_port = 50002
remote_port = 50002

注意到LF本地配置FTP时已经开启了LF设备的50000~50002端口。

 

三、启动FRP服务,并检查FRP工作状态。

PS端执行:

./frps -c ./frps.ini

LF端执行:

.\frpc.exe -c .\frpc.ini

现在在终端信息应该当可以看见PS和LF开始进行监听、frp配置的端口得到代理。

PS端的终端输出信息形如:

frp 超时 timeout awaiting response headers frpfile alo_CL_06

LF端的终端输出形如 :

 

frp 超时 timeout awaiting response headers frpfile alo_端口映射_07

在PS端查看frp程序运行状态:

ps auxf | grep frp

frp 超时 timeout awaiting response headers frpfile alo_端口映射_08

 

检查PS的端口开放状态(需要运行起来frps之后再进行检测):

http://coolaf.com/tool/port

http://tool.chinaz.com/port/

 

四、用户CL使用FTP客户端连接。

 1、FTP客户端的配置。

 如果CL和LF在同一个局域网下,使用PORT主动模式连接aaa.bbb.ccc.ddd,端口7096;

FTP客户端配置PASV模式的参数为“使用FTP服务器对外的IP”,而不要配置成“回退成主动模式”。