Tested on: Ubuntu 11.04 (natty)
This is how I got vsftpd server work behind a router. If you are getting errors like "Server sent passive reply with unroutable address. Using server address instead." or "500 illegal port command" on list (ls) command, this post might help. Setting passive mode configuration correctly is the trick.
Please note that this may not be the perfect solution or even worse - not very secure. Read vsftpd.conf...