0
点赞
收藏
分享

微信扫一扫

C语言(字符串函数的模拟实现)

野见 03-22 21:30 阅读 2

使用 Delphi 的 TIdFTPServer 这个控件,做一个 FTP 服务器很简单。可以直接拿官方提供的 FTP Server 的那个 Demo 程序来修改。

本文主要描述如何配置服务器端防火墙

网络环境:

1. 客户端在路由器后面,局域网;

2. 服务器端在路由器后面的局域网上面。

FTP 配置原理

1. 主动模式:FTP 客户端连接上 FTP 服务器以后,客户端会打开一个 TCP 端口作为接收数据的TCP 服务器,然后 FTP 服务器主动发起 TCP 连接客户端。

1.1. 主动模式的问题:需要客户端所在网络,配置路由器开端口映射到客户端电脑。从实施来说,不方便。

2. 被动模式:FTP 客户端连接上 FTP 服务器后,FTP 服务器另外随机打开一个被动模式的 TCP 端口,将端口告诉客户端;然后,客户端用 TCP 连接这个端口,建立数据传输通道。

2.1. 被动模式:FTP 服务器端要设置防火墙,要设置路由器端口映射。

Indy TIdFTPServer 的用法

在上述描述中,如果使用 TIdFTPServer 这个控件来实现一个 FTP 服务器端程序,需要注意:

1. 路由器开端口映射到服务器端所在电脑 IP 地址的 21 端口;

1.1. 不幸的是,电信对于小端口,封掉。因此,需要映射路由器的 2121 端口,指向内网 FTP 服务器所在 IP 地址的 21 端口。

1.2. FTP 服务器所在电脑的防火墙,设置允许 21 端口的 TCP 连接。

2. IdFTPServer 的属性:PASVBoundPortMax 选择 5003,  PASVBoundPortMin 选择 5000;

2.1. 上述设置的意思是被动模式下,TIdFTPServer 随机打开 5000 到 5003 之间的端口。

3. 路由器上,把 TCP 端口 5000, 5001, 5002, 5003 映射到 FTP 服务器电脑所在的 IP 地址。

4. 客户端,我选用 FileZilla 这个开源的 FTP 服务器;设置如下:

4.1. 服务器地址输入服务器端的公网 IP 或者动态域名地址;

4.2. 端口输入 2121,如果不输入,则是默认的 21,电信不开放;

4.3. 传输设置 -- 传输模式:选择【被动】模式。

5. 防火墙设置:上述所有端口,在 FTP 服务器所在的电脑的防火墙上,设置为允许连接。

以上设置,测试通过。

调试说明:

TIdFTPServer 的 PASV 的那两个端口属性,我一开始设置的是 5000,6000,结果导致它打开的被动模式端口是在这个区间随机,总是不会刚好是路由器上映射的 5000,5001;我又不可能在路由器上设置 1000 个端口映射。所以干脆改为 5000,5003;也就是让 TIdFTPServer 在被动模式下只打开有限的几个端口,然后在路由器端口映射上,映射这几个端口。

举报

相关推荐

0 条评论