因为需要FTP公网进行访问,遂在公司搭建FTP服务
使用软件,免费开源的Fillzilla Server版本,当然这不是主要的
添加用户密码,用户访问目录,更改21端口为21212

出现棘手问题,因为公司使用cisco路由器公网接入,默认所有公网端口是不打开状态。
做端口映射
ip nat inside source static tcp 192.168.1.4 21212 公网地址 21212 extendale

telnet 公网地址 21212
结果端口是通的

使用fillzilla配置好之后进行访问
发现,
使用window命令行进行访问
C:\Users\Administrator>ftp
ftp> open 公网地址 21212
连接到 公网地址。
220 FTP Server
用户(公网地址:(none)): Dtt-share
331 Password required for dtt-share
密码:
230 Logged on
ftp>dir
200 Port command successful
150 Opening data channel for directory listing of "/"
_

登入成功但是会出现无法下一步访问目录的情况

开始考虑是FTP的主被动模式造成:
详细阐述下主被动模式

1)主动模式

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户 端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条 数据链路来传送数据。


2)被动模式

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


关于网关设备映射的问题:

  • 如果用被动模式登录FTP服务器,因为建立数据链路的时候,是由客户端向服务器发送连接请求,对于网关来说没有问题;

  • 反过来,如果用主动方式登录 FTP服务器,因为建立数据链路的时候,是由服务器向客户端发送连接请求,此时连接请求会被