I have an ftp client (.NET app I don't have the source to) that only does active mode that needs to push data to an appliances ftp-server that only speaks passive.
There is nothing I can do to modify the software on either end; but everything in between is fair game. (routing, windows or linux software, firewall tricks, ...)
Is there some kind of ftp proxy software? Or some kind of solution I could try?
There is (or, perhaps, was?) a very nice daemon called SuSE Proxy Suite. It was intercepting FTP traffic and allowed one to redirect ftp-client to some specific backend-server and if my memory serves me, it allowed active<->passive conversions, too. I used the program in pretty heavy environment for years without troubles.
Unfortunately my old bookmark (http://proxy-suite.suse.de) seems to redirect itself to Novell's page. Several package repositories (FreeBSD, Debian after quick googling) seems to still include the software, so you may have some hope.
FreshPorts seems to have a nice description about the software:
http://www.freshports.org/net/proxy-suite/
EDIT: One more thing. I have no idea if this small issue was patched later (it wasn't back in 2004 I last used this thing), but by default proxy-suite is running as root since it needs to bind to low ports. And it was running as Really Root, since it didn't take an advantage of Linux capabilities.
Today it should be possible to set the file capabilities through the setcap command like this:
But if this does not work (even though capabilities did exist, setcap command was not very common when I patched proxy-suite), here's another workaround.
Back in 2004 or so I wrote a small patch which dropped all the capabilities except CAP_NET_BIND_SERVICE right after the startup, so even some potential security holes would be less dangerous. You normally might not need this patch, but if you have this disease called security paranoia and your file transfer occurs between some dark corners of the Internet instead of your cushy office LAN, the patch might be a good idea.
To see if ftp-proxy is running as full root privileges, check out if getpcaps returns something like this:
A patched version should return like this:
And finally, here's the patch I wrote millions of moons ago, I hope it still can be applied.