Client OS = Windows 7
ftp clients I've tried: GUI-Based = Filezilla, cuteftp, and coreftp
The command line utility that comes with windows works and has no issues connecting to the FTP server or listing directories.
Issue is not connected to number of files or directories with the failing directory.
Issue happens with both Passive/Active FTP connections.
When listing certain directories, the connection between the client and ftp server time out.
Linux, Unix, Android, and every other operating system besides windows can connect and get all the directory listings from the FTP Server.
On Linux, I have used both command line and GUI-based ftp clients and I see no issues.
The ftp server is vsftpd running on CentOS 6.4.
The ftp server sits behind a zentyal/ubuntu machine used as a firewall to the outside world.
There is a 1-to-1 NAT to port 21 on the firewall pointing to the FTP Server. The firewall uses a virtual IP address to NAT with the FTP server. No address translation happens to the ftp packets, meaning the original source IP address for the clients that connect are not changed while being passing the firewall and going to the internal ftp server.
Connecting internally, the windows client has no issues connecting to the ftp server or listing directories.
I've put Filezilla into debug mode to collect a more verbose log. It seems that the directory listings are showing in the log but are incomplete and timing out before the listing completes.
At this point I am split between calling this a windows bug or a networking issue.
Reason for blaming windows is that it only happens on windows GUI-based clients.
Reason for blaming the network is that it only happens when you come into the ftp server from the outside world. Internal connections from a windows gui-based client work fine.
I've researched and tested this for a solid 2 days. I need another set of fresh eyes to look at this and see what I've been missing so I humbly ask the internet community for help. Thank you for taking part of your time to help me.