为什么FTP服务器给出的端口和客户端不同呢?

ck436 2010-01-22 09:46:16
我在内网建的FTP,用的是FireZilla server,并在路由器上对60001到61000上的端口范围做了映射,
并将服务器的被动模式端口范围设为60001到61000,被动模式IP设为外网IP,

当在客户端对服务器进行主动链接时是没问题的,但如果改为被动链接,就会出现两侧端口号不一致的现象,且不能列出目录,
这是为什么呢?
服务器端:
(000009) 2010/1/22 21:43:31 - anonymous (202.204.196.111)> 211 End
(000009) 2010/1/22 21:43:31 - anonymous (202.204.196.111)> PWD
(000009) 2010/1/22 21:43:31 - anonymous (202.204.196.111)> 257 "/" is current directory.
(000009) 2010/1/22 21:43:31 - anonymous (202.204.196.111)> TYPE I
(000009) 2010/1/22 21:43:31 - anonymous (202.204.196.111)> 200 Type set to I
(000009) 2010/1/22 21:43:31 - anonymous (202.204.196.111)> PASV
(000009) 2010/1/22 21:43:31 - anonymous (202.204.196.111)> 227 Entering Passive Mode (202,204,196,111,234,103)
(000009) 2010/1/22 21:43:31 - anonymous (202.204.196.111)> MLSD
(000009) 2010/1/22 21:43:41 - anonymous (202.204.196.111)> 425 Can't open data connection.

客户端:
响应: 211 End
状态: 已连接
状态: 读取目录列表...
命令: PWD
响应: 257 "/" is current directory.
命令: TYPE I
响应: 200 Type set to I
命令: PASV
响应: 227 Entering Passive Mode (202,204,196,111,129,132)
命令: MLSD

=======================
后来我把被动模式IP设为默认,就可以使用被动模式联上了,
我总觉得应该将被动模式改为外网IP才能联上,而改为默认应该不能联上才对,
为什么恰恰相反呢?实在搞不懂?

这是将被动模式IP设为默认之后的连接情况:

这是服务器端的信息:
(000007) 2010/1/22 21:34:32 - anonymous (202.204.196.111)> 211 End
(000007) 2010/1/22 21:34:32 - anonymous (202.204.196.111)> PWD
(000007) 2010/1/22 21:34:32 - anonymous (202.204.196.111)> 257 "/" is current directory.
(000007) 2010/1/22 21:34:32 - anonymous (202.204.196.111)> TYPE I
(000007) 2010/1/22 21:34:32 - anonymous (202.204.196.111)> 200 Type set to I
(000007) 2010/1/22 21:34:32 - anonymous (202.204.196.111)> PASV
(000007) 2010/1/22 21:34:32 - anonymous (202.204.196.111)> 227 Entering Passive Mode (192.168.86,234,102)
(000007) 2010/1/22 21:34:32 - anonymous (202.204.196.111)> MLSD
(000007) 2010/1/22 21:34:32 - anonymous (202.204.196.111)> 150 Connection accepted
(000007) 2010/1/22 21:34:32 - anonymous (202.204.196.111)> 226 Transfer OK
(000007) 2010/1/22 21:35:03 - anonymous (202.204.196.111)> NOOP
(000007) 2010/1/22 21:35:03 - anonymous (202.204.196.111)> 200 OK
(000007) 2010/1/22 21:35:33 - anonymous (202.204.196.111)> PWD
(000007) 2010/1/22 21:35:33 - anonymous (202.204.196.111)> 257 "/" is current directory.
我把服务器端的端号算了算,是在端口范围之内的(234*256+102=60006)

这是客户端的信息:
状态: 读取目录列表...
命令: PWD
响应: 257 "/" is current directory.
命令: TYPE I
响应: 200 Type set to I
命令: PASV
响应: 227 Entering Passive Mode (202,204,196,111,122,192)
命令: MLSD
响应: 150 Connection accepted
响应: 226 Transfer OK
状态: 列目录成功
...全文
624 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovecooc 2010-01-31
  • 打赏
  • 举报
回复
接分来了
ck436 2010-01-27
  • 打赏
  • 举报
回复
我既使把端口逐个映射,还是出现该问题呢?

以下是服务器的信息:
(000002) 2010/1/27 14:56:37 - anonymous (202.204.196.111)> PWD
(000002) 2010/1/27 14:56:37 - anonymous (202.204.196.111)> 257 "/" is current directory.
(000002) 2010/1/27 14:56:37 - anonymous (202.204.196.111)> TYPE I
(000002) 2010/1/27 14:56:37 - anonymous (202.204.196.111)> 200 Type set to I
(000002) 2010/1/27 14:56:38 - anonymous (202.204.196.111)> PASV
(000002) 2010/1/27 14:56:38 - anonymous (202.204.196.111)> 227 Entering Passive Mode (202,204,196,111,234,98)
(000002) 2010/1/27 14:56:38 - anonymous (202.204.196.111)> MLSD
(000002) 2010/1/27 14:56:49 - anonymous (202.204.196.111)> 425 Can't open data connection.
(000002) 2010/1/27 14:57:19 - anonymous (202.204.196.111)> TYPE I
(000002) 2010/1/27 14:57:19 - anonymous (202.204.196.111)> 200 Type set to I
(000002) 2010/1/27 14:57:49 - anonymous (202.204.196.111)> TYPE I
(000002) 2010/1/27 14:57:49 - anonymous (202.204.196.111)> 200 Type set to I
(000002) 2010/1/27 14:58:19 - anonymous (202.204.196.111)> TYPE I
(000002) 2010/1/27 14:58:19 - anonymous (202.204.196.111)> 200 Type set to I
============================================

以下是客户端的信息:

命令: PWD
响应: 257 "/" is current directory.
命令: TYPE I
响应: 200 Type set to I
命令: PASV
响应: 227 Entering Passive Mode (202,204,196,111,140,24)
命令: MLSD
响应: 425 Can't open data connection.
错误: 读取目录列表失败
状态: 发出防掉线指令
命令: TYPE I
响应: 200 Type set to I
状态: 发出防掉线指令
命令: TYPE I
响应: 200 Type set to I
状态: 发出防掉线指令
命令: TYPE I
响应: 200 Type set to I
状态: 发出防掉线指令

========================

以下是我在TP-Link上做的端口映射:

虚拟服务器定义了广域网服务端口和局域网网络服务器之间的映射关系,所有对该广域网服务端口的访问将会被重定位给通过IP地址指定的局域网网络服务器。
ID 服务端口 IP地址 协议 状态 配置
1 20 192.168.1.86 TCP 生效 编辑 删除
2 21 192.168.1.86 TCP 生效 编辑 删除
3 60001 192.168.1.86 TCP 生效 编辑 删除
4 60002 192.168.1.86 TCP 生效 编辑 删除
5 60003 192.168.1.86 TCP 生效 编辑 删除
6 60004 192.168.1.86 TCP 生效 编辑 删除
7 60005 192.168.1.86 TCP 生效 编辑 删除
8 60006 192.168.1.86 TCP 生效 编辑 删除
ck436 2010-01-27
  • 打赏
  • 举报
回复
我确实是范围对范围的映射,
那我该怎么做呢?
帅又强 2010-01-25
  • 打赏
  • 举报
回复
一个是主动方式,一种是passive方式....
flyfranker 2010-01-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 ck436 的回复:]
在路由器上对60001到61000上的端口范围做了映射,
并将服务器的被动模式端口范围设为60001到61000,被动模式IP设为外网IP,
[/Quote]

[Quote=引用 1 楼 wangfanyc 的回复:]
pasv端口设多少个,路由器上就必须映射多少个端口,不然就会出现你这样的情况,其实没必要设置那么多pasv端口。
[/Quote]

看你的映射是怎么做了,端口映射必须一一对应的,路由TCP60000-服务器TCP60000,依此类推...
我不相信你做了一千个印射
范围对范围的印射是无效的,服务器和客户端协商的端口经过路由转换后必须严格一致,否则就会遇到你遇到的情况。
你的思路有问题,应该把FTP服务器放在路由器的DMZ区域里。
chenhao1988 2010-01-22
  • 打赏
  • 举报
回复
不会,学习~
阿拉伯王爷 2010-01-22
  • 打赏
  • 举报
回复
pasv端口设多少个,路由器上就必须映射多少个端口,不然就会出现你这样的情况,其实没必要设置那么多pasv端口。

6,185

社区成员

发帖
与我相关
我的任务
社区描述
windows网络管理与配置
社区管理员
  • 网络管理与配置社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧