Using CPAN with FTP mirrors has been impossible for me. I don't know if it's a problem with my network configuration or what, but changing it to use only HTTP mirrors made it work fine, so I never bothered to solve the problem.
I have had a similar problem. It's due to the somewhat broken File Transfer Protocol. If you set the environment variable FTP_PASSIVE to 1 and then run cpan things should work better for you. In the bash shell this looks like: