frp外网穿透ftp服务

说明

  FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。如果要用ftp外网穿透,需要使用被动模式。

  被动模式(PASV)连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。
  所以,在使用ftp的时候,不仅需要转发默认的21端口,还需要转发数据端口。

修改ftp服务器配置

  考虑到frp转发的情况,所以数据端口最好是固定的,所以这里需要修改ftp服务器的配置,这里以vsftpd服务为例。修改vsftpd.conf文件,固定被动模式端口范围

vim /etc/vsftpd.vsftpd.conf

# 修改
listen_ipv6=NO
listen=YES
pasv_enable=YES
# 添加
pasv_min_port=50000 
pasv_max_port=50002 

#配置被动地址,域名和ip二选一
## 配置frp外网的ip
pasv_address=xxx.xxx.xxx.xxx

## 如果动态域名可以配置域名
pasv_addr_resolve=YES
pasv_address=www.xxx.com

这里只开启了50000、50001、50002三个端口,意思就是同时只能有三个用户连接,如果需要更多用户可以配置更多的端口。

修改frp配置

在frp的配置中,需要添加默认端口21和被动数据端口50000、50001、50002四个端口配置

[ftp]
type = tcp
local_ip = 127.0.0.1
local_port = 21
remote_port = 2121

[ftp1]
type = tcp
local_ip = 127.0.0.1
local_port = 50000
remote_port = 50000

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

[ftp3]
type = tcp
local_ip = 127.0.0.1
local_port = 50002
remote_port = 50002
0%