ddclient updating to local IP instead of public IP
Yes, the issue is because you're behind a router. The best solution would be to see if you can install a ddns client on the router itself. Otherwise there are ddns update tools that finger a remote server and ascertain your IP by what this yields.
This can be done by replacing:
use=if, if=eth0
With this:
use=web, web=checkip.dyndns.org/
Which is apparently the default configuration generated by debconf
on Debian systems.
Replace
use=if, if=eth0
with
use=web, web=my.ip.fi/