使用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应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
1月前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
39 1
|
2月前
|
人工智能 网络协议 Shell
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
|
2月前
|
人工智能 网络协议 Shell
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
|
1月前
|
网络协议 文件存储 Windows
Windows Server 2019 FTP服务器搭建
Windows Server 2019 FTP服务器搭建
|
1月前
|
安全 网络协议 网络安全
Windows Server 2003 FTP服务器搭建
Windows Server 2003 FTP服务器搭建
|
1月前
|
弹性计算 关系型数据库 网络安全
阿里云国际版无法连接和访问Windows服务器中的FTP服务
阿里云国际版无法连接和访问Windows服务器中的FTP服务
|
3月前
|
网络协议 网络安全 网络架构
移动宽带不借助软件和公网服务器实现基于IPV6的内网穿透
本教程指导如何设置路由器以支持IPv6访问:首先确保上网方式为自动获取IP,接着在路由器设置中开启IPv6功能,并关闭可能阻碍连接的防火墙。最后,在光猫管理界面同样关闭防火墙以确保无障碍的IPv6访问路径。操作时请注意网络安全。
移动宽带不借助软件和公网服务器实现基于IPV6的内网穿透
|
3月前
|
JavaScript Linux 应用服务中间件
【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题
【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题
|
3月前
|
安全 Ubuntu Linux
在Linux中,如何进行FTP服务器配置?
在Linux中,如何进行FTP服务器配置?
|
4月前
|
弹性计算
阿里云马来西亚服务器租赁费用、吉隆坡公网带宽收费价格整理
阿里云马来西亚(吉隆坡)服务器提供多种配置如2核2G至16核64G等, 实例规格涵盖经济型e、通用算力型u1等。示例价格:2核2G经济型e约56.53元/月, 4核32G通用算力型u1约809.62元/月。公网带宽预付费价格从1Mbps起22元/月, 按量付费0.529元/GB。
143 1