Como faço para descobrir qual é o meu endereço IP externo?

Meus computadores estão sentados atrás de um roteador / firewall. Como faço para saber programaticamente qual é o meu endereço IP externo? Eu posso usarhttp://www.whatsmyip.org/ para consultas ad-hoc, mas os TOS não permitem verificações automáticas.

Alguma ideia?