使用FileZilla搭建公网访问的ftp服务器(Frp/花生壳)

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: FTP 是一种基于 TCP 的应用层协议,它不支持 UDP 协议。 FTP 工作在一种特殊的服务机制上,它使用两个端口,一个 ‘数据’ 端口和一个 ‘命令’ 端口(也称为控制端口)。 通常情况下,端口 21 用作命令端口,端口 20 用作数据端口。一、主动模式和被动模式

FTP 是一种基于 TCP 的应用层协议,它不支持 UDP 协议。 FTP 工作在一种特殊的服务机制上,它使用两个端口,一个 ‘数据’ 端口和一个 ‘命令’ 端口(也称为控制端口)。 通常情况下,端口 21 用作命令端口,端口 20 用作数据端口。


一、主动模式和被动模式

1、主动模式

客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口(21端口),发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端开放N+1端口,发送 PORT N+1 命令到FTP服务器,告诉服务器客户端采用主动模式以及开放的端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口N+1连接,发送数据。

客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口(21端口),发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端开放N+1端口,发送 PORT N+1 命令到FTP服务器,告诉服务器客户端采用主动模式以及开放的端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口N+1连接,发送数据。

001ab7839c2593b7da36f444b042e7c2.png

2、被动模式

为了解决服务器主动发起到客户端连接会被阻止的问题。被动模式工作的前提是客户端明确告知 FTP 服务器它使用被动模式。FTP客户端使用N(N>1023)端口连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再通过N+1端口连接到服务器开放的端口进行数据传输。

c74c394735a12d124f3037dc8ede56f8.png

3、区别

显然两者的区别就在于建立数据传输连接的方式。


主动模式的连接发起方为服务器端,服务器使用20号端口主动去连接客户端的N+1端口建立数据连接;


然而当客户端位于NAT之后,服务器是无法主动与其建立连接的


被动模式连接发起方为客户端,在客户端与21端口建立联系之后服务器端告诉客户端自己使用的数据端口号,让客户端自己来连接,这样就解决了服务端无法主动连接客户端的问题。

二、搭建FTP服务器

首先我们需要先安装FileZilla Server

安装完成后界面中为出现警告

0d30368aeebb769cf3fa1f6c2903a4b3.png

这里的意思是当前环境位于NAT之后,所以需要使用被动模式(passive mode)运行并在路由器上设置端口转发;warning中的意思是FTP服务没有启用TLS模式,所以用户登录信息是不安全的。


在上文中我们讲到了被动模式解决了客户端位于NAT之后,服务器端无法直接连接其的情况下采用被动模式让客户端来连接服务器端即可。但是如果我们的服务器端也是位于NAT之后,那么其实客户端也无法连接到服务器端。(正如下图提示所说)那我们还需要将我们服务器FTP服务的端口暴露到公网中供客户端可以连接,这里我们就才用到内网穿透的方式来解决NAT的问题(相关知识可参考内网穿透7480dfa7971635ef5f1ea684f5c7c077.png的原理和实现方式)

这里我们需要设置自定义端口和填入外网IP的地址

端口即为进行内网穿透的端口号,ip地址则填写公网的ip

如果我们拥有公网ip,则可以使用frp进行端口转发,如果没有则可以使用花生壳等内网穿透工具。

三、使用FRP实现

关于Frp的使用可以参考文章使用frp端口实现内网穿透

在完成了基础的配置后,我们只需要在客户端的frpc.ini中增加两个配置

[ftp_cmd]
type = tcp
local_ip = 127.0.0.1
local_port = 21
remote_port = 6001
[ftp_data]
type = tcp
local_ip = 127.0.0.1
local_port = 15779
remote_port = 15779

第一个即为TCP服务所监听的21号端口及其在公网上的映射


由于我们使用被动模式,所以还需要另外设置一个进行数据通信的端口


local即内网进行数据通信的端口,remote即映射到公网的端口,此处与File Zilla中的端口都保持一致


之后使用公网IP+[ftp_cmd]中的remote_port即可连接TCP服务


记得需要在防火墙中放行这些端口!

四、使用花生壳实现

花生壳的使用同理,区别就是它会为你提供一个公网ip,不需要你自己拥有,而因此你也无法自定义使用哪个端口进行通信,而是尤其自动进行分配

我们同样创建两个映射,一个是21号端口的映射

1b07e8432741f7ba5d93761f065dfbee.png

另一个我们先随便现在内网端口中填写一个端口号,如下

ce10ae9839e3154a0d3eb5112dfefdd3.png

随后它会为我们分配公网的端口号

d992e333b49e328555427b7d239057dc.png

我们再对这个映射进行编辑,将内75c6e3d62bb72a5c0ff0b5e8bd2e00a4.png网端口与分配的外网端口保持一致

在得到这个端口号后再去file zilla中填写被动模式中的自定义端口范围。


即如果自己有公网ip则可以使用frp自己设置开放哪个端口进行数据通信,没有的话则用花生壳这样的工具提供的公网和分配的端口,得到端口和公网地址之后再返回去file zilla中设置ip和端口

五、其他设置

禁用ip检查bcb199d75bff82d35daf9984368e617b.png

设置证书(点击生成新证书后填写相关信息即可)

a1a1166a2a86e6429259367b0fa169c0.png

配置用户组

添加用户,设置密

1766bc453b9cc0081c1b64ad69ee4310.png

设置共享文件夹和访问权限

0a6fa14a263088cb7468ab02d91e85f9.png

六、设置开机自启动

服务器端(linux)自启动

客户端(windows)自启动

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
2月前
|
存储 数据挖掘 Windows
服务器数据恢复—V7000存储raid5故障导致LUN无法访问的数据恢复案例
服务器数据恢复环境: 三台V7000存储,共有64块SAS硬盘(其中有三块热备盘,其中一块已启用)组建了数组raid5阵列。分配若干LUN,上层安装Windows server操作系统,数据分区格式化为NTFS文件系统。 服务器故障: V7000存储中有多块硬盘出现故障离线,阵列失效,LUN无法访问。需要恢复卷中所有数据(主要为dcm文件)。
|
26天前
|
负载均衡 数据可视化 API
像素流送api ue多人访问需要什么显卡服务器
本文总结了关于像素流送技术的五大常见问题,包括是否支持Unity模型推流、UE多人访问的最大并发数、所需服务器配置、稳定性问题及API支持情况,旨在帮助开发者更好地理解和应用这一技术。
52 1
|
2月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
61 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
3月前
|
人工智能 网络协议 Shell
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
92 1
|
2月前
|
Apache 数据中心 Windows
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
|
2月前
|
域名解析 缓存 网络协议
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
|
2月前
|
安全 网络协议 网络安全
Windows Server 2003 FTP服务器搭建
Windows Server 2003 FTP服务器搭建
|
2月前
|
网络安全 Docker 容器
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
41 0
|
2月前
|
弹性计算 关系型数据库 网络安全
阿里云国际版无法连接和访问Windows服务器中的FTP服务
阿里云国际版无法连接和访问Windows服务器中的FTP服务
|
1天前
|
人工智能 JSON Linux
利用阿里云GPU加速服务器实现pdf转换为markdown格式
随着AI模型的发展,GPU需求日益增长,尤其是个人学习和研究。直接购置硬件成本高且更新快,建议选择阿里云等提供的GPU加速型服务器。
利用阿里云GPU加速服务器实现pdf转换为markdown格式