在 Ubuntu 10.04 下编译并安装 OpenVZ 风格的内核后,连接到 pure-ftpd 服务器时无法浏览某些目录。
客户端进入被动模式,这很好。这种行为在内核更改之前就发生了,但现在当我浏览某些目录时,连接就会断开。这种情况只发生在一个登录名(特别是 Web)下的几个目录中,而对于另一个登录名,只要我连接就会发生这种情况。
我已经nf_conntrack_ftp
安装了内核模块(据我所知,这是跟踪被动 FTP 连接所必需的,也是模块的别名ip_conntrack_ftp
),但这并没有缓解我的问题。实际上,在初始设置我的操作系统时需要此模块才能使被动 FTP 正常工作,但是当我编译 OpenVZ 内核时,许多这些模块都缺失了(iptables、conntrack 等)。我用缺失的模块重新编译了内核,但没有任何效果。
我已经将 pure-ftpd 服务器的详细程度调高,但系统日志或传输日志中仍未发现任何线索。strace 也没有提供任何线索(反正我能辨别出来)——不过有一点很奇怪,在客户端的输出和 strace 中我都注意到它确实探测了目录并返回了匹配数——但之后就失败了。
还有一点需要说明的是,如果我在本地使用相同的凭据进行 FTP 操作,一切都会正常。这表明,这实际上是模块conntrack_ftp
未按预期运行的问题,或者是更深层次的网络问题。
内核是按照以下说明编译和安装的:https://help.ubuntu.com/community/OpenVZ- 禁止对内核配置的更改(例如添加 iptables 作为模块)。
下面是发送到数据的日志示例(在 FileZilla 下)。
Status: Resolving address of xxxx.co.uk
Status: Connecting to 78.46.xxx.xxx:21...
Status: Connection established, waiting for welcome message...
Response: 220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
Response: 220-You are user number 4 of 10 allowed.
Response: 220-Local time is now 08:52. Server port: 21.
Response: 220-This is a private system - No anonymous login
Response: 220-IPv6 connections are also welcome on this server.
Response: 220 You will be disconnected after 15 minutes of inactivity.
Command: USER xxx
Response: 331 User xxx OK. Password required
Command: PASS ********
Response: 230-User xxx has group access to: client1 sshusers
Response: 230 OK. Current restricted directory is /
Command: OPTS UTF8 ON
Response: 200 OK, UTF-8 enabled
Status: Connected
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is your current location
Status: Directory listing successful
Status: Retrieving directory listing...
Command: CWD /web
Response: 250 OK. Current directory is /web
Command: TYPE I
Response: 200 TYPE is now 8-bit binary
Command: PORT 10,0,2,30,14,143
Response: 500 I won't open a connection to 10.0.2.30 (only to 188.220.xxx.xxx)
Command: PASV
Response: 227 Entering Passive Mode (78,46,79,147,234,110)
Command: MLSD
Response: 150 Accepted data connection
Response: 226-ASCII
Response: 226-Options: -a -l
Response: 226 57 matches total
Error: Could not read from transfer socket: ECONNRESET - Connection reset by peer
Error: Failed to retrieve directory listing
有什么建议吗?我愿意尝试一切!
答案1
已安装内核模块
我希望您的意思是“已加载”。
conntrack_ftp
也能够处理主动 FTP 连接 — 您只需要正确设置防火墙。- OpenVZ 是内核级别的 — 它与你的 PureFTPd 完全无关。不要被误导。
- 如果 10.04 是基于 2.6.32 的内核,我建议使用以 RPM 形式提供的预构建 OpenVZ— 您只需要解压它并构建 initrd 映像,这将是更好的方法 — 您似乎没有足够的经验来自己从源代码构建它。